From d60d48d5c5059a6d8eddf66c5b296bf0cf0342b7 Mon Sep 17 00:00:00 2001 From: freebsdd Date: Sun, 26 Dec 2021 20:02:03 +0500 Subject: [PATCH 1/2] no comments --- 1-4. index.php | 158 +++++++++++++++++++++++++++++++++++++++++++++++ 5-7. index.php | 80 ++++++++++++++++++++++++ arr_products.php | 60 ++++++++++++++++++ 3 files changed, 298 insertions(+) create mode 100644 1-4. index.php create mode 100644 5-7. index.php create mode 100644 arr_products.php diff --git a/1-4. index.php b/1-4. index.php new file mode 100644 index 0000000..4896735 --- /dev/null +++ b/1-4. index.php @@ -0,0 +1,158 @@ + getProdsDB(); + } + } + + // объявление get_discount_prods - расширенного класса prods + class get_discount_prods extends prods{ + private $prods = []; + // Массив со скидками + private $discounts = [ + 'vinyl' => 25, + 'leather' => 15 + ]; + // при создании класса, массив $this -> prods получает данные с БД с товарами всеми + function __construct(){ + $this -> prods = $this -> getProdsDB(); + } + // Получаем товары + // реализация 2, т.е. собирает Html и отдаём его в случае успеха, + // если успеха нет то ошибку + // если ошибки нет и html то код возвратим + function getProds(){ + if(empty($this -> prods)) return [false, '

В данный момент товары отсутствуют напрочь!

', 'code' => 'empty']; + elseif(empty($this -> discounts)) return [false, '

В данный момент скидок на товары нет!

', 'code' => 'empty']; + else{ + $html = ''; + $has = false; + foreach($this -> prods as $arr_item){ + // При работе с базой перебора прямого бы не было + if(!empty($this -> discounts[$arr_item['prod_matter']]) && !empty($arr_item['prod_count'])){ + $prod_price = (float)$arr_item['prod_price'] - ((float)$arr_item['prod_price'] / 100 * (float)$this -> discounts[$arr_item['prod_matter']]); + $has = true; + $html .= '"; + } + } + $html .= '
' .$arr_item['prod_id'] . "" . $arr_item['prod_name'] . "" . number_format($prod_price, 2, ',', ' ') . ' ' . '' . $arr_item['prod_price'] . '' . "
'; + if(!$has) return [false, '

В данный момент товары со скидкой отсутствуют!

', 'code' => 'empty']; + } + return [true, 'html' => $html]; + } + } + + // Распродажа залежавшегося товара + class get_sale_prods extends prods{ + // Сколько минимум должно быть, чтоб учавствовать в распродаже + private $sale = 5; + private $discount = 50; + // Распродажа товаров, + function getProdsDB(){ + // Иммитируем запрос в базу + $arr_prods = []; + require './arr_products.php'; + if(empty($arr_prods)) return [false, 'В данный момент товары отсутствуют напрочь!', 'code' => 'empty']; + foreach($arr_prods as $_id => $arr_item){ + if(!empty($arr_item['prod_count']) && $arr_item['prod_count'] <= $this -> sale) unset($arr_prods[$_id]); + } + if(empty($arr_prods)) return [false, 'В данный момент скидок на товары нет!', 'code' => 'empty']; + return [true, 'arr' => $arr_prods]; + } + function get_discount(){ + return $this -> discount; + } + function getProds(){ + return $this -> getProdsDB(); + } + } + + + $prods = new prods(); + // echo $prods -> x; + // var_dump($prods -> getProds()); + + + $prods = $prods -> getProds(); + if(empty($prods)){ + echo "

В данный момент товары отсутствуют!

"; + } + else{ + echo ""; + foreach($prods as $arr_item){ + echo ""; + } + echo "
iDNaimPrice
" . $arr_item['prod_id'] . "" . $arr_item['prod_name'] . "" . number_format($arr_item['prod_price'], 2, ',', ' ') . "
"; + } + + $prods = new get_discount_prods(); + $__r = $prods -> getProds(); + + echo "
Товары со скидкой:
"; + + if(!$__r[0] && !empty($__r['code'])){ + echo $__r[1]; + } + elseif(!$__r[0]){ + echo '

Error: ' . $__r[1] . '

'; + } + else{ + echo $__r['html']; + } + + $prods = new get_sale_prods(); + $__r = $prods -> getProds(); + + $discount = $prods -> get_discount(); + + if($discount <= 0){ + echo "

В данный момент распродажи нет!

"; + } + else{ + echo "
Распродажа:
"; + if(!$__r[0] && !empty($__r['code'])){ + echo $__r[1]; + } + elseif(!$__r[0]){ + echo '

Error: ' . $__r[1] . '

'; + } + else{ + echo ""; + foreach($__r['arr'] as $arr_item){ + $prod_price = (float)$arr_item['prod_price'] - ((float)$arr_item['prod_price'] / 100 * $discount); + echo "'; + } + echo "
iDNaimPrice
" . $arr_item['prod_id'] . "" . $arr_item['prod_name'] . "" . number_format($prod_price, 2, ',', ' ') . ' ' . $arr_item['prod_price'] . '
"; + } + } + + + +?> \ No newline at end of file diff --git a/5-7. index.php b/5-7. index.php new file mode 100644 index 0000000..6505a2c --- /dev/null +++ b/5-7. index.php @@ -0,0 +1,80 @@ +foo(); // 1 + // + $a2->foo(); // 2 + // + $a1->foo(); // 3 + // + $a2->foo(); // 4 + + /* + * , static 1 , + */ + + // , 1 + namespace p2; + + class A { + public function foo() { + static $x = 0; + echo ++$x; + } + } + // , A + class B extends A { + } + echo "
p2: "; + $a1 = new \p2\A(); + $b1 = new \p2\B(); + $a1->foo(); // 1 + $b1->foo(); // 1 + $a1->foo(); // 2 + $b1->foo(); // 2 + + /* + * , 2 , , , static "" . + */ + + + namespace p3; + + class A { + // function __construct($a, $c){;} + public function foo() { + static $x = 0; + echo ++$x; + } + } + class B extends A { + } + echo "
p3: "; + $a1 = new A; + $b1 = new B; + $a1->foo(); // 1 + $b1->foo(); // 1 + $a1->foo(); // 2 + $b1->foo(); // 2 + + /* + * namespace p2, , , __construct , , .. , . __construct . + */ +?> \ No newline at end of file diff --git a/arr_products.php b/arr_products.php new file mode 100644 index 0000000..c0d2144 --- /dev/null +++ b/arr_products.php @@ -0,0 +1,60 @@ + 1, + 'prod_name' => 'Мини юбка, латекс', + 'prod_price' => 1500, + 'prod_desc' => 'Подчеркнёт Вашу фигуру, все будут в ударе', + 'prod_matter' => 'latex', + 'prod_count' => 5, + ], + [ + 'prod_id' => 2, + 'prod_name' => 'Мини юбка, кожа', + 'prod_price' => 1800, + 'prod_desc' => 'Красиво будет сидеть на Вашей фигуру, Вам понравится', + 'prod_matter' => 'leather', + 'prod_count' => 7, + ], + [ + 'prod_id' => 3, + 'prod_name' => 'Атласные перчатки', + 'prod_price' => 900, + 'prod_desc' => 'Подчеркнёт изящество Ваших рук', + 'prod_matter' => 'satin', + 'prod_count' => 5, + ], + [ + 'prod_id' => 4, + 'prod_name' => 'Виниловое платье', + 'prod_price' => 1800, + 'prod_desc' => 'Подчеркнёт изящество Ваших рук', + 'prod_matter' => 'vinyl', + 'prod_count' => 8, + ], + [ + 'prod_id' => 5, + 'prod_name' => 'Виниловая юбка карандаш', + 'prod_price' => 900, + 'prod_desc' => 'Подчеркнёт изящество Ваших рук', + 'prod_matter' => 'vinyl', + 'prod_count' => 0, + ], + [ + 'prod_id' => 6, + 'prod_name' => 'Чулки из искусственной кожи', + 'prod_price' => 1100, + 'prod_desc' => 'Подчеркнёт изящество Ваших рук', + 'prod_matter' => 'leather', + 'prod_count' => 3, + ], + [ + 'prod_id' => 7, + 'prod_name' => 'Кожанный комбинизен', + 'prod_price' => 1100, + 'prod_desc' => 'Подчеркнёт изящество Ваших рук', + 'prod_matter' => 'leather', + 'prod_count' => 4, + ], + ]; +?> \ No newline at end of file From f43a37eebc8fd34a62271d13d709c58c455ee948 Mon Sep 17 00:00:00 2001 From: freebsdd Date: Fri, 7 Jan 2022 01:16:30 +0500 Subject: [PATCH 2/2] lesson4 --- data/all_in_one.php | 39 + data/classes/_test_abstract.class.php | 9 + data/classes/db.class.php | 148 ++ data/classes/site.class.php | 121 ++ data/composer.json | 5 + data/composer.lock | 254 +++ data/functions.php | 14 + data/vendor/autoload.php | 7 + data/vendor/composer/ClassLoader.php | 445 +++++ data/vendor/composer/InstalledVersions.php | 246 +++ data/vendor/composer/LICENSE | 21 + data/vendor/composer/autoload_classmap.php | 10 + data/vendor/composer/autoload_files.php | 11 + data/vendor/composer/autoload_namespaces.php | 9 + data/vendor/composer/autoload_psr4.php | 12 + data/vendor/composer/autoload_real.php | 75 + data/vendor/composer/autoload_static.php | 54 + data/vendor/composer/installed.json | 250 +++ data/vendor/composer/installed.php | 51 + data/vendor/composer/platform_check.php | 26 + data/vendor/symfony/polyfill-ctype/Ctype.php | 227 +++ data/vendor/symfony/polyfill-ctype/LICENSE | 19 + data/vendor/symfony/polyfill-ctype/README.md | 12 + .../symfony/polyfill-ctype/bootstrap.php | 50 + .../symfony/polyfill-ctype/bootstrap80.php | 46 + .../symfony/polyfill-ctype/composer.json | 38 + data/vendor/symfony/polyfill-mbstring/LICENSE | 19 + .../symfony/polyfill-mbstring/Mbstring.php | 870 +++++++++ .../symfony/polyfill-mbstring/README.md | 13 + .../Resources/unidata/lowerCase.php | 1397 ++++++++++++++ .../Resources/unidata/titleCaseRegexp.php | 5 + .../Resources/unidata/upperCase.php | 1489 +++++++++++++++ .../symfony/polyfill-mbstring/bootstrap.php | 147 ++ .../symfony/polyfill-mbstring/bootstrap80.php | 143 ++ .../symfony/polyfill-mbstring/composer.json | 38 + data/vendor/twig/twig/.editorconfig | 18 + data/vendor/twig/twig/.gitattributes | 4 + .../vendor/twig/twig/.github/workflows/ci.yml | 175 ++ .../twig/.github/workflows/documentation.yml | 60 + data/vendor/twig/twig/.gitignore | 4 + data/vendor/twig/twig/.php-cs-fixer.dist.php | 20 + data/vendor/twig/twig/CHANGELOG | 116 ++ data/vendor/twig/twig/LICENSE | 27 + data/vendor/twig/twig/README.rst | 23 + data/vendor/twig/twig/composer.json | 50 + .../twig/twig/src/Cache/CacheInterface.php | 46 + .../twig/twig/src/Cache/FilesystemCache.php | 87 + data/vendor/twig/twig/src/Cache/NullCache.php | 38 + data/vendor/twig/twig/src/Compiler.php | 214 +++ data/vendor/twig/twig/src/Environment.php | 832 ++++++++ data/vendor/twig/twig/src/Error/Error.php | 227 +++ .../twig/twig/src/Error/LoaderError.php | 21 + .../twig/twig/src/Error/RuntimeError.php | 22 + .../twig/twig/src/Error/SyntaxError.php | 46 + .../vendor/twig/twig/src/ExpressionParser.php | 825 ++++++++ .../twig/src/Extension/AbstractExtension.php | 45 + .../twig/twig/src/Extension/CoreExtension.php | 1684 +++++++++++++++++ .../twig/src/Extension/DebugExtension.php | 64 + .../twig/src/Extension/EscaperExtension.php | 421 +++++ .../twig/src/Extension/ExtensionInterface.php | 68 + .../twig/src/Extension/GlobalsInterface.php | 25 + .../twig/src/Extension/OptimizerExtension.php | 29 + .../twig/src/Extension/ProfilerExtension.php | 52 + .../Extension/RuntimeExtensionInterface.php | 19 + .../twig/src/Extension/SandboxExtension.php | 123 ++ .../twig/src/Extension/StagingExtension.php | 100 + .../src/Extension/StringLoaderExtension.php | 42 + data/vendor/twig/twig/src/ExtensionSet.php | 463 +++++ .../src/FileExtensionEscapingStrategy.php | 60 + data/vendor/twig/twig/src/Lexer.php | 501 +++++ .../twig/twig/src/Loader/ArrayLoader.php | 77 + .../twig/twig/src/Loader/ChainLoader.php | 119 ++ .../twig/twig/src/Loader/FilesystemLoader.php | 283 +++ .../twig/twig/src/Loader/LoaderInterface.php | 49 + data/vendor/twig/twig/src/Markup.php | 52 + .../twig/twig/src/Node/AutoEscapeNode.php | 38 + data/vendor/twig/twig/src/Node/BlockNode.php | 44 + .../twig/twig/src/Node/BlockReferenceNode.php | 36 + data/vendor/twig/twig/src/Node/BodyNode.php | 21 + .../twig/src/Node/CheckSecurityCallNode.php | 28 + .../twig/twig/src/Node/CheckSecurityNode.php | 88 + .../twig/twig/src/Node/CheckToStringNode.php | 45 + .../twig/twig/src/Node/DeprecatedNode.php | 53 + data/vendor/twig/twig/src/Node/DoNode.php | 38 + data/vendor/twig/twig/src/Node/EmbedNode.php | 48 + .../Node/Expression/AbstractExpression.php | 24 + .../src/Node/Expression/ArrayExpression.php | 85 + .../Expression/ArrowFunctionExpression.php | 64 + .../Node/Expression/AssignNameExpression.php | 27 + .../Node/Expression/Binary/AbstractBinary.php | 42 + .../src/Node/Expression/Binary/AddBinary.php | 23 + .../src/Node/Expression/Binary/AndBinary.php | 23 + .../Expression/Binary/BitwiseAndBinary.php | 23 + .../Expression/Binary/BitwiseOrBinary.php | 23 + .../Expression/Binary/BitwiseXorBinary.php | 23 + .../Node/Expression/Binary/ConcatBinary.php | 23 + .../src/Node/Expression/Binary/DivBinary.php | 23 + .../Node/Expression/Binary/EndsWithBinary.php | 35 + .../Node/Expression/Binary/EqualBinary.php | 39 + .../Node/Expression/Binary/FloorDivBinary.php | 29 + .../Node/Expression/Binary/GreaterBinary.php | 39 + .../Expression/Binary/GreaterEqualBinary.php | 39 + .../src/Node/Expression/Binary/InBinary.php | 33 + .../src/Node/Expression/Binary/LessBinary.php | 39 + .../Expression/Binary/LessEqualBinary.php | 39 + .../Node/Expression/Binary/MatchesBinary.php | 33 + .../src/Node/Expression/Binary/ModBinary.php | 23 + .../src/Node/Expression/Binary/MulBinary.php | 23 + .../Node/Expression/Binary/NotEqualBinary.php | 39 + .../Node/Expression/Binary/NotInBinary.php | 33 + .../src/Node/Expression/Binary/OrBinary.php | 23 + .../Node/Expression/Binary/PowerBinary.php | 22 + .../Node/Expression/Binary/RangeBinary.php | 33 + .../Expression/Binary/SpaceshipBinary.php | 22 + .../Expression/Binary/StartsWithBinary.php | 35 + .../src/Node/Expression/Binary/SubBinary.php | 23 + .../Expression/BlockReferenceExpression.php | 86 + .../src/Node/Expression/CallExpression.php | 320 ++++ .../Node/Expression/ConditionalExpression.php | 36 + .../Node/Expression/ConstantExpression.php | 28 + .../Node/Expression/Filter/DefaultFilter.php | 52 + .../src/Node/Expression/FilterExpression.php | 40 + .../Node/Expression/FunctionExpression.php | 43 + .../src/Node/Expression/GetAttrExpression.php | 87 + .../twig/src/Node/Expression/InlinePrint.php | 35 + .../Node/Expression/MethodCallExpression.php | 62 + .../src/Node/Expression/NameExpression.php | 97 + .../Expression/NullCoalesceExpression.php | 60 + .../src/Node/Expression/ParentExpression.php | 46 + .../Node/Expression/TempNameExpression.php | 31 + .../src/Node/Expression/Test/ConstantTest.php | 49 + .../src/Node/Expression/Test/DefinedTest.php | 74 + .../Node/Expression/Test/DivisiblebyTest.php | 36 + .../src/Node/Expression/Test/EvenTest.php | 35 + .../src/Node/Expression/Test/NullTest.php | 34 + .../twig/src/Node/Expression/Test/OddTest.php | 35 + .../src/Node/Expression/Test/SameasTest.php | 34 + .../src/Node/Expression/TestExpression.php | 42 + .../Node/Expression/Unary/AbstractUnary.php | 34 + .../src/Node/Expression/Unary/NegUnary.php | 23 + .../src/Node/Expression/Unary/NotUnary.php | 23 + .../src/Node/Expression/Unary/PosUnary.php | 23 + .../Node/Expression/VariadicExpression.php | 24 + data/vendor/twig/twig/src/Node/FlushNode.php | 35 + .../vendor/twig/twig/src/Node/ForLoopNode.php | 49 + data/vendor/twig/twig/src/Node/ForNode.php | 107 ++ data/vendor/twig/twig/src/Node/IfNode.php | 70 + data/vendor/twig/twig/src/Node/ImportNode.php | 63 + .../vendor/twig/twig/src/Node/IncludeNode.php | 106 ++ data/vendor/twig/twig/src/Node/MacroNode.php | 113 ++ data/vendor/twig/twig/src/Node/ModuleNode.php | 464 +++++ data/vendor/twig/twig/src/Node/Node.php | 179 ++ .../twig/src/Node/NodeCaptureInterface.php | 21 + .../twig/src/Node/NodeOutputInterface.php | 21 + data/vendor/twig/twig/src/Node/PrintNode.php | 39 + .../vendor/twig/twig/src/Node/SandboxNode.php | 52 + data/vendor/twig/twig/src/Node/SetNode.php | 105 + data/vendor/twig/twig/src/Node/TextNode.php | 38 + data/vendor/twig/twig/src/Node/WithNode.php | 70 + data/vendor/twig/twig/src/NodeTraverser.php | 76 + .../src/NodeVisitor/AbstractNodeVisitor.php | 49 + .../src/NodeVisitor/EscaperNodeVisitor.php | 208 ++ .../MacroAutoImportNodeVisitor.php | 74 + .../src/NodeVisitor/NodeVisitorInterface.php | 46 + .../src/NodeVisitor/OptimizerNodeVisitor.php | 217 +++ .../NodeVisitor/SafeAnalysisNodeVisitor.php | 160 ++ .../src/NodeVisitor/SandboxNodeVisitor.php | 136 ++ data/vendor/twig/twig/src/Parser.php | 349 ++++ .../twig/src/Profiler/Dumper/BaseDumper.php | 63 + .../src/Profiler/Dumper/BlackfireDumper.php | 72 + .../twig/src/Profiler/Dumper/HtmlDumper.php | 47 + .../twig/src/Profiler/Dumper/TextDumper.php | 35 + .../src/Profiler/Node/EnterProfileNode.php | 42 + .../src/Profiler/Node/LeaveProfileNode.php | 36 + .../NodeVisitor/ProfilerNodeVisitor.php | 70 + .../vendor/twig/twig/src/Profiler/Profile.php | 181 ++ .../RuntimeLoader/ContainerRuntimeLoader.php | 37 + .../RuntimeLoader/FactoryRuntimeLoader.php | 41 + .../RuntimeLoader/RuntimeLoaderInterface.php | 27 + .../twig/twig/src/Sandbox/SecurityError.php | 23 + .../Sandbox/SecurityNotAllowedFilterError.php | 33 + .../SecurityNotAllowedFunctionError.php | 33 + .../Sandbox/SecurityNotAllowedMethodError.php | 40 + .../SecurityNotAllowedPropertyError.php | 40 + .../Sandbox/SecurityNotAllowedTagError.php | 33 + .../twig/twig/src/Sandbox/SecurityPolicy.php | 126 ++ .../src/Sandbox/SecurityPolicyInterface.php | 35 + data/vendor/twig/twig/src/Source.php | 51 + data/vendor/twig/twig/src/Template.php | 422 +++++ data/vendor/twig/twig/src/TemplateWrapper.php | 109 ++ .../twig/src/Test/IntegrationTestCase.php | 265 +++ .../twig/twig/src/Test/NodeTestCase.php | 65 + data/vendor/twig/twig/src/Token.php | 178 ++ .../src/TokenParser/AbstractTokenParser.php | 32 + .../twig/src/TokenParser/ApplyTokenParser.php | 60 + .../src/TokenParser/AutoEscapeTokenParser.php | 58 + .../twig/src/TokenParser/BlockTokenParser.php | 78 + .../src/TokenParser/DeprecatedTokenParser.php | 43 + .../twig/src/TokenParser/DoTokenParser.php | 38 + .../twig/src/TokenParser/EmbedTokenParser.php | 73 + .../src/TokenParser/ExtendsTokenParser.php | 52 + .../twig/src/TokenParser/FlushTokenParser.php | 38 + .../twig/src/TokenParser/ForTokenParser.php | 78 + .../twig/src/TokenParser/FromTokenParser.php | 66 + .../twig/src/TokenParser/IfTokenParser.php | 89 + .../src/TokenParser/ImportTokenParser.php | 44 + .../src/TokenParser/IncludeTokenParser.php | 69 + .../twig/src/TokenParser/MacroTokenParser.php | 66 + .../src/TokenParser/SandboxTokenParser.php | 66 + .../twig/src/TokenParser/SetTokenParser.php | 73 + .../src/TokenParser/TokenParserInterface.php | 46 + .../twig/src/TokenParser/UseTokenParser.php | 73 + .../twig/src/TokenParser/WithTokenParser.php | 56 + data/vendor/twig/twig/src/TokenStream.php | 132 ++ data/vendor/twig/twig/src/TwigFilter.php | 134 ++ data/vendor/twig/twig/src/TwigFunction.php | 122 ++ data/vendor/twig/twig/src/TwigTest.php | 100 + .../twig/src/Util/DeprecationCollector.php | 77 + .../twig/src/Util/TemplateDirIterator.php | 36 + site/www/Twig-master (1).zip | Bin 0 -> 456424 bytes site/www/Twig-master.zip | Bin 0 -> 456424 bytes .../_rem/lib/twig/Cache/CacheInterface.php | 46 + .../_rem/lib/twig/Cache/FilesystemCache.php | 87 + site/www/_rem/lib/twig/Cache/NullCache.php | 38 + site/www/_rem/lib/twig/Compiler.php | 214 +++ site/www/_rem/lib/twig/Environment.php | 832 ++++++++ site/www/_rem/lib/twig/Error/Error.php | 227 +++ site/www/_rem/lib/twig/Error/LoaderError.php | 21 + site/www/_rem/lib/twig/Error/RuntimeError.php | 22 + site/www/_rem/lib/twig/Error/SyntaxError.php | 46 + site/www/_rem/lib/twig/ExpressionParser.php | 825 ++++++++ .../lib/twig/Extension/AbstractExtension.php | 45 + .../_rem/lib/twig/Extension/CoreExtension.php | 1684 +++++++++++++++++ .../lib/twig/Extension/DebugExtension.php | 64 + .../lib/twig/Extension/EscaperExtension.php | 421 +++++ .../lib/twig/Extension/ExtensionInterface.php | 68 + .../lib/twig/Extension/GlobalsInterface.php | 25 + .../lib/twig/Extension/OptimizerExtension.php | 29 + .../lib/twig/Extension/ProfilerExtension.php | 52 + .../Extension/RuntimeExtensionInterface.php | 19 + .../lib/twig/Extension/SandboxExtension.php | 123 ++ .../lib/twig/Extension/StagingExtension.php | 100 + .../twig/Extension/StringLoaderExtension.php | 42 + site/www/_rem/lib/twig/ExtensionSet.php | 463 +++++ .../twig/FileExtensionEscapingStrategy.php | 60 + site/www/_rem/lib/twig/Lexer.php | 501 +++++ site/www/_rem/lib/twig/Loader/ArrayLoader.php | 77 + site/www/_rem/lib/twig/Loader/ChainLoader.php | 119 ++ .../_rem/lib/twig/Loader/FilesystemLoader.php | 283 +++ .../_rem/lib/twig/Loader/LoaderInterface.php | 49 + site/www/_rem/lib/twig/Markup.php | 52 + .../www/_rem/lib/twig/Node/AutoEscapeNode.php | 38 + site/www/_rem/lib/twig/Node/BlockNode.php | 44 + .../_rem/lib/twig/Node/BlockReferenceNode.php | 36 + site/www/_rem/lib/twig/Node/BodyNode.php | 21 + .../lib/twig/Node/CheckSecurityCallNode.php | 28 + .../_rem/lib/twig/Node/CheckSecurityNode.php | 88 + .../_rem/lib/twig/Node/CheckToStringNode.php | 45 + .../www/_rem/lib/twig/Node/DeprecatedNode.php | 53 + site/www/_rem/lib/twig/Node/DoNode.php | 38 + site/www/_rem/lib/twig/Node/EmbedNode.php | 48 + .../Node/Expression/AbstractExpression.php | 24 + .../twig/Node/Expression/ArrayExpression.php | 85 + .../Expression/ArrowFunctionExpression.php | 64 + .../Node/Expression/AssignNameExpression.php | 27 + .../Node/Expression/Binary/AbstractBinary.php | 42 + .../twig/Node/Expression/Binary/AddBinary.php | 23 + .../twig/Node/Expression/Binary/AndBinary.php | 23 + .../Expression/Binary/BitwiseAndBinary.php | 23 + .../Expression/Binary/BitwiseOrBinary.php | 23 + .../Expression/Binary/BitwiseXorBinary.php | 23 + .../Node/Expression/Binary/ConcatBinary.php | 23 + .../twig/Node/Expression/Binary/DivBinary.php | 23 + .../Node/Expression/Binary/EndsWithBinary.php | 35 + .../Node/Expression/Binary/EqualBinary.php | 39 + .../Node/Expression/Binary/FloorDivBinary.php | 29 + .../Node/Expression/Binary/GreaterBinary.php | 39 + .../Expression/Binary/GreaterEqualBinary.php | 39 + .../twig/Node/Expression/Binary/InBinary.php | 33 + .../Node/Expression/Binary/LessBinary.php | 39 + .../Expression/Binary/LessEqualBinary.php | 39 + .../Node/Expression/Binary/MatchesBinary.php | 33 + .../twig/Node/Expression/Binary/ModBinary.php | 23 + .../twig/Node/Expression/Binary/MulBinary.php | 23 + .../Node/Expression/Binary/NotEqualBinary.php | 39 + .../Node/Expression/Binary/NotInBinary.php | 33 + .../twig/Node/Expression/Binary/OrBinary.php | 23 + .../Node/Expression/Binary/PowerBinary.php | 22 + .../Node/Expression/Binary/RangeBinary.php | 33 + .../Expression/Binary/SpaceshipBinary.php | 22 + .../Expression/Binary/StartsWithBinary.php | 35 + .../twig/Node/Expression/Binary/SubBinary.php | 23 + .../Expression/BlockReferenceExpression.php | 86 + .../twig/Node/Expression/CallExpression.php | 320 ++++ .../Node/Expression/ConditionalExpression.php | 36 + .../Node/Expression/ConstantExpression.php | 28 + .../Node/Expression/Filter/DefaultFilter.php | 52 + .../twig/Node/Expression/FilterExpression.php | 40 + .../Node/Expression/FunctionExpression.php | 43 + .../Node/Expression/GetAttrExpression.php | 87 + .../lib/twig/Node/Expression/InlinePrint.php | 35 + .../Node/Expression/MethodCallExpression.php | 62 + .../twig/Node/Expression/NameExpression.php | 97 + .../Expression/NullCoalesceExpression.php | 60 + .../twig/Node/Expression/ParentExpression.php | 46 + .../Node/Expression/TempNameExpression.php | 31 + .../Node/Expression/Test/ConstantTest.php | 49 + .../twig/Node/Expression/Test/DefinedTest.php | 74 + .../Node/Expression/Test/DivisiblebyTest.php | 36 + .../twig/Node/Expression/Test/EvenTest.php | 35 + .../twig/Node/Expression/Test/NullTest.php | 34 + .../lib/twig/Node/Expression/Test/OddTest.php | 35 + .../twig/Node/Expression/Test/SameasTest.php | 34 + .../twig/Node/Expression/TestExpression.php | 42 + .../Node/Expression/Unary/AbstractUnary.php | 34 + .../twig/Node/Expression/Unary/NegUnary.php | 23 + .../twig/Node/Expression/Unary/NotUnary.php | 23 + .../twig/Node/Expression/Unary/PosUnary.php | 23 + .../Node/Expression/VariadicExpression.php | 24 + site/www/_rem/lib/twig/Node/FlushNode.php | 35 + site/www/_rem/lib/twig/Node/ForLoopNode.php | 49 + site/www/_rem/lib/twig/Node/ForNode.php | 107 ++ site/www/_rem/lib/twig/Node/IfNode.php | 70 + site/www/_rem/lib/twig/Node/ImportNode.php | 63 + site/www/_rem/lib/twig/Node/IncludeNode.php | 106 ++ site/www/_rem/lib/twig/Node/MacroNode.php | 113 ++ site/www/_rem/lib/twig/Node/ModuleNode.php | 464 +++++ site/www/_rem/lib/twig/Node/Node.php | 179 ++ .../lib/twig/Node/NodeCaptureInterface.php | 21 + .../lib/twig/Node/NodeOutputInterface.php | 21 + site/www/_rem/lib/twig/Node/PrintNode.php | 39 + site/www/_rem/lib/twig/Node/SandboxNode.php | 52 + site/www/_rem/lib/twig/Node/SetNode.php | 105 + site/www/_rem/lib/twig/Node/TextNode.php | 38 + site/www/_rem/lib/twig/Node/WithNode.php | 70 + site/www/_rem/lib/twig/NodeTraverser.php | 76 + .../twig/NodeVisitor/AbstractNodeVisitor.php | 49 + .../twig/NodeVisitor/EscaperNodeVisitor.php | 208 ++ .../MacroAutoImportNodeVisitor.php | 74 + .../twig/NodeVisitor/NodeVisitorInterface.php | 46 + .../twig/NodeVisitor/OptimizerNodeVisitor.php | 217 +++ .../NodeVisitor/SafeAnalysisNodeVisitor.php | 160 ++ .../twig/NodeVisitor/SandboxNodeVisitor.php | 136 ++ site/www/_rem/lib/twig/Parser.php | 349 ++++ .../lib/twig/Profiler/Dumper/BaseDumper.php | 63 + .../twig/Profiler/Dumper/BlackfireDumper.php | 72 + .../lib/twig/Profiler/Dumper/HtmlDumper.php | 47 + .../lib/twig/Profiler/Dumper/TextDumper.php | 35 + .../twig/Profiler/Node/EnterProfileNode.php | 42 + .../twig/Profiler/Node/LeaveProfileNode.php | 36 + .../NodeVisitor/ProfilerNodeVisitor.php | 70 + site/www/_rem/lib/twig/Profiler/Profile.php | 181 ++ .../RuntimeLoader/ContainerRuntimeLoader.php | 37 + .../RuntimeLoader/FactoryRuntimeLoader.php | 41 + .../RuntimeLoader/RuntimeLoaderInterface.php | 27 + .../_rem/lib/twig/Sandbox/SecurityError.php | 23 + .../Sandbox/SecurityNotAllowedFilterError.php | 33 + .../SecurityNotAllowedFunctionError.php | 33 + .../Sandbox/SecurityNotAllowedMethodError.php | 40 + .../SecurityNotAllowedPropertyError.php | 40 + .../Sandbox/SecurityNotAllowedTagError.php | 33 + .../_rem/lib/twig/Sandbox/SecurityPolicy.php | 126 ++ .../twig/Sandbox/SecurityPolicyInterface.php | 35 + site/www/_rem/lib/twig/Source.php | 51 + site/www/_rem/lib/twig/Template.php | 422 +++++ site/www/_rem/lib/twig/TemplateWrapper.php | 109 ++ .../lib/twig/Test/IntegrationTestCase.php | 265 +++ site/www/_rem/lib/twig/Test/NodeTestCase.php | 65 + site/www/_rem/lib/twig/Token.php | 178 ++ .../twig/TokenParser/AbstractTokenParser.php | 32 + .../lib/twig/TokenParser/ApplyTokenParser.php | 60 + .../TokenParser/AutoEscapeTokenParser.php | 58 + .../lib/twig/TokenParser/BlockTokenParser.php | 78 + .../TokenParser/DeprecatedTokenParser.php | 43 + .../lib/twig/TokenParser/DoTokenParser.php | 38 + .../lib/twig/TokenParser/EmbedTokenParser.php | 73 + .../twig/TokenParser/ExtendsTokenParser.php | 52 + .../lib/twig/TokenParser/FlushTokenParser.php | 38 + .../lib/twig/TokenParser/ForTokenParser.php | 78 + .../lib/twig/TokenParser/FromTokenParser.php | 66 + .../lib/twig/TokenParser/IfTokenParser.php | 89 + .../twig/TokenParser/ImportTokenParser.php | 44 + .../twig/TokenParser/IncludeTokenParser.php | 69 + .../lib/twig/TokenParser/MacroTokenParser.php | 66 + .../twig/TokenParser/SandboxTokenParser.php | 66 + .../lib/twig/TokenParser/SetTokenParser.php | 73 + .../twig/TokenParser/TokenParserInterface.php | 46 + .../lib/twig/TokenParser/UseTokenParser.php | 73 + .../lib/twig/TokenParser/WithTokenParser.php | 56 + site/www/_rem/lib/twig/TokenStream.php | 132 ++ site/www/_rem/lib/twig/TwigFilter.php | 134 ++ site/www/_rem/lib/twig/TwigFunction.php | 122 ++ site/www/_rem/lib/twig/TwigTest.php | 100 + .../lib/twig/Util/DeprecationCollector.php | 77 + .../lib/twig/Util/TemplateDirIterator.php | 36 + site/www/_rem/lib_/Twig/BaseNodeVisitor.php | 54 + site/www/_rem/lib_/Twig/Cache/Filesystem.php | 98 + site/www/_rem/lib_/Twig/Cache/Null.php | 48 + site/www/_rem/lib_/Twig/CacheInterface.php | 56 + site/www/_rem/lib_/Twig/Compiler.php | 267 +++ site/www/_rem/lib_/Twig/Environment.php | 960 ++++++++++ site/www/_rem/lib_/Twig/Error.php | 255 +++ site/www/_rem/lib_/Twig/Error/Loader.php | 31 + site/www/_rem/lib_/Twig/Error/Runtime.php | 20 + site/www/_rem/lib_/Twig/Error/Syntax.php | 44 + .../_rem/lib_/Twig/ExistsLoaderInterface.php | 17 + site/www/_rem/lib_/Twig/ExpressionParser.php | 637 +++++++ site/www/_rem/lib_/Twig/Extension.php | 60 + site/www/_rem/lib_/Twig/Extension/Core.php | 1361 +++++++++++++ site/www/_rem/lib_/Twig/Extension/Debug.php | 56 + site/www/_rem/lib_/Twig/Extension/Escaper.php | 90 + .../lib_/Twig/Extension/GlobalsInterface.php | 28 + .../Twig/Extension/InitRuntimeInterface.php | 30 + .../_rem/lib_/Twig/Extension/Optimizer.php | 24 + .../www/_rem/lib_/Twig/Extension/Profiler.php | 41 + site/www/_rem/lib_/Twig/Extension/Sandbox.php | 92 + site/www/_rem/lib_/Twig/Extension/Staging.php | 76 + .../_rem/lib_/Twig/Extension/StringLoader.php | 36 + .../www/_rem/lib_/Twig/ExtensionInterface.php | 60 + site/www/_rem/lib_/Twig/ExtensionSet.php | 485 +++++ .../Twig/FileExtensionEscapingStrategy.php | 58 + site/www/_rem/lib_/Twig/Filter.php | 131 ++ site/www/_rem/lib_/Twig/Function.php | 121 ++ site/www/_rem/lib_/Twig/Lexer.php | 409 ++++ site/www/_rem/lib_/Twig/Loader/Array.php | 93 + site/www/_rem/lib_/Twig/Loader/Chain.php | 125 ++ site/www/_rem/lib_/Twig/Loader/Filesystem.php | 296 +++ site/www/_rem/lib_/Twig/LoaderInterface.php | 62 + site/www/_rem/lib_/Twig/Markup.php | 42 + site/www/_rem/lib_/Twig/Node.php | 216 +++ site/www/_rem/lib_/Twig/Node/AutoEscape.php | 34 + site/www/_rem/lib_/Twig/Node/Block.php | 39 + .../_rem/lib_/Twig/Node/BlockReference.php | 32 + site/www/_rem/lib_/Twig/Node/Body.php | 19 + .../www/_rem/lib_/Twig/Node/CheckSecurity.php | 78 + site/www/_rem/lib_/Twig/Node/Do.php | 33 + site/www/_rem/lib_/Twig/Node/Embed.php | 42 + site/www/_rem/lib_/Twig/Node/Expression.php | 20 + .../_rem/lib_/Twig/Node/Expression/Array.php | 81 + .../lib_/Twig/Node/Expression/AssignName.php | 23 + .../_rem/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 + .../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 + .../Twig/Node/Expression/Binary/NotIn.php | 28 + .../lib_/Twig/Node/Expression/Binary/Or.php | 18 + .../Twig/Node/Expression/Binary/Power.php | 28 + .../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 | 46 + .../_rem/lib_/Twig/Node/Expression/Call.php | 284 +++ .../lib_/Twig/Node/Expression/Conditional.php | 31 + .../lib_/Twig/Node/Expression/Constant.php | 23 + .../_rem/lib_/Twig/Node/Expression/Filter.php | 34 + .../Twig/Node/Expression/Filter/Default.php | 43 + .../lib_/Twig/Node/Expression/Function.php | 33 + .../lib_/Twig/Node/Expression/GetAttr.php | 68 + .../lib_/Twig/Node/Expression/MethodCall.php | 41 + .../_rem/lib_/Twig/Node/Expression/Name.php | 84 + .../Twig/Node/Expression/NullCoalesce.php | 23 + .../_rem/lib_/Twig/Node/Expression/Parent.php | 42 + .../lib_/Twig/Node/Expression/TempName.php | 26 + .../_rem/lib_/Twig/Node/Expression/Test.php | 35 + .../Twig/Node/Expression/Test/Constant.php | 46 + .../Twig/Node/Expression/Test/Defined.php | 56 + .../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 + .../_rem/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 + site/www/_rem/lib_/Twig/Node/Flush.php | 31 + site/www/_rem/lib_/Twig/Node/For.php | 111 ++ site/www/_rem/lib_/Twig/Node/ForLoop.php | 50 + site/www/_rem/lib_/Twig/Node/If.php | 66 + site/www/_rem/lib_/Twig/Node/Import.php | 49 + site/www/_rem/lib_/Twig/Node/Include.php | 88 + site/www/_rem/lib_/Twig/Node/Macro.php | 118 ++ site/www/_rem/lib_/Twig/Node/Module.php | 444 +++++ site/www/_rem/lib_/Twig/Node/Print.php | 34 + site/www/_rem/lib_/Twig/Node/Sandbox.php | 42 + .../_rem/lib_/Twig/Node/SandboxedPrint.php | 51 + site/www/_rem/lib_/Twig/Node/Set.php | 96 + site/www/_rem/lib_/Twig/Node/Spaceless.php | 35 + site/www/_rem/lib_/Twig/Node/Text.php | 34 + .../_rem/lib_/Twig/NodeOutputInterface.php | 19 + site/www/_rem/lib_/Twig/NodeTraverser.php | 85 + .../_rem/lib_/Twig/NodeVisitor/Escaper.php | 159 ++ .../_rem/lib_/Twig/NodeVisitor/Optimizer.php | 227 +++ .../lib_/Twig/NodeVisitor/SafeAnalysis.php | 153 ++ .../_rem/lib_/Twig/NodeVisitor/Sandbox.php | 82 + .../_rem/lib_/Twig/NodeVisitorInterface.php | 47 + site/www/_rem/lib_/Twig/Parser.php | 381 ++++ .../lib_/Twig/Profiler/Dumper/Blackfire.php | 68 + .../_rem/lib_/Twig/Profiler/Dumper/Html.php | 43 + .../_rem/lib_/Twig/Profiler/Dumper/Text.php | 68 + .../lib_/Twig/Profiler/Node/EnterProfile.php | 40 + .../lib_/Twig/Profiler/Node/LeaveProfile.php | 34 + .../Twig/Profiler/NodeVisitor/Profiler.php | 72 + site/www/_rem/lib_/Twig/Profiler/Profile.php | 160 ++ .../_rem/lib_/Twig/RuntimeLoaderInterface.php | 27 + .../_rem/lib_/Twig/Sandbox/SecurityError.php | 19 + .../Sandbox/SecurityNotAllowedFilterError.php | 31 + .../SecurityNotAllowedFunctionError.php | 31 + .../Sandbox/SecurityNotAllowedMethodError.php | 38 + .../SecurityNotAllowedPropertyError.php | 38 + .../Sandbox/SecurityNotAllowedTagError.php | 31 + .../_rem/lib_/Twig/Sandbox/SecurityPolicy.php | 121 ++ .../Twig/Sandbox/SecurityPolicyInterface.php | 24 + site/www/_rem/lib_/Twig/SimpleFilter.php | 17 + site/www/_rem/lib_/Twig/SimpleFunction.php | 17 + site/www/_rem/lib_/Twig/SimpleTest.php | 17 + site/www/_rem/lib_/Twig/Source.php | 49 + .../Twig/SourceContextLoaderInterface.php | 17 + site/www/_rem/lib_/Twig/Template.php | 584 ++++++ site/www/_rem/lib_/Twig/TemplateIterator.php | 45 + site/www/_rem/lib_/Twig/Test.php | 83 + .../lib_/Twig/Test/IntegrationTestCase.php | 229 +++ site/www/_rem/lib_/Twig/Test/NodeTestCase.php | 60 + site/www/_rem/lib_/Twig/Token.php | 216 +++ site/www/_rem/lib_/Twig/TokenParser.php | 33 + .../_rem/lib_/Twig/TokenParser/AutoEscape.php | 48 + site/www/_rem/lib_/Twig/TokenParser/Block.php | 69 + site/www/_rem/lib_/Twig/TokenParser/Do.php | 30 + site/www/_rem/lib_/Twig/TokenParser/Embed.php | 63 + .../_rem/lib_/Twig/TokenParser/Extends.php | 42 + .../www/_rem/lib_/Twig/TokenParser/Filter.php | 49 + site/www/_rem/lib_/Twig/TokenParser/Flush.php | 30 + site/www/_rem/lib_/Twig/TokenParser/For.php | 123 ++ site/www/_rem/lib_/Twig/TokenParser/From.php | 58 + site/www/_rem/lib_/Twig/TokenParser/If.php | 82 + .../www/_rem/lib_/Twig/TokenParser/Import.php | 37 + .../_rem/lib_/Twig/TokenParser/Include.php | 63 + site/www/_rem/lib_/Twig/TokenParser/Macro.php | 56 + .../_rem/lib_/Twig/TokenParser/Sandbox.php | 57 + site/www/_rem/lib_/Twig/TokenParser/Set.php | 71 + .../_rem/lib_/Twig/TokenParser/Spaceless.php | 47 + site/www/_rem/lib_/Twig/TokenParser/Use.php | 64 + .../_rem/lib_/Twig/TokenParserInterface.php | 43 + site/www/_rem/lib_/Twig/TokenStream.php | 157 ++ .../lib_/Twig/Util/DeprecationCollector.php | 71 + .../lib_/Twig/Util/TemplateDirIterator.php | 26 + site/www/_tmp/fuckinghub-lesson2-1.zip | Bin 0 -> 1186217 bytes .../www/_tmp/lesson1/1-4. index.php | 0 .../www/_tmp/lesson1/5-7. index.php | 0 .../www/_tmp/lesson1/arr_products.php | 0 site/www/arr_products.php | 76 + site/www/data/.htaccess | 21 + site/www/data/index.php | 17 + site/www/img/products/1/123.jpeg | Bin 0 -> 17108 bytes site/www/img/products/1/thumbs/123.jpeg | Bin 0 -> 3231 bytes site/www/img/products/2/223.jpeg | Bin 0 -> 26324 bytes site/www/img/products/2/thumbs/223.jpeg | Bin 0 -> 2897 bytes site/www/img/products/3/312.jpeg | Bin 0 -> 12680 bytes site/www/img/products/3/thumbs/312.jpeg | Bin 0 -> 3045 bytes site/www/img/products/6/611.jpeg | Bin 0 -> 52895 bytes site/www/img/products/6/thumbs/611.jpeg | Bin 0 -> 4170 bytes site/www/img/system/logo.gif | Bin 0 -> 796222 bytes site/www/img/system/no_photo_64.png | Bin 0 -> 5212 bytes ...0\272\320\276\320\277\320\270\321\217.php" | 162 ++ site/www/index.php | 98 + site/www/templates/css/prods.css | 39 + site/www/templates/css/system.css | 78 + site/www/templates/html.tpl | 38 + site/www/templates/js/common.js | 209 ++ site/www/templates/js/jquery-1.12.4.min.js | 1 + site/www/templates/js/products.js | 102 + site/www/templates/product_item.tpl | 11 + site/www/templates/product_line_item.tpl | 16 + site/www/templates/product_line_item.tpl.bak | 10 + site/www/templates/products.tpl | 10 + site/www/templates/products.tpl.bak | 12 + site/www/trait.php | 21 + site/www/types.php | 27 + 594 files changed, 54889 insertions(+) create mode 100644 data/all_in_one.php create mode 100644 data/classes/_test_abstract.class.php create mode 100644 data/classes/db.class.php create mode 100644 data/classes/site.class.php create mode 100644 data/composer.json create mode 100644 data/composer.lock create mode 100644 data/functions.php create mode 100644 data/vendor/autoload.php create mode 100644 data/vendor/composer/ClassLoader.php create mode 100644 data/vendor/composer/InstalledVersions.php create mode 100644 data/vendor/composer/LICENSE create mode 100644 data/vendor/composer/autoload_classmap.php create mode 100644 data/vendor/composer/autoload_files.php create mode 100644 data/vendor/composer/autoload_namespaces.php create mode 100644 data/vendor/composer/autoload_psr4.php create mode 100644 data/vendor/composer/autoload_real.php create mode 100644 data/vendor/composer/autoload_static.php create mode 100644 data/vendor/composer/installed.json create mode 100644 data/vendor/composer/installed.php create mode 100644 data/vendor/composer/platform_check.php create mode 100644 data/vendor/symfony/polyfill-ctype/Ctype.php create mode 100644 data/vendor/symfony/polyfill-ctype/LICENSE create mode 100644 data/vendor/symfony/polyfill-ctype/README.md create mode 100644 data/vendor/symfony/polyfill-ctype/bootstrap.php create mode 100644 data/vendor/symfony/polyfill-ctype/bootstrap80.php create mode 100644 data/vendor/symfony/polyfill-ctype/composer.json create mode 100644 data/vendor/symfony/polyfill-mbstring/LICENSE create mode 100644 data/vendor/symfony/polyfill-mbstring/Mbstring.php create mode 100644 data/vendor/symfony/polyfill-mbstring/README.md create mode 100644 data/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php create mode 100644 data/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php create mode 100644 data/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php create mode 100644 data/vendor/symfony/polyfill-mbstring/bootstrap.php create mode 100644 data/vendor/symfony/polyfill-mbstring/bootstrap80.php create mode 100644 data/vendor/symfony/polyfill-mbstring/composer.json create mode 100644 data/vendor/twig/twig/.editorconfig create mode 100644 data/vendor/twig/twig/.gitattributes create mode 100644 data/vendor/twig/twig/.github/workflows/ci.yml create mode 100644 data/vendor/twig/twig/.github/workflows/documentation.yml create mode 100644 data/vendor/twig/twig/.gitignore create mode 100644 data/vendor/twig/twig/.php-cs-fixer.dist.php create mode 100644 data/vendor/twig/twig/CHANGELOG create mode 100644 data/vendor/twig/twig/LICENSE create mode 100644 data/vendor/twig/twig/README.rst create mode 100644 data/vendor/twig/twig/composer.json create mode 100644 data/vendor/twig/twig/src/Cache/CacheInterface.php create mode 100644 data/vendor/twig/twig/src/Cache/FilesystemCache.php create mode 100644 data/vendor/twig/twig/src/Cache/NullCache.php create mode 100644 data/vendor/twig/twig/src/Compiler.php create mode 100644 data/vendor/twig/twig/src/Environment.php create mode 100644 data/vendor/twig/twig/src/Error/Error.php create mode 100644 data/vendor/twig/twig/src/Error/LoaderError.php create mode 100644 data/vendor/twig/twig/src/Error/RuntimeError.php create mode 100644 data/vendor/twig/twig/src/Error/SyntaxError.php create mode 100644 data/vendor/twig/twig/src/ExpressionParser.php create mode 100644 data/vendor/twig/twig/src/Extension/AbstractExtension.php create mode 100644 data/vendor/twig/twig/src/Extension/CoreExtension.php create mode 100644 data/vendor/twig/twig/src/Extension/DebugExtension.php create mode 100644 data/vendor/twig/twig/src/Extension/EscaperExtension.php create mode 100644 data/vendor/twig/twig/src/Extension/ExtensionInterface.php create mode 100644 data/vendor/twig/twig/src/Extension/GlobalsInterface.php create mode 100644 data/vendor/twig/twig/src/Extension/OptimizerExtension.php create mode 100644 data/vendor/twig/twig/src/Extension/ProfilerExtension.php create mode 100644 data/vendor/twig/twig/src/Extension/RuntimeExtensionInterface.php create mode 100644 data/vendor/twig/twig/src/Extension/SandboxExtension.php create mode 100644 data/vendor/twig/twig/src/Extension/StagingExtension.php create mode 100644 data/vendor/twig/twig/src/Extension/StringLoaderExtension.php create mode 100644 data/vendor/twig/twig/src/ExtensionSet.php create mode 100644 data/vendor/twig/twig/src/FileExtensionEscapingStrategy.php create mode 100644 data/vendor/twig/twig/src/Lexer.php create mode 100644 data/vendor/twig/twig/src/Loader/ArrayLoader.php create mode 100644 data/vendor/twig/twig/src/Loader/ChainLoader.php create mode 100644 data/vendor/twig/twig/src/Loader/FilesystemLoader.php create mode 100644 data/vendor/twig/twig/src/Loader/LoaderInterface.php create mode 100644 data/vendor/twig/twig/src/Markup.php create mode 100644 data/vendor/twig/twig/src/Node/AutoEscapeNode.php create mode 100644 data/vendor/twig/twig/src/Node/BlockNode.php create mode 100644 data/vendor/twig/twig/src/Node/BlockReferenceNode.php create mode 100644 data/vendor/twig/twig/src/Node/BodyNode.php create mode 100644 data/vendor/twig/twig/src/Node/CheckSecurityCallNode.php create mode 100644 data/vendor/twig/twig/src/Node/CheckSecurityNode.php create mode 100644 data/vendor/twig/twig/src/Node/CheckToStringNode.php create mode 100644 data/vendor/twig/twig/src/Node/DeprecatedNode.php create mode 100644 data/vendor/twig/twig/src/Node/DoNode.php create mode 100644 data/vendor/twig/twig/src/Node/EmbedNode.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/AbstractExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/ArrayExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/ArrowFunctionExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/AddBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/AndBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/ConcatBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/DivBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/EqualBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/GreaterBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/InBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/LessBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/ModBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/MulBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/NotInBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/OrBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/PowerBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/RangeBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/SpaceshipBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Binary/SubBinary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/CallExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/ConditionalExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/ConstantExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/FilterExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/FunctionExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/InlinePrint.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/NameExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/ParentExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/TempNameExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Test/ConstantTest.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Test/EvenTest.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Test/NullTest.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Test/OddTest.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Test/SameasTest.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/TestExpression.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Unary/NegUnary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Unary/NotUnary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/Unary/PosUnary.php create mode 100644 data/vendor/twig/twig/src/Node/Expression/VariadicExpression.php create mode 100644 data/vendor/twig/twig/src/Node/FlushNode.php create mode 100644 data/vendor/twig/twig/src/Node/ForLoopNode.php create mode 100644 data/vendor/twig/twig/src/Node/ForNode.php create mode 100644 data/vendor/twig/twig/src/Node/IfNode.php create mode 100644 data/vendor/twig/twig/src/Node/ImportNode.php create mode 100644 data/vendor/twig/twig/src/Node/IncludeNode.php create mode 100644 data/vendor/twig/twig/src/Node/MacroNode.php create mode 100644 data/vendor/twig/twig/src/Node/ModuleNode.php create mode 100644 data/vendor/twig/twig/src/Node/Node.php create mode 100644 data/vendor/twig/twig/src/Node/NodeCaptureInterface.php create mode 100644 data/vendor/twig/twig/src/Node/NodeOutputInterface.php create mode 100644 data/vendor/twig/twig/src/Node/PrintNode.php create mode 100644 data/vendor/twig/twig/src/Node/SandboxNode.php create mode 100644 data/vendor/twig/twig/src/Node/SetNode.php create mode 100644 data/vendor/twig/twig/src/Node/TextNode.php create mode 100644 data/vendor/twig/twig/src/Node/WithNode.php create mode 100644 data/vendor/twig/twig/src/NodeTraverser.php create mode 100644 data/vendor/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php create mode 100644 data/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php create mode 100644 data/vendor/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php create mode 100644 data/vendor/twig/twig/src/NodeVisitor/NodeVisitorInterface.php create mode 100644 data/vendor/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php create mode 100644 data/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php create mode 100644 data/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php create mode 100644 data/vendor/twig/twig/src/Parser.php create mode 100644 data/vendor/twig/twig/src/Profiler/Dumper/BaseDumper.php create mode 100644 data/vendor/twig/twig/src/Profiler/Dumper/BlackfireDumper.php create mode 100644 data/vendor/twig/twig/src/Profiler/Dumper/HtmlDumper.php create mode 100644 data/vendor/twig/twig/src/Profiler/Dumper/TextDumper.php create mode 100644 data/vendor/twig/twig/src/Profiler/Node/EnterProfileNode.php create mode 100644 data/vendor/twig/twig/src/Profiler/Node/LeaveProfileNode.php create mode 100644 data/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php create mode 100644 data/vendor/twig/twig/src/Profiler/Profile.php create mode 100644 data/vendor/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php create mode 100644 data/vendor/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php create mode 100644 data/vendor/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php create mode 100644 data/vendor/twig/twig/src/Sandbox/SecurityError.php create mode 100644 data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php create mode 100644 data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php create mode 100644 data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php create mode 100644 data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php create mode 100644 data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php create mode 100644 data/vendor/twig/twig/src/Sandbox/SecurityPolicy.php create mode 100644 data/vendor/twig/twig/src/Sandbox/SecurityPolicyInterface.php create mode 100644 data/vendor/twig/twig/src/Source.php create mode 100644 data/vendor/twig/twig/src/Template.php create mode 100644 data/vendor/twig/twig/src/TemplateWrapper.php create mode 100644 data/vendor/twig/twig/src/Test/IntegrationTestCase.php create mode 100644 data/vendor/twig/twig/src/Test/NodeTestCase.php create mode 100644 data/vendor/twig/twig/src/Token.php create mode 100644 data/vendor/twig/twig/src/TokenParser/AbstractTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/AutoEscapeTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/BlockTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/DeprecatedTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/DoTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/EmbedTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/FlushTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/ForTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/FromTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/IfTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/ImportTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/IncludeTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/MacroTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/SetTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/TokenParserInterface.php create mode 100644 data/vendor/twig/twig/src/TokenParser/UseTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenParser/WithTokenParser.php create mode 100644 data/vendor/twig/twig/src/TokenStream.php create mode 100644 data/vendor/twig/twig/src/TwigFilter.php create mode 100644 data/vendor/twig/twig/src/TwigFunction.php create mode 100644 data/vendor/twig/twig/src/TwigTest.php create mode 100644 data/vendor/twig/twig/src/Util/DeprecationCollector.php create mode 100644 data/vendor/twig/twig/src/Util/TemplateDirIterator.php create mode 100644 site/www/Twig-master (1).zip create mode 100644 site/www/Twig-master.zip create mode 100644 site/www/_rem/lib/twig/Cache/CacheInterface.php create mode 100644 site/www/_rem/lib/twig/Cache/FilesystemCache.php create mode 100644 site/www/_rem/lib/twig/Cache/NullCache.php create mode 100644 site/www/_rem/lib/twig/Compiler.php create mode 100644 site/www/_rem/lib/twig/Environment.php create mode 100644 site/www/_rem/lib/twig/Error/Error.php create mode 100644 site/www/_rem/lib/twig/Error/LoaderError.php create mode 100644 site/www/_rem/lib/twig/Error/RuntimeError.php create mode 100644 site/www/_rem/lib/twig/Error/SyntaxError.php create mode 100644 site/www/_rem/lib/twig/ExpressionParser.php create mode 100644 site/www/_rem/lib/twig/Extension/AbstractExtension.php create mode 100644 site/www/_rem/lib/twig/Extension/CoreExtension.php create mode 100644 site/www/_rem/lib/twig/Extension/DebugExtension.php create mode 100644 site/www/_rem/lib/twig/Extension/EscaperExtension.php create mode 100644 site/www/_rem/lib/twig/Extension/ExtensionInterface.php create mode 100644 site/www/_rem/lib/twig/Extension/GlobalsInterface.php create mode 100644 site/www/_rem/lib/twig/Extension/OptimizerExtension.php create mode 100644 site/www/_rem/lib/twig/Extension/ProfilerExtension.php create mode 100644 site/www/_rem/lib/twig/Extension/RuntimeExtensionInterface.php create mode 100644 site/www/_rem/lib/twig/Extension/SandboxExtension.php create mode 100644 site/www/_rem/lib/twig/Extension/StagingExtension.php create mode 100644 site/www/_rem/lib/twig/Extension/StringLoaderExtension.php create mode 100644 site/www/_rem/lib/twig/ExtensionSet.php create mode 100644 site/www/_rem/lib/twig/FileExtensionEscapingStrategy.php create mode 100644 site/www/_rem/lib/twig/Lexer.php create mode 100644 site/www/_rem/lib/twig/Loader/ArrayLoader.php create mode 100644 site/www/_rem/lib/twig/Loader/ChainLoader.php create mode 100644 site/www/_rem/lib/twig/Loader/FilesystemLoader.php create mode 100644 site/www/_rem/lib/twig/Loader/LoaderInterface.php create mode 100644 site/www/_rem/lib/twig/Markup.php create mode 100644 site/www/_rem/lib/twig/Node/AutoEscapeNode.php create mode 100644 site/www/_rem/lib/twig/Node/BlockNode.php create mode 100644 site/www/_rem/lib/twig/Node/BlockReferenceNode.php create mode 100644 site/www/_rem/lib/twig/Node/BodyNode.php create mode 100644 site/www/_rem/lib/twig/Node/CheckSecurityCallNode.php create mode 100644 site/www/_rem/lib/twig/Node/CheckSecurityNode.php create mode 100644 site/www/_rem/lib/twig/Node/CheckToStringNode.php create mode 100644 site/www/_rem/lib/twig/Node/DeprecatedNode.php create mode 100644 site/www/_rem/lib/twig/Node/DoNode.php create mode 100644 site/www/_rem/lib/twig/Node/EmbedNode.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/AbstractExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/ArrayExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/ArrowFunctionExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/AssignNameExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/AbstractBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/AddBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/AndBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/BitwiseAndBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/BitwiseOrBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/BitwiseXorBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/ConcatBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/DivBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/EndsWithBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/EqualBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/FloorDivBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/GreaterBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/GreaterEqualBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/InBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/LessBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/LessEqualBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/MatchesBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/ModBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/MulBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/NotEqualBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/NotInBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/OrBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/PowerBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/RangeBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/SpaceshipBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/StartsWithBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Binary/SubBinary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/BlockReferenceExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/CallExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/ConditionalExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/ConstantExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Filter/DefaultFilter.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/FilterExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/FunctionExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/GetAttrExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/InlinePrint.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/MethodCallExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/NameExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/NullCoalesceExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/ParentExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/TempNameExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Test/ConstantTest.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Test/DefinedTest.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Test/DivisiblebyTest.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Test/EvenTest.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Test/NullTest.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Test/OddTest.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Test/SameasTest.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/TestExpression.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Unary/AbstractUnary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Unary/NegUnary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Unary/NotUnary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/Unary/PosUnary.php create mode 100644 site/www/_rem/lib/twig/Node/Expression/VariadicExpression.php create mode 100644 site/www/_rem/lib/twig/Node/FlushNode.php create mode 100644 site/www/_rem/lib/twig/Node/ForLoopNode.php create mode 100644 site/www/_rem/lib/twig/Node/ForNode.php create mode 100644 site/www/_rem/lib/twig/Node/IfNode.php create mode 100644 site/www/_rem/lib/twig/Node/ImportNode.php create mode 100644 site/www/_rem/lib/twig/Node/IncludeNode.php create mode 100644 site/www/_rem/lib/twig/Node/MacroNode.php create mode 100644 site/www/_rem/lib/twig/Node/ModuleNode.php create mode 100644 site/www/_rem/lib/twig/Node/Node.php create mode 100644 site/www/_rem/lib/twig/Node/NodeCaptureInterface.php create mode 100644 site/www/_rem/lib/twig/Node/NodeOutputInterface.php create mode 100644 site/www/_rem/lib/twig/Node/PrintNode.php create mode 100644 site/www/_rem/lib/twig/Node/SandboxNode.php create mode 100644 site/www/_rem/lib/twig/Node/SetNode.php create mode 100644 site/www/_rem/lib/twig/Node/TextNode.php create mode 100644 site/www/_rem/lib/twig/Node/WithNode.php create mode 100644 site/www/_rem/lib/twig/NodeTraverser.php create mode 100644 site/www/_rem/lib/twig/NodeVisitor/AbstractNodeVisitor.php create mode 100644 site/www/_rem/lib/twig/NodeVisitor/EscaperNodeVisitor.php create mode 100644 site/www/_rem/lib/twig/NodeVisitor/MacroAutoImportNodeVisitor.php create mode 100644 site/www/_rem/lib/twig/NodeVisitor/NodeVisitorInterface.php create mode 100644 site/www/_rem/lib/twig/NodeVisitor/OptimizerNodeVisitor.php create mode 100644 site/www/_rem/lib/twig/NodeVisitor/SafeAnalysisNodeVisitor.php create mode 100644 site/www/_rem/lib/twig/NodeVisitor/SandboxNodeVisitor.php create mode 100644 site/www/_rem/lib/twig/Parser.php create mode 100644 site/www/_rem/lib/twig/Profiler/Dumper/BaseDumper.php create mode 100644 site/www/_rem/lib/twig/Profiler/Dumper/BlackfireDumper.php create mode 100644 site/www/_rem/lib/twig/Profiler/Dumper/HtmlDumper.php create mode 100644 site/www/_rem/lib/twig/Profiler/Dumper/TextDumper.php create mode 100644 site/www/_rem/lib/twig/Profiler/Node/EnterProfileNode.php create mode 100644 site/www/_rem/lib/twig/Profiler/Node/LeaveProfileNode.php create mode 100644 site/www/_rem/lib/twig/Profiler/NodeVisitor/ProfilerNodeVisitor.php create mode 100644 site/www/_rem/lib/twig/Profiler/Profile.php create mode 100644 site/www/_rem/lib/twig/RuntimeLoader/ContainerRuntimeLoader.php create mode 100644 site/www/_rem/lib/twig/RuntimeLoader/FactoryRuntimeLoader.php create mode 100644 site/www/_rem/lib/twig/RuntimeLoader/RuntimeLoaderInterface.php create mode 100644 site/www/_rem/lib/twig/Sandbox/SecurityError.php create mode 100644 site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedFilterError.php create mode 100644 site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedFunctionError.php create mode 100644 site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedMethodError.php create mode 100644 site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedPropertyError.php create mode 100644 site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedTagError.php create mode 100644 site/www/_rem/lib/twig/Sandbox/SecurityPolicy.php create mode 100644 site/www/_rem/lib/twig/Sandbox/SecurityPolicyInterface.php create mode 100644 site/www/_rem/lib/twig/Source.php create mode 100644 site/www/_rem/lib/twig/Template.php create mode 100644 site/www/_rem/lib/twig/TemplateWrapper.php create mode 100644 site/www/_rem/lib/twig/Test/IntegrationTestCase.php create mode 100644 site/www/_rem/lib/twig/Test/NodeTestCase.php create mode 100644 site/www/_rem/lib/twig/Token.php create mode 100644 site/www/_rem/lib/twig/TokenParser/AbstractTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/ApplyTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/AutoEscapeTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/BlockTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/DeprecatedTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/DoTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/EmbedTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/ExtendsTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/FlushTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/ForTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/FromTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/IfTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/ImportTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/IncludeTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/MacroTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/SandboxTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/SetTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/TokenParserInterface.php create mode 100644 site/www/_rem/lib/twig/TokenParser/UseTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenParser/WithTokenParser.php create mode 100644 site/www/_rem/lib/twig/TokenStream.php create mode 100644 site/www/_rem/lib/twig/TwigFilter.php create mode 100644 site/www/_rem/lib/twig/TwigFunction.php create mode 100644 site/www/_rem/lib/twig/TwigTest.php create mode 100644 site/www/_rem/lib/twig/Util/DeprecationCollector.php create mode 100644 site/www/_rem/lib/twig/Util/TemplateDirIterator.php create mode 100644 site/www/_rem/lib_/Twig/BaseNodeVisitor.php create mode 100644 site/www/_rem/lib_/Twig/Cache/Filesystem.php create mode 100644 site/www/_rem/lib_/Twig/Cache/Null.php create mode 100644 site/www/_rem/lib_/Twig/CacheInterface.php create mode 100644 site/www/_rem/lib_/Twig/Compiler.php create mode 100644 site/www/_rem/lib_/Twig/Environment.php create mode 100644 site/www/_rem/lib_/Twig/Error.php create mode 100644 site/www/_rem/lib_/Twig/Error/Loader.php create mode 100644 site/www/_rem/lib_/Twig/Error/Runtime.php create mode 100644 site/www/_rem/lib_/Twig/Error/Syntax.php create mode 100644 site/www/_rem/lib_/Twig/ExistsLoaderInterface.php create mode 100644 site/www/_rem/lib_/Twig/ExpressionParser.php create mode 100644 site/www/_rem/lib_/Twig/Extension.php create mode 100644 site/www/_rem/lib_/Twig/Extension/Core.php create mode 100644 site/www/_rem/lib_/Twig/Extension/Debug.php create mode 100644 site/www/_rem/lib_/Twig/Extension/Escaper.php create mode 100644 site/www/_rem/lib_/Twig/Extension/GlobalsInterface.php create mode 100644 site/www/_rem/lib_/Twig/Extension/InitRuntimeInterface.php create mode 100644 site/www/_rem/lib_/Twig/Extension/Optimizer.php create mode 100644 site/www/_rem/lib_/Twig/Extension/Profiler.php create mode 100644 site/www/_rem/lib_/Twig/Extension/Sandbox.php create mode 100644 site/www/_rem/lib_/Twig/Extension/Staging.php create mode 100644 site/www/_rem/lib_/Twig/Extension/StringLoader.php create mode 100644 site/www/_rem/lib_/Twig/ExtensionInterface.php create mode 100644 site/www/_rem/lib_/Twig/ExtensionSet.php create mode 100644 site/www/_rem/lib_/Twig/FileExtensionEscapingStrategy.php create mode 100644 site/www/_rem/lib_/Twig/Filter.php create mode 100644 site/www/_rem/lib_/Twig/Function.php create mode 100644 site/www/_rem/lib_/Twig/Lexer.php create mode 100644 site/www/_rem/lib_/Twig/Loader/Array.php create mode 100644 site/www/_rem/lib_/Twig/Loader/Chain.php create mode 100644 site/www/_rem/lib_/Twig/Loader/Filesystem.php create mode 100644 site/www/_rem/lib_/Twig/LoaderInterface.php create mode 100644 site/www/_rem/lib_/Twig/Markup.php create mode 100644 site/www/_rem/lib_/Twig/Node.php create mode 100644 site/www/_rem/lib_/Twig/Node/AutoEscape.php create mode 100644 site/www/_rem/lib_/Twig/Node/Block.php create mode 100644 site/www/_rem/lib_/Twig/Node/BlockReference.php create mode 100644 site/www/_rem/lib_/Twig/Node/Body.php create mode 100644 site/www/_rem/lib_/Twig/Node/CheckSecurity.php create mode 100644 site/www/_rem/lib_/Twig/Node/Do.php create mode 100644 site/www/_rem/lib_/Twig/Node/Embed.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Array.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/AssignName.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/Add.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/And.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/BitwiseAnd.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/BitwiseOr.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/BitwiseXor.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/Concat.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/Div.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/EndsWith.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/Equal.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/FloorDiv.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/Greater.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/GreaterEqual.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/In.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/Less.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/LessEqual.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/Matches.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/Mod.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/Mul.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/NotEqual.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/NotIn.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/Or.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/Power.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/Range.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/StartsWith.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Binary/Sub.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/BlockReference.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Call.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Conditional.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Constant.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Filter.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Filter/Default.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Function.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/GetAttr.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/MethodCall.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Name.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/NullCoalesce.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Parent.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/TempName.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Test.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Test/Constant.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Test/Defined.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Test/Divisibleby.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Test/Even.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Test/Null.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Test/Odd.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Test/Sameas.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Unary.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Unary/Neg.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Unary/Not.php create mode 100644 site/www/_rem/lib_/Twig/Node/Expression/Unary/Pos.php create mode 100644 site/www/_rem/lib_/Twig/Node/Flush.php create mode 100644 site/www/_rem/lib_/Twig/Node/For.php create mode 100644 site/www/_rem/lib_/Twig/Node/ForLoop.php create mode 100644 site/www/_rem/lib_/Twig/Node/If.php create mode 100644 site/www/_rem/lib_/Twig/Node/Import.php create mode 100644 site/www/_rem/lib_/Twig/Node/Include.php create mode 100644 site/www/_rem/lib_/Twig/Node/Macro.php create mode 100644 site/www/_rem/lib_/Twig/Node/Module.php create mode 100644 site/www/_rem/lib_/Twig/Node/Print.php create mode 100644 site/www/_rem/lib_/Twig/Node/Sandbox.php create mode 100644 site/www/_rem/lib_/Twig/Node/SandboxedPrint.php create mode 100644 site/www/_rem/lib_/Twig/Node/Set.php create mode 100644 site/www/_rem/lib_/Twig/Node/Spaceless.php create mode 100644 site/www/_rem/lib_/Twig/Node/Text.php create mode 100644 site/www/_rem/lib_/Twig/NodeOutputInterface.php create mode 100644 site/www/_rem/lib_/Twig/NodeTraverser.php create mode 100644 site/www/_rem/lib_/Twig/NodeVisitor/Escaper.php create mode 100644 site/www/_rem/lib_/Twig/NodeVisitor/Optimizer.php create mode 100644 site/www/_rem/lib_/Twig/NodeVisitor/SafeAnalysis.php create mode 100644 site/www/_rem/lib_/Twig/NodeVisitor/Sandbox.php create mode 100644 site/www/_rem/lib_/Twig/NodeVisitorInterface.php create mode 100644 site/www/_rem/lib_/Twig/Parser.php create mode 100644 site/www/_rem/lib_/Twig/Profiler/Dumper/Blackfire.php create mode 100644 site/www/_rem/lib_/Twig/Profiler/Dumper/Html.php create mode 100644 site/www/_rem/lib_/Twig/Profiler/Dumper/Text.php create mode 100644 site/www/_rem/lib_/Twig/Profiler/Node/EnterProfile.php create mode 100644 site/www/_rem/lib_/Twig/Profiler/Node/LeaveProfile.php create mode 100644 site/www/_rem/lib_/Twig/Profiler/NodeVisitor/Profiler.php create mode 100644 site/www/_rem/lib_/Twig/Profiler/Profile.php create mode 100644 site/www/_rem/lib_/Twig/RuntimeLoaderInterface.php create mode 100644 site/www/_rem/lib_/Twig/Sandbox/SecurityError.php create mode 100644 site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedFilterError.php create mode 100644 site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedFunctionError.php create mode 100644 site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedMethodError.php create mode 100644 site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedPropertyError.php create mode 100644 site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedTagError.php create mode 100644 site/www/_rem/lib_/Twig/Sandbox/SecurityPolicy.php create mode 100644 site/www/_rem/lib_/Twig/Sandbox/SecurityPolicyInterface.php create mode 100644 site/www/_rem/lib_/Twig/SimpleFilter.php create mode 100644 site/www/_rem/lib_/Twig/SimpleFunction.php create mode 100644 site/www/_rem/lib_/Twig/SimpleTest.php create mode 100644 site/www/_rem/lib_/Twig/Source.php create mode 100644 site/www/_rem/lib_/Twig/SourceContextLoaderInterface.php create mode 100644 site/www/_rem/lib_/Twig/Template.php create mode 100644 site/www/_rem/lib_/Twig/TemplateIterator.php create mode 100644 site/www/_rem/lib_/Twig/Test.php create mode 100644 site/www/_rem/lib_/Twig/Test/IntegrationTestCase.php create mode 100644 site/www/_rem/lib_/Twig/Test/NodeTestCase.php create mode 100644 site/www/_rem/lib_/Twig/Token.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/AutoEscape.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/Block.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/Do.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/Embed.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/Extends.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/Filter.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/Flush.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/For.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/From.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/If.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/Import.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/Include.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/Macro.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/Sandbox.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/Set.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/Spaceless.php create mode 100644 site/www/_rem/lib_/Twig/TokenParser/Use.php create mode 100644 site/www/_rem/lib_/Twig/TokenParserInterface.php create mode 100644 site/www/_rem/lib_/Twig/TokenStream.php create mode 100644 site/www/_rem/lib_/Twig/Util/DeprecationCollector.php create mode 100644 site/www/_rem/lib_/Twig/Util/TemplateDirIterator.php create mode 100644 site/www/_tmp/fuckinghub-lesson2-1.zip rename 1-4. index.php => site/www/_tmp/lesson1/1-4. index.php (100%) rename 5-7. index.php => site/www/_tmp/lesson1/5-7. index.php (100%) rename arr_products.php => site/www/_tmp/lesson1/arr_products.php (100%) create mode 100644 site/www/arr_products.php create mode 100644 site/www/data/.htaccess create mode 100644 site/www/data/index.php create mode 100644 site/www/img/products/1/123.jpeg create mode 100644 site/www/img/products/1/thumbs/123.jpeg create mode 100644 site/www/img/products/2/223.jpeg create mode 100644 site/www/img/products/2/thumbs/223.jpeg create mode 100644 site/www/img/products/3/312.jpeg create mode 100644 site/www/img/products/3/thumbs/312.jpeg create mode 100644 site/www/img/products/6/611.jpeg create mode 100644 site/www/img/products/6/thumbs/611.jpeg create mode 100644 site/www/img/system/logo.gif create mode 100644 site/www/img/system/no_photo_64.png create mode 100644 "site/www/index - \320\272\320\276\320\277\320\270\321\217.php" create mode 100644 site/www/index.php create mode 100644 site/www/templates/css/prods.css create mode 100644 site/www/templates/css/system.css create mode 100644 site/www/templates/html.tpl create mode 100644 site/www/templates/js/common.js create mode 100644 site/www/templates/js/jquery-1.12.4.min.js create mode 100644 site/www/templates/js/products.js create mode 100644 site/www/templates/product_item.tpl create mode 100644 site/www/templates/product_line_item.tpl create mode 100644 site/www/templates/product_line_item.tpl.bak create mode 100644 site/www/templates/products.tpl create mode 100644 site/www/templates/products.tpl.bak create mode 100644 site/www/trait.php create mode 100644 site/www/types.php diff --git a/data/all_in_one.php b/data/all_in_one.php new file mode 100644 index 0000000..8b89f66 --- /dev/null +++ b/data/all_in_one.php @@ -0,0 +1,39 @@ + sub_func([ + // 'pl' => ((!empty($arr_sbor['pl'])) ? $arr_sbor['pl'] : '' ), + 'target' => ((!empty($arr_sbor['action'])) ? $arr_sbor['action'] : '' ), + 'arr_sbor' => $arr_sbor + ]); + } + else $arr_answer = [false, 'unknown pl']; + + break; + default: $arr_answer = [false, 'What U want?']; +endswitch; + +echo json_encode($arr_answer); +?> \ No newline at end of file diff --git a/data/classes/_test_abstract.class.php b/data/classes/_test_abstract.class.php new file mode 100644 index 0000000..9e1b828 --- /dev/null +++ b/data/classes/_test_abstract.class.php @@ -0,0 +1,9 @@ + getValue() . "\n"; + } +} \ No newline at end of file diff --git a/data/classes/db.class.php b/data/classes/db.class.php new file mode 100644 index 0000000..c6057d2 --- /dev/null +++ b/data/classes/db.class.php @@ -0,0 +1,148 @@ +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + } + catch(PDOException $e){ + return [ + false, $e -> getMessage() + ]; + } + } + return [ + true, 'gut' + ]; + } + +// private function getObj(){ +// if(self::$connect === null){ +// self::$connect = new self; +// } +// return self::$connect; +// } + +// $db = new db(); + +//$__r = \db::exec_sql([ +// 'query' => " select * from products " +//]); +// +//var_dump($__r); + + static function get_query($arr_opt){ + $get = ((!empty($arr_opt['get'])) ? $arr_opt['get'] : '' ); + + if($get == 'products'){ + $query = " select * from products where 1 "; + } + elseif($get == 'products'){ + $query = " select * from prod__pics where 1 "; + } + // else return [false, 'unknown get']; + else $query = ''; + + return $query; + +// return [ +// true, +// 'query' => $query +// ]; + } + + function exec_sql__test(){ + $user = 'root'; + $pwd = '123'; + $dbh = new PDO('mysql:dbname=php-course;host=localhost', $user, $pwd); + + $sth = $dbh -> query(" select * from products where 1 ", PDO::FETCH_ASSOC); + $arr_sql = $sth->fetchAll(); + var_dump($arr_sql); + } + + function exec_sql($arr_opt){ + $query = ((!empty($arr_opt['query_get'])) ? $arr_opt['query_get'] : '' ); + if(empty($query)) return [false, 'query is empty!']; + + $__r = $this -> connect(); + if(!$__r[0]) return $__r; + + // var_dump($__r); + +// $sql = +// << query($query, PDO::FETCH_ASSOC); + $sth = self::$dbh -> query($query, PDO::FETCH_ASSOC); + // $sth = self::$dbh -> query($query); + + if(!$sth){ + return [false, self::$dbh->errorCode() . " - " . implode(', ', self::$dbh->errorInfo())]; + } + + // var_dump($sth); + + // print_r($sth->fetchAll(PDO::FETCH_UNIQUE)); + + + $arr_sql = $sth->fetchAll(); + // var_dump($arr_sql); + +// foreach($arr_sql as $row) { +// var_dump($row); +// } + + +// if(empty($rows)){ +// $arr_sql = []; +// } +// else{ +// +//// foreach($rows as ){ +//// +//// } +// +// var_dump($rows); +// +//// while ($row = $sth->fetchObject()) { +//// $data[] = $row; +//// } +// +// +// $arr_sql = [ +// [ +// 'id' => 1, +// 'name' => 'prod1', +// 'price' => 1500 +// ], +// ]; +// } + + + return [ + true, + 'arr' => $arr_sql + ]; + } + +} + +?> \ No newline at end of file diff --git a/data/classes/site.class.php b/data/classes/site.class.php new file mode 100644 index 0000000..a131176 --- /dev/null +++ b/data/classes/site.class.php @@ -0,0 +1,121 @@ + dir_root = \get_dir_root(); + } + function get_prods($arr_opt = []){ + $db = new DB(); + $limit = ((!empty($arr_opt['limit'])) ? (int)$arr_opt['limit'] : 0 ); + $limit_count = ((!empty($arr_opt['limit_count'])) ? (int)$arr_opt['limit_count'] : 0 ); + if($limit > 0 && $limit_count > 0){ + // Если есть и начало и конец + $wh = " limit $limit, $limit_count "; + } + elseif($limit > 0){ + // начала нет, то значится-с так, начинаем с нуля-с сударь-с + $wh = " limit $limit "; + } + else $wh = ''; + + $query = " select * from products p where prod_state is null order by prod_name $wh "; + + $__r = $db -> exec_sql([ + 'query_get' => $query + ]); + if(!$__r[0]) return $__r; + $arr_prods = []; + // var_dump($__r['arr']); + if(!empty($__r['arr'])){ + $arr_ids = []; + foreach($__r['arr'] as $item){ + $arr_ids[] = $item['prod_id']; + $arr_prods['products'][$item['prod_id']]['data'] = $item; + if(!isset($arr_prods['products'][$item['prod_id']]['pics'])) $arr_prods['products'][$item['prod_id']]['pics'] = []; + } + $__r = $db -> exec_sql([ + 'query_get' => " select * from prod__pics pp where pp_prod_id in(" . implode(',', $arr_ids) . ") " + ]); + if(!$__r[0]) return $__r; + foreach($__r['arr'] as $item){ + $arr_prods['products'][$item['pp_prod_id']]['pics'][] = $item; + } + } + return [ + true, + 'arr' => $arr_prods, + // 'query' => $query + ]; + } + + function sub_func($arr_opt){ + $target = ((!empty($arr_opt['target'])) ? $arr_opt['target'] : '' ); + + $arr_sbor = ((!empty($arr_opt['arr_sbor'])) ? $arr_opt['arr_sbor'] : [] ); + if(!is_array($arr_sbor)) return [false, 'arr_sbor must be array!']; + + if($target == 'load_more'){ + $limit = ((!empty($arr_sbor['limit'])) ? (int)$arr_sbor['limit'] : 0 ); + + // var_dump($arr_sbor); + + $limit += $this -> limit_count; + + $__r = $this -> get_prods([ + 'limit' => $limit, + 'limit_count' => $this -> limit_count + ]); + + // require '../../vendor/autoload.php'; + require $this -> dir_root . '/data/vendor/autoload.php'; + + // require_once '/path/to/vendor/autoload.php'; + + $loader = new \Twig\Loader\FilesystemLoader($this -> dir_root . '/site/www/templates'); + $twig = new \Twig\Environment($loader, [ + // 'cache' => '../../temp/twig_cache', + 'debug' => true, + 'autoescape' => false, + ]); + +// $assigns['document'] = [ +//// 'title' => 'Список товаров', +//// 'h1' => 'Список товаров', +//// 'place' => 'products', +// 'arr_prods' => $__r['arr'] +// ]; + + $assigns = [ + 'blush' => 1, + 'arr_prods' => $__r['arr'] + ]; + + // $tpl = $twig->load('products.tpl'); + $tpl = $twig->load('product_line_item.tpl'); + // $assigns['document']['content'] = $tpl->render($assigns); + + return [ + true, + // 'query' => $__r['query'], + 'prod_act' => [ + 'action' => $target, + 'limit' => $limit, + 'content' => $tpl->render($assigns), + ] + ]; + + return [false, 'Under construction']; + } + else return [false, 'unknown target: ' . $target]; + } +} +?> \ No newline at end of file diff --git a/data/composer.json b/data/composer.json new file mode 100644 index 0000000..8d8c008 --- /dev/null +++ b/data/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "twig/twig": "^3.0" + } +} diff --git a/data/composer.lock b/data/composer.lock new file mode 100644 index 0000000..60fbf2b --- /dev/null +++ b/data/composer.lock @@ -0,0 +1,254 @@ +{ + "_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#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "6a6772df2521c6860a448e9115f2793a", + "packages": [ + { + "name": "symfony/polyfill-ctype", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-27T12:26:48+00:00" + }, + { + "name": "twig/twig", + "version": "v3.3.7", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "8f168c6ffa3ce76d1786b3cd52275424a3fc675b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/8f168c6ffa3ce76d1786b3cd52275424a3fc675b", + "reference": "8f168c6ffa3ce76d1786b3cd52275424a3fc675b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Twig\\": "src/" + } + }, + "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": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.3.7" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2022-01-03T21:15:37+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.0.0" +} diff --git a/data/functions.php b/data/functions.php new file mode 100644 index 0000000..107901f --- /dev/null +++ b/data/functions.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/data/vendor/autoload.php b/data/vendor/autoload.php new file mode 100644 index 0000000..c0e1dca --- /dev/null +++ b/data/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 https://www.php-fig.org/psr/psr-0/ + * @see https://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', array_values($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') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $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])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + 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/data/vendor/composer/InstalledVersions.php b/data/vendor/composer/InstalledVersions.php new file mode 100644 index 0000000..f293614 --- /dev/null +++ b/data/vendor/composer/InstalledVersions.php @@ -0,0 +1,246 @@ + + array ( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'aliases' => + array ( + ), + 'reference' => NULL, + 'name' => '__root__', + ), + 'versions' => + array ( + '__root__' => + array ( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'aliases' => + array ( + ), + 'reference' => NULL, + ), + 'symfony/polyfill-ctype' => + array ( + 'pretty_version' => 'v1.23.0', + 'version' => '1.23.0.0', + 'aliases' => + array ( + ), + 'reference' => '46cd95797e9df938fdd2b03693b5fca5e64b01ce', + ), + 'symfony/polyfill-mbstring' => + array ( + 'pretty_version' => 'v1.23.1', + 'version' => '1.23.1.0', + 'aliases' => + array ( + ), + 'reference' => '9174a3d80210dca8daa7f31fec659150bbeabfc6', + ), + 'twig/twig' => + array ( + 'pretty_version' => 'v3.3.7', + 'version' => '3.3.7.0', + 'aliases' => + array ( + ), + 'reference' => '8f168c6ffa3ce76d1786b3cd52275424a3fc675b', + ), + ), +); + + + + + + + +public static function getInstalledPackages() +{ +return array_keys(self::$installed['versions']); +} + + + + + + + + + +public static function isInstalled($packageName) +{ +return isset(self::$installed['versions'][$packageName]); +} + + + + + + + + + + + + + + +public static function satisfies(VersionParser $parser, $packageName, $constraint) +{ +$constraint = $parser->parseConstraints($constraint); +$provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + +return $provided->matches($constraint); +} + + + + + + + + + + +public static function getVersionRanges($packageName) +{ +if (!isset(self::$installed['versions'][$packageName])) { +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + +$ranges = array(); +if (isset(self::$installed['versions'][$packageName]['pretty_version'])) { +$ranges[] = self::$installed['versions'][$packageName]['pretty_version']; +} +if (array_key_exists('aliases', self::$installed['versions'][$packageName])) { +$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']); +} +if (array_key_exists('replaced', self::$installed['versions'][$packageName])) { +$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']); +} +if (array_key_exists('provided', self::$installed['versions'][$packageName])) { +$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']); +} + +return implode(' || ', $ranges); +} + + + + + +public static function getVersion($packageName) +{ +if (!isset(self::$installed['versions'][$packageName])) { +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + +if (!isset(self::$installed['versions'][$packageName]['version'])) { +return null; +} + +return self::$installed['versions'][$packageName]['version']; +} + + + + + +public static function getPrettyVersion($packageName) +{ +if (!isset(self::$installed['versions'][$packageName])) { +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + +if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) { +return null; +} + +return self::$installed['versions'][$packageName]['pretty_version']; +} + + + + + +public static function getReference($packageName) +{ +if (!isset(self::$installed['versions'][$packageName])) { +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + +if (!isset(self::$installed['versions'][$packageName]['reference'])) { +return null; +} + +return self::$installed['versions'][$packageName]['reference']; +} + + + + + +public static function getRootPackage() +{ +return self::$installed['root']; +} + + + + + + + +public static function getRawData() +{ +return self::$installed; +} + + + + + + + + + + + + + + + + + + + +public static function reload($data) +{ +self::$installed = $data; +} +} diff --git a/data/vendor/composer/LICENSE b/data/vendor/composer/LICENSE new file mode 100644 index 0000000..f27399a --- /dev/null +++ b/data/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/data/vendor/composer/autoload_classmap.php b/data/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000..b26f1b1 --- /dev/null +++ b/data/vendor/composer/autoload_classmap.php @@ -0,0 +1,10 @@ + $vendorDir . '/composer/InstalledVersions.php', +); diff --git a/data/vendor/composer/autoload_files.php b/data/vendor/composer/autoload_files.php new file mode 100644 index 0000000..048343b --- /dev/null +++ b/data/vendor/composer/autoload_files.php @@ -0,0 +1,11 @@ + $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', +); diff --git a/data/vendor/composer/autoload_namespaces.php b/data/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000..b7fc012 --- /dev/null +++ b/data/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ + array($vendorDir . '/twig/twig/src'), + 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), + 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), +); diff --git a/data/vendor/composer/autoload_real.php b/data/vendor/composer/autoload_real.php new file mode 100644 index 0000000..51cf49f --- /dev/null +++ b/data/vendor/composer/autoload_real.php @@ -0,0 +1,75 @@ += 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); + if ($useStaticLoader) { + require __DIR__ . '/autoload_static.php'; + + call_user_func(\Composer\Autoload\ComposerStaticInit5bc3541ee2371943264a90d516b93d70::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\ComposerStaticInit5bc3541ee2371943264a90d516b93d70::$files; + } else { + $includeFiles = require __DIR__ . '/autoload_files.php'; + } + foreach ($includeFiles as $fileIdentifier => $file) { + composerRequire5bc3541ee2371943264a90d516b93d70($fileIdentifier, $file); + } + + return $loader; + } +} + +function composerRequire5bc3541ee2371943264a90d516b93d70($fileIdentifier, $file) +{ + if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { + require $file; + + $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + } +} diff --git a/data/vendor/composer/autoload_static.php b/data/vendor/composer/autoload_static.php new file mode 100644 index 0000000..a5e9016 --- /dev/null +++ b/data/vendor/composer/autoload_static.php @@ -0,0 +1,54 @@ + __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', + ); + + public static $prefixLengthsPsr4 = array ( + 'T' => + array ( + 'Twig\\' => 5, + ), + 'S' => + array ( + 'Symfony\\Polyfill\\Mbstring\\' => 26, + 'Symfony\\Polyfill\\Ctype\\' => 23, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'Twig\\' => + array ( + 0 => __DIR__ . '/..' . '/twig/twig/src', + ), + 'Symfony\\Polyfill\\Mbstring\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', + ), + 'Symfony\\Polyfill\\Ctype\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', + ), + ); + + public static $classMap = array ( + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInit5bc3541ee2371943264a90d516b93d70::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit5bc3541ee2371943264a90d516b93d70::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit5bc3541ee2371943264a90d516b93d70::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/data/vendor/composer/installed.json b/data/vendor/composer/installed.json new file mode 100644 index 0000000..a146737 --- /dev/null +++ b/data/vendor/composer/installed.json @@ -0,0 +1,250 @@ +{ + "packages": [ + { + "name": "symfony/polyfill-ctype", + "version": "v1.23.0", + "version_normalized": "1.23.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "time": "2021-02-19T12:13:01+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-ctype" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.23.1", + "version_normalized": "1.23.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "time": "2021-05-27T12:26:48+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-mbstring" + }, + { + "name": "twig/twig", + "version": "v3.3.7", + "version_normalized": "3.3.7.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "8f168c6ffa3ce76d1786b3cd52275424a3fc675b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/8f168c6ffa3ce76d1786b3cd52275424a3fc675b", + "reference": "8f168c6ffa3ce76d1786b3cd52275424a3fc675b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + }, + "time": "2022-01-03T21:15:37+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Twig\\": "src/" + } + }, + "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": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.3.7" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "install-path": "../twig/twig" + } + ], + "dev": true, + "dev-package-names": [] +} diff --git a/data/vendor/composer/installed.php b/data/vendor/composer/installed.php new file mode 100644 index 0000000..fe5567c --- /dev/null +++ b/data/vendor/composer/installed.php @@ -0,0 +1,51 @@ + + array ( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'aliases' => + array ( + ), + 'reference' => NULL, + 'name' => '__root__', + ), + 'versions' => + array ( + '__root__' => + array ( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'aliases' => + array ( + ), + 'reference' => NULL, + ), + 'symfony/polyfill-ctype' => + array ( + 'pretty_version' => 'v1.23.0', + 'version' => '1.23.0.0', + 'aliases' => + array ( + ), + 'reference' => '46cd95797e9df938fdd2b03693b5fca5e64b01ce', + ), + 'symfony/polyfill-mbstring' => + array ( + 'pretty_version' => 'v1.23.1', + 'version' => '1.23.1.0', + 'aliases' => + array ( + ), + 'reference' => '9174a3d80210dca8daa7f31fec659150bbeabfc6', + ), + 'twig/twig' => + array ( + 'pretty_version' => 'v3.3.7', + 'version' => '3.3.7.0', + 'aliases' => + array ( + ), + 'reference' => '8f168c6ffa3ce76d1786b3cd52275424a3fc675b', + ), + ), +); diff --git a/data/vendor/composer/platform_check.php b/data/vendor/composer/platform_check.php new file mode 100644 index 0000000..a8b98d5 --- /dev/null +++ b/data/vendor/composer/platform_check.php @@ -0,0 +1,26 @@ += 70205)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.5". You are running ' . PHP_VERSION . '.'; +} + +if ($issues) { + if (!headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); + } + if (!ini_get('display_errors')) { + if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { + fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); + } elseif (!headers_sent()) { + echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; + } + } + trigger_error( + 'Composer detected issues in your platform: ' . implode(' ', $issues), + E_USER_ERROR + ); +} diff --git a/data/vendor/symfony/polyfill-ctype/Ctype.php b/data/vendor/symfony/polyfill-ctype/Ctype.php new file mode 100644 index 0000000..58414dc --- /dev/null +++ b/data/vendor/symfony/polyfill-ctype/Ctype.php @@ -0,0 +1,227 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Ctype; + +/** + * Ctype implementation through regex. + * + * @internal + * + * @author Gert de Pagter + */ +final class Ctype +{ + /** + * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise. + * + * @see https://php.net/ctype-alnum + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_alnum($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text); + } + + /** + * Returns TRUE if every character in text is a letter, FALSE otherwise. + * + * @see https://php.net/ctype-alpha + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_alpha($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text); + } + + /** + * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise. + * + * @see https://php.net/ctype-cntrl + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_cntrl($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text); + } + + /** + * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise. + * + * @see https://php.net/ctype-digit + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_digit($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text); + } + + /** + * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise. + * + * @see https://php.net/ctype-graph + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_graph($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text); + } + + /** + * Returns TRUE if every character in text is a lowercase letter. + * + * @see https://php.net/ctype-lower + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_lower($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text); + } + + /** + * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all. + * + * @see https://php.net/ctype-print + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_print($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text); + } + + /** + * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise. + * + * @see https://php.net/ctype-punct + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_punct($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text); + } + + /** + * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters. + * + * @see https://php.net/ctype-space + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_space($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text); + } + + /** + * Returns TRUE if every character in text is an uppercase letter. + * + * @see https://php.net/ctype-upper + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_upper($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text); + } + + /** + * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise. + * + * @see https://php.net/ctype-xdigit + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_xdigit($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text); + } + + /** + * Converts integers to their char versions according to normal ctype behaviour, if needed. + * + * If an integer between -128 and 255 inclusive is provided, + * it is interpreted as the ASCII value of a single character + * (negative values have 256 added in order to allow characters in the Extended ASCII range). + * Any other integer is interpreted as a string containing the decimal digits of the integer. + * + * @param string|int $int + * + * @return mixed + */ + private static function convert_int_to_char_for_ctype($int) + { + if (!\is_int($int)) { + return $int; + } + + if ($int < -128 || $int > 255) { + return (string) $int; + } + + if ($int < 0) { + $int += 256; + } + + return \chr($int); + } +} diff --git a/data/vendor/symfony/polyfill-ctype/LICENSE b/data/vendor/symfony/polyfill-ctype/LICENSE new file mode 100644 index 0000000..3f853aa --- /dev/null +++ b/data/vendor/symfony/polyfill-ctype/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2018-2019 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/data/vendor/symfony/polyfill-ctype/README.md b/data/vendor/symfony/polyfill-ctype/README.md new file mode 100644 index 0000000..8add1ab --- /dev/null +++ b/data/vendor/symfony/polyfill-ctype/README.md @@ -0,0 +1,12 @@ +Symfony Polyfill / Ctype +======================== + +This component provides `ctype_*` functions to users who run php versions without the ctype extension. + +More information can be found in the +[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md). + +License +======= + +This library is released under the [MIT license](LICENSE). diff --git a/data/vendor/symfony/polyfill-ctype/bootstrap.php b/data/vendor/symfony/polyfill-ctype/bootstrap.php new file mode 100644 index 0000000..d54524b --- /dev/null +++ b/data/vendor/symfony/polyfill-ctype/bootstrap.php @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Ctype as p; + +if (\PHP_VERSION_ID >= 80000) { + return require __DIR__.'/bootstrap80.php'; +} + +if (!function_exists('ctype_alnum')) { + function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); } +} +if (!function_exists('ctype_alpha')) { + function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); } +} +if (!function_exists('ctype_cntrl')) { + function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); } +} +if (!function_exists('ctype_digit')) { + function ctype_digit($text) { return p\Ctype::ctype_digit($text); } +} +if (!function_exists('ctype_graph')) { + function ctype_graph($text) { return p\Ctype::ctype_graph($text); } +} +if (!function_exists('ctype_lower')) { + function ctype_lower($text) { return p\Ctype::ctype_lower($text); } +} +if (!function_exists('ctype_print')) { + function ctype_print($text) { return p\Ctype::ctype_print($text); } +} +if (!function_exists('ctype_punct')) { + function ctype_punct($text) { return p\Ctype::ctype_punct($text); } +} +if (!function_exists('ctype_space')) { + function ctype_space($text) { return p\Ctype::ctype_space($text); } +} +if (!function_exists('ctype_upper')) { + function ctype_upper($text) { return p\Ctype::ctype_upper($text); } +} +if (!function_exists('ctype_xdigit')) { + function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); } +} diff --git a/data/vendor/symfony/polyfill-ctype/bootstrap80.php b/data/vendor/symfony/polyfill-ctype/bootstrap80.php new file mode 100644 index 0000000..ab2f861 --- /dev/null +++ b/data/vendor/symfony/polyfill-ctype/bootstrap80.php @@ -0,0 +1,46 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Ctype as p; + +if (!function_exists('ctype_alnum')) { + function ctype_alnum(mixed $text): bool { return p\Ctype::ctype_alnum($text); } +} +if (!function_exists('ctype_alpha')) { + function ctype_alpha(mixed $text): bool { return p\Ctype::ctype_alpha($text); } +} +if (!function_exists('ctype_cntrl')) { + function ctype_cntrl(mixed $text): bool { return p\Ctype::ctype_cntrl($text); } +} +if (!function_exists('ctype_digit')) { + function ctype_digit(mixed $text): bool { return p\Ctype::ctype_digit($text); } +} +if (!function_exists('ctype_graph')) { + function ctype_graph(mixed $text): bool { return p\Ctype::ctype_graph($text); } +} +if (!function_exists('ctype_lower')) { + function ctype_lower(mixed $text): bool { return p\Ctype::ctype_lower($text); } +} +if (!function_exists('ctype_print')) { + function ctype_print(mixed $text): bool { return p\Ctype::ctype_print($text); } +} +if (!function_exists('ctype_punct')) { + function ctype_punct(mixed $text): bool { return p\Ctype::ctype_punct($text); } +} +if (!function_exists('ctype_space')) { + function ctype_space(mixed $text): bool { return p\Ctype::ctype_space($text); } +} +if (!function_exists('ctype_upper')) { + function ctype_upper(mixed $text): bool { return p\Ctype::ctype_upper($text); } +} +if (!function_exists('ctype_xdigit')) { + function ctype_xdigit(mixed $text): bool { return p\Ctype::ctype_xdigit($text); } +} diff --git a/data/vendor/symfony/polyfill-ctype/composer.json b/data/vendor/symfony/polyfill-ctype/composer.json new file mode 100644 index 0000000..f0621a3 --- /dev/null +++ b/data/vendor/symfony/polyfill-ctype/composer.json @@ -0,0 +1,38 @@ +{ + "name": "symfony/polyfill-ctype", + "type": "library", + "description": "Symfony polyfill for ctype functions", + "keywords": ["polyfill", "compatibility", "portable", "ctype"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.1" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" }, + "files": [ "bootstrap.php" ] + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + } +} diff --git a/data/vendor/symfony/polyfill-mbstring/LICENSE b/data/vendor/symfony/polyfill-mbstring/LICENSE new file mode 100644 index 0000000..4cd8bdd --- /dev/null +++ b/data/vendor/symfony/polyfill-mbstring/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015-2019 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/data/vendor/symfony/polyfill-mbstring/Mbstring.php b/data/vendor/symfony/polyfill-mbstring/Mbstring.php new file mode 100644 index 0000000..b599095 --- /dev/null +++ b/data/vendor/symfony/polyfill-mbstring/Mbstring.php @@ -0,0 +1,870 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Mbstring; + +/** + * Partial mbstring implementation in PHP, iconv based, UTF-8 centric. + * + * Implemented: + * - mb_chr - Returns a specific character from its Unicode code point + * - mb_convert_encoding - Convert character encoding + * - mb_convert_variables - Convert character code in variable(s) + * - mb_decode_mimeheader - Decode string in MIME header field + * - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED + * - mb_decode_numericentity - Decode HTML numeric string reference to character + * - mb_encode_numericentity - Encode character to HTML numeric string reference + * - mb_convert_case - Perform case folding on a string + * - mb_detect_encoding - Detect character encoding + * - mb_get_info - Get internal settings of mbstring + * - mb_http_input - Detect HTTP input character encoding + * - mb_http_output - Set/Get HTTP output character encoding + * - mb_internal_encoding - Set/Get internal character encoding + * - mb_list_encodings - Returns an array of all supported encodings + * - mb_ord - Returns the Unicode code point of a character + * - mb_output_handler - Callback function converts character encoding in output buffer + * - mb_scrub - Replaces ill-formed byte sequences with substitute characters + * - mb_strlen - Get string length + * - mb_strpos - Find position of first occurrence of string in a string + * - mb_strrpos - Find position of last occurrence of a string in a string + * - mb_str_split - Convert a string to an array + * - mb_strtolower - Make a string lowercase + * - mb_strtoupper - Make a string uppercase + * - mb_substitute_character - Set/Get substitution character + * - mb_substr - Get part of string + * - mb_stripos - Finds position of first occurrence of a string within another, case insensitive + * - mb_stristr - Finds first occurrence of a string within another, case insensitive + * - mb_strrchr - Finds the last occurrence of a character in a string within another + * - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive + * - mb_strripos - Finds position of last occurrence of a string within another, case insensitive + * - mb_strstr - Finds first occurrence of a string within another + * - mb_strwidth - Return width of string + * - mb_substr_count - Count the number of substring occurrences + * + * Not implemented: + * - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more) + * - mb_ereg_* - Regular expression with multibyte support + * - mb_parse_str - Parse GET/POST/COOKIE data and set global variable + * - mb_preferred_mime_name - Get MIME charset string + * - mb_regex_encoding - Returns current encoding for multibyte regex as string + * - mb_regex_set_options - Set/Get the default options for mbregex functions + * - mb_send_mail - Send encoded mail + * - mb_split - Split multibyte string using regular expression + * - mb_strcut - Get part of string + * - mb_strimwidth - Get truncated string with specified width + * + * @author Nicolas Grekas + * + * @internal + */ +final class Mbstring +{ + public const MB_CASE_FOLD = \PHP_INT_MAX; + + private const CASE_FOLD = [ + ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"], + ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'], + ]; + + private static $encodingList = ['ASCII', 'UTF-8']; + private static $language = 'neutral'; + private static $internalEncoding = 'UTF-8'; + + public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null) + { + if (\is_array($fromEncoding) || false !== strpos($fromEncoding, ',')) { + $fromEncoding = self::mb_detect_encoding($s, $fromEncoding); + } else { + $fromEncoding = self::getEncoding($fromEncoding); + } + + $toEncoding = self::getEncoding($toEncoding); + + if ('BASE64' === $fromEncoding) { + $s = base64_decode($s); + $fromEncoding = $toEncoding; + } + + if ('BASE64' === $toEncoding) { + return base64_encode($s); + } + + if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) { + if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) { + $fromEncoding = 'Windows-1252'; + } + if ('UTF-8' !== $fromEncoding) { + $s = \iconv($fromEncoding, 'UTF-8//IGNORE', $s); + } + + return preg_replace_callback('/[\x80-\xFF]+/', [__CLASS__, 'html_encoding_callback'], $s); + } + + if ('HTML-ENTITIES' === $fromEncoding) { + $s = html_entity_decode($s, \ENT_COMPAT, 'UTF-8'); + $fromEncoding = 'UTF-8'; + } + + return \iconv($fromEncoding, $toEncoding.'//IGNORE', $s); + } + + public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars) + { + $ok = true; + array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) { + if (false === $v = self::mb_convert_encoding($v, $toEncoding, $fromEncoding)) { + $ok = false; + } + }); + + return $ok ? $fromEncoding : false; + } + + public static function mb_decode_mimeheader($s) + { + return \iconv_mime_decode($s, 2, self::$internalEncoding); + } + + public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null) + { + trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', \E_USER_WARNING); + } + + public static function mb_decode_numericentity($s, $convmap, $encoding = null) + { + if (null !== $s && !is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) { + trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING); + + return null; + } + + if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) { + return false; + } + + if (null !== $encoding && !is_scalar($encoding)) { + trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); + + return ''; // Instead of null (cf. mb_encode_numericentity). + } + + $s = (string) $s; + if ('' === $s) { + return ''; + } + + $encoding = self::getEncoding($encoding); + + if ('UTF-8' === $encoding) { + $encoding = null; + if (!preg_match('//u', $s)) { + $s = @\iconv('UTF-8', 'UTF-8//IGNORE', $s); + } + } else { + $s = \iconv($encoding, 'UTF-8//IGNORE', $s); + } + + $cnt = floor(\count($convmap) / 4) * 4; + + for ($i = 0; $i < $cnt; $i += 4) { + // collector_decode_htmlnumericentity ignores $convmap[$i + 3] + $convmap[$i] += $convmap[$i + 2]; + $convmap[$i + 1] += $convmap[$i + 2]; + } + + $s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) { + $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1]; + for ($i = 0; $i < $cnt; $i += 4) { + if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) { + return self::mb_chr($c - $convmap[$i + 2]); + } + } + + return $m[0]; + }, $s); + + if (null === $encoding) { + return $s; + } + + return \iconv('UTF-8', $encoding.'//IGNORE', $s); + } + + public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false) + { + if (null !== $s && !is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) { + trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING); + + return null; + } + + if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) { + return false; + } + + if (null !== $encoding && !is_scalar($encoding)) { + trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); + + return null; // Instead of '' (cf. mb_decode_numericentity). + } + + if (null !== $is_hex && !is_scalar($is_hex)) { + trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', \E_USER_WARNING); + + return null; + } + + $s = (string) $s; + if ('' === $s) { + return ''; + } + + $encoding = self::getEncoding($encoding); + + if ('UTF-8' === $encoding) { + $encoding = null; + if (!preg_match('//u', $s)) { + $s = @\iconv('UTF-8', 'UTF-8//IGNORE', $s); + } + } else { + $s = \iconv($encoding, 'UTF-8//IGNORE', $s); + } + + static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; + + $cnt = floor(\count($convmap) / 4) * 4; + $i = 0; + $len = \strlen($s); + $result = ''; + + while ($i < $len) { + $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; + $uchr = substr($s, $i, $ulen); + $i += $ulen; + $c = self::mb_ord($uchr); + + for ($j = 0; $j < $cnt; $j += 4) { + if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) { + $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3]; + $result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';'; + continue 2; + } + } + $result .= $uchr; + } + + if (null === $encoding) { + return $result; + } + + return \iconv('UTF-8', $encoding.'//IGNORE', $result); + } + + public static function mb_convert_case($s, $mode, $encoding = null) + { + $s = (string) $s; + if ('' === $s) { + return ''; + } + + $encoding = self::getEncoding($encoding); + + if ('UTF-8' === $encoding) { + $encoding = null; + if (!preg_match('//u', $s)) { + $s = @\iconv('UTF-8', 'UTF-8//IGNORE', $s); + } + } else { + $s = \iconv($encoding, 'UTF-8//IGNORE', $s); + } + + if (\MB_CASE_TITLE == $mode) { + static $titleRegexp = null; + if (null === $titleRegexp) { + $titleRegexp = self::getData('titleCaseRegexp'); + } + $s = preg_replace_callback($titleRegexp, [__CLASS__, 'title_case'], $s); + } else { + if (\MB_CASE_UPPER == $mode) { + static $upper = null; + if (null === $upper) { + $upper = self::getData('upperCase'); + } + $map = $upper; + } else { + if (self::MB_CASE_FOLD === $mode) { + $s = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $s); + } + + static $lower = null; + if (null === $lower) { + $lower = self::getData('lowerCase'); + } + $map = $lower; + } + + static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; + + $i = 0; + $len = \strlen($s); + + while ($i < $len) { + $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; + $uchr = substr($s, $i, $ulen); + $i += $ulen; + + if (isset($map[$uchr])) { + $uchr = $map[$uchr]; + $nlen = \strlen($uchr); + + if ($nlen == $ulen) { + $nlen = $i; + do { + $s[--$nlen] = $uchr[--$ulen]; + } while ($ulen); + } else { + $s = substr_replace($s, $uchr, $i - $ulen, $ulen); + $len += $nlen - $ulen; + $i += $nlen - $ulen; + } + } + } + } + + if (null === $encoding) { + return $s; + } + + return \iconv('UTF-8', $encoding.'//IGNORE', $s); + } + + public static function mb_internal_encoding($encoding = null) + { + if (null === $encoding) { + return self::$internalEncoding; + } + + $normalizedEncoding = self::getEncoding($encoding); + + if ('UTF-8' === $normalizedEncoding || false !== @\iconv($normalizedEncoding, $normalizedEncoding, ' ')) { + self::$internalEncoding = $normalizedEncoding; + + return true; + } + + if (80000 > \PHP_VERSION_ID) { + return false; + } + + throw new \ValueError(sprintf('Argument #1 ($encoding) must be a valid encoding, "%s" given', $encoding)); + } + + public static function mb_language($lang = null) + { + if (null === $lang) { + return self::$language; + } + + switch ($normalizedLang = strtolower($lang)) { + case 'uni': + case 'neutral': + self::$language = $normalizedLang; + + return true; + } + + if (80000 > \PHP_VERSION_ID) { + return false; + } + + throw new \ValueError(sprintf('Argument #1 ($language) must be a valid language, "%s" given', $lang)); + } + + public static function mb_list_encodings() + { + return ['UTF-8']; + } + + public static function mb_encoding_aliases($encoding) + { + switch (strtoupper($encoding)) { + case 'UTF8': + case 'UTF-8': + return ['utf8']; + } + + return false; + } + + public static function mb_check_encoding($var = null, $encoding = null) + { + if (null === $encoding) { + if (null === $var) { + return false; + } + $encoding = self::$internalEncoding; + } + + return self::mb_detect_encoding($var, [$encoding]) || false !== @\iconv($encoding, $encoding, $var); + } + + public static function mb_detect_encoding($str, $encodingList = null, $strict = false) + { + if (null === $encodingList) { + $encodingList = self::$encodingList; + } else { + if (!\is_array($encodingList)) { + $encodingList = array_map('trim', explode(',', $encodingList)); + } + $encodingList = array_map('strtoupper', $encodingList); + } + + foreach ($encodingList as $enc) { + switch ($enc) { + case 'ASCII': + if (!preg_match('/[\x80-\xFF]/', $str)) { + return $enc; + } + break; + + case 'UTF8': + case 'UTF-8': + if (preg_match('//u', $str)) { + return 'UTF-8'; + } + break; + + default: + if (0 === strncmp($enc, 'ISO-8859-', 9)) { + return $enc; + } + } + } + + return false; + } + + public static function mb_detect_order($encodingList = null) + { + if (null === $encodingList) { + return self::$encodingList; + } + + if (!\is_array($encodingList)) { + $encodingList = array_map('trim', explode(',', $encodingList)); + } + $encodingList = array_map('strtoupper', $encodingList); + + foreach ($encodingList as $enc) { + switch ($enc) { + default: + if (strncmp($enc, 'ISO-8859-', 9)) { + return false; + } + // no break + case 'ASCII': + case 'UTF8': + case 'UTF-8': + } + } + + self::$encodingList = $encodingList; + + return true; + } + + public static function mb_strlen($s, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + return \strlen($s); + } + + return @\iconv_strlen($s, $encoding); + } + + public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + return strpos($haystack, $needle, $offset); + } + + $needle = (string) $needle; + if ('' === $needle) { + if (80000 > \PHP_VERSION_ID) { + trigger_error(__METHOD__.': Empty delimiter', \E_USER_WARNING); + + return false; + } + + return 0; + } + + return \iconv_strpos($haystack, $needle, $offset, $encoding); + } + + public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + return strrpos($haystack, $needle, $offset); + } + + if ($offset != (int) $offset) { + $offset = 0; + } elseif ($offset = (int) $offset) { + if ($offset < 0) { + if (0 > $offset += self::mb_strlen($needle)) { + $haystack = self::mb_substr($haystack, 0, $offset, $encoding); + } + $offset = 0; + } else { + $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding); + } + } + + $pos = '' !== $needle || 80000 > \PHP_VERSION_ID + ? \iconv_strrpos($haystack, $needle, $encoding) + : self::mb_strlen($haystack, $encoding); + + return false !== $pos ? $offset + $pos : false; + } + + public static function mb_str_split($string, $split_length = 1, $encoding = null) + { + if (null !== $string && !is_scalar($string) && !(\is_object($string) && method_exists($string, '__toString'))) { + trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', \E_USER_WARNING); + + return null; + } + + if (1 > $split_length = (int) $split_length) { + if (80000 > \PHP_VERSION_ID) { + trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING); + return false; + } + + throw new \ValueError('Argument #2 ($length) must be greater than 0'); + } + + if (null === $encoding) { + $encoding = mb_internal_encoding(); + } + + if ('UTF-8' === $encoding = self::getEncoding($encoding)) { + $rx = '/('; + while (65535 < $split_length) { + $rx .= '.{65535}'; + $split_length -= 65535; + } + $rx .= '.{'.$split_length.'})/us'; + + return preg_split($rx, $string, null, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY); + } + + $result = []; + $length = mb_strlen($string, $encoding); + + for ($i = 0; $i < $length; $i += $split_length) { + $result[] = mb_substr($string, $i, $split_length, $encoding); + } + + return $result; + } + + public static function mb_strtolower($s, $encoding = null) + { + return self::mb_convert_case($s, \MB_CASE_LOWER, $encoding); + } + + public static function mb_strtoupper($s, $encoding = null) + { + return self::mb_convert_case($s, \MB_CASE_UPPER, $encoding); + } + + public static function mb_substitute_character($c = null) + { + if (null === $c) { + return 'none'; + } + if (0 === strcasecmp($c, 'none')) { + return true; + } + if (80000 > \PHP_VERSION_ID) { + return false; + } + + throw new \ValueError('Argument #1 ($substitute_character) must be "none", "long", "entity" or a valid codepoint'); + } + + public static function mb_substr($s, $start, $length = null, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + return (string) substr($s, $start, null === $length ? 2147483647 : $length); + } + + if ($start < 0) { + $start = \iconv_strlen($s, $encoding) + $start; + if ($start < 0) { + $start = 0; + } + } + + if (null === $length) { + $length = 2147483647; + } elseif ($length < 0) { + $length = \iconv_strlen($s, $encoding) + $length - $start; + if ($length < 0) { + return ''; + } + } + + return (string) \iconv_substr($s, $start, $length, $encoding); + } + + public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) + { + $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); + $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); + + return self::mb_strpos($haystack, $needle, $offset, $encoding); + } + + public static function mb_stristr($haystack, $needle, $part = false, $encoding = null) + { + $pos = self::mb_stripos($haystack, $needle, 0, $encoding); + + return self::getSubpart($pos, $part, $haystack, $encoding); + } + + public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + $pos = strrpos($haystack, $needle); + } else { + $needle = self::mb_substr($needle, 0, 1, $encoding); + $pos = \iconv_strrpos($haystack, $needle, $encoding); + } + + return self::getSubpart($pos, $part, $haystack, $encoding); + } + + public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null) + { + $needle = self::mb_substr($needle, 0, 1, $encoding); + $pos = self::mb_strripos($haystack, $needle, $encoding); + + return self::getSubpart($pos, $part, $haystack, $encoding); + } + + public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) + { + $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); + $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); + + return self::mb_strrpos($haystack, $needle, $offset, $encoding); + } + + public static function mb_strstr($haystack, $needle, $part = false, $encoding = null) + { + $pos = strpos($haystack, $needle); + if (false === $pos) { + return false; + } + if ($part) { + return substr($haystack, 0, $pos); + } + + return substr($haystack, $pos); + } + + public static function mb_get_info($type = 'all') + { + $info = [ + 'internal_encoding' => self::$internalEncoding, + 'http_output' => 'pass', + 'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)', + 'func_overload' => 0, + 'func_overload_list' => 'no overload', + 'mail_charset' => 'UTF-8', + 'mail_header_encoding' => 'BASE64', + 'mail_body_encoding' => 'BASE64', + 'illegal_chars' => 0, + 'encoding_translation' => 'Off', + 'language' => self::$language, + 'detect_order' => self::$encodingList, + 'substitute_character' => 'none', + 'strict_detection' => 'Off', + ]; + + if ('all' === $type) { + return $info; + } + if (isset($info[$type])) { + return $info[$type]; + } + + return false; + } + + public static function mb_http_input($type = '') + { + return false; + } + + public static function mb_http_output($encoding = null) + { + return null !== $encoding ? 'pass' === $encoding : 'pass'; + } + + public static function mb_strwidth($s, $encoding = null) + { + $encoding = self::getEncoding($encoding); + + if ('UTF-8' !== $encoding) { + $s = \iconv($encoding, 'UTF-8//IGNORE', $s); + } + + $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide); + + return ($wide << 1) + \iconv_strlen($s, 'UTF-8'); + } + + public static function mb_substr_count($haystack, $needle, $encoding = null) + { + return substr_count($haystack, $needle); + } + + public static function mb_output_handler($contents, $status) + { + return $contents; + } + + public static function mb_chr($code, $encoding = null) + { + if (0x80 > $code %= 0x200000) { + $s = \chr($code); + } elseif (0x800 > $code) { + $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F); + } elseif (0x10000 > $code) { + $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); + } else { + $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); + } + + if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { + $s = mb_convert_encoding($s, $encoding, 'UTF-8'); + } + + return $s; + } + + public static function mb_ord($s, $encoding = null) + { + if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { + $s = mb_convert_encoding($s, 'UTF-8', $encoding); + } + + if (1 === \strlen($s)) { + return \ord($s); + } + + $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0; + if (0xF0 <= $code) { + return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80; + } + if (0xE0 <= $code) { + return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80; + } + if (0xC0 <= $code) { + return (($code - 0xC0) << 6) + $s[2] - 0x80; + } + + return $code; + } + + private static function getSubpart($pos, $part, $haystack, $encoding) + { + if (false === $pos) { + return false; + } + if ($part) { + return self::mb_substr($haystack, 0, $pos, $encoding); + } + + return self::mb_substr($haystack, $pos, null, $encoding); + } + + private static function html_encoding_callback(array $m) + { + $i = 1; + $entities = ''; + $m = unpack('C*', htmlentities($m[0], \ENT_COMPAT, 'UTF-8')); + + while (isset($m[$i])) { + if (0x80 > $m[$i]) { + $entities .= \chr($m[$i++]); + continue; + } + if (0xF0 <= $m[$i]) { + $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; + } elseif (0xE0 <= $m[$i]) { + $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; + } else { + $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80; + } + + $entities .= '&#'.$c.';'; + } + + return $entities; + } + + private static function title_case(array $s) + { + return self::mb_convert_case($s[1], \MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], \MB_CASE_LOWER, 'UTF-8'); + } + + private static function getData($file) + { + if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) { + return require $file; + } + + return false; + } + + private static function getEncoding($encoding) + { + if (null === $encoding) { + return self::$internalEncoding; + } + + if ('UTF-8' === $encoding) { + return 'UTF-8'; + } + + $encoding = strtoupper($encoding); + + if ('8BIT' === $encoding || 'BINARY' === $encoding) { + return 'CP850'; + } + + if ('UTF8' === $encoding) { + return 'UTF-8'; + } + + return $encoding; + } +} diff --git a/data/vendor/symfony/polyfill-mbstring/README.md b/data/vendor/symfony/polyfill-mbstring/README.md new file mode 100644 index 0000000..4efb599 --- /dev/null +++ b/data/vendor/symfony/polyfill-mbstring/README.md @@ -0,0 +1,13 @@ +Symfony Polyfill / Mbstring +=========================== + +This component provides a partial, native PHP implementation for the +[Mbstring](https://php.net/mbstring) extension. + +More information can be found in the +[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md). + +License +======= + +This library is released under the [MIT license](LICENSE). diff --git a/data/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/data/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php new file mode 100644 index 0000000..fac60b0 --- /dev/null +++ b/data/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php @@ -0,0 +1,1397 @@ + 'a', + 'B' => 'b', + 'C' => 'c', + 'D' => 'd', + 'E' => 'e', + 'F' => 'f', + 'G' => 'g', + 'H' => 'h', + 'I' => 'i', + 'J' => 'j', + 'K' => 'k', + 'L' => 'l', + 'M' => 'm', + 'N' => 'n', + 'O' => 'o', + 'P' => 'p', + 'Q' => 'q', + 'R' => 'r', + 'S' => 's', + 'T' => 't', + 'U' => 'u', + 'V' => 'v', + 'W' => 'w', + 'X' => 'x', + 'Y' => 'y', + 'Z' => 'z', + 'À' => 'à', + 'Á' => 'á', + 'Â' => 'â', + 'Ã' => 'ã', + 'Ä' => 'ä', + 'Å' => 'å', + 'Æ' => 'æ', + 'Ç' => 'ç', + 'È' => 'è', + 'É' => 'é', + 'Ê' => 'ê', + 'Ë' => 'ë', + 'Ì' => 'ì', + 'Í' => 'í', + 'Î' => 'î', + 'Ï' => 'ï', + 'Ð' => 'ð', + 'Ñ' => 'ñ', + 'Ò' => 'ò', + 'Ó' => 'ó', + 'Ô' => 'ô', + 'Õ' => 'õ', + 'Ö' => 'ö', + 'Ø' => 'ø', + 'Ù' => 'ù', + 'Ú' => 'ú', + 'Û' => 'û', + 'Ü' => 'ü', + 'Ý' => 'ý', + 'Þ' => 'þ', + 'Ā' => 'ā', + 'Ă' => 'ă', + 'Ą' => 'ą', + 'Ć' => 'ć', + 'Ĉ' => 'ĉ', + 'Ċ' => 'ċ', + 'Č' => 'č', + 'Ď' => 'ď', + 'Đ' => 'đ', + 'Ē' => 'ē', + 'Ĕ' => 'ĕ', + 'Ė' => 'ė', + 'Ę' => 'ę', + 'Ě' => 'ě', + 'Ĝ' => 'ĝ', + 'Ğ' => 'ğ', + 'Ġ' => 'ġ', + 'Ģ' => 'ģ', + 'Ĥ' => 'ĥ', + 'Ħ' => 'ħ', + 'Ĩ' => 'ĩ', + 'Ī' => 'ī', + 'Ĭ' => 'ĭ', + 'Į' => 'į', + 'İ' => 'i̇', + 'IJ' => 'ij', + 'Ĵ' => 'ĵ', + 'Ķ' => 'ķ', + 'Ĺ' => 'ĺ', + 'Ļ' => 'ļ', + 'Ľ' => 'ľ', + 'Ŀ' => 'ŀ', + 'Ł' => 'ł', + 'Ń' => 'ń', + 'Ņ' => 'ņ', + 'Ň' => 'ň', + 'Ŋ' => 'ŋ', + 'Ō' => 'ō', + 'Ŏ' => 'ŏ', + 'Ő' => 'ő', + 'Œ' => 'œ', + 'Ŕ' => 'ŕ', + 'Ŗ' => 'ŗ', + 'Ř' => 'ř', + 'Ś' => 'ś', + 'Ŝ' => 'ŝ', + 'Ş' => 'ş', + 'Š' => 'š', + 'Ţ' => 'ţ', + 'Ť' => 'ť', + 'Ŧ' => 'ŧ', + 'Ũ' => 'ũ', + 'Ū' => 'ū', + 'Ŭ' => 'ŭ', + 'Ů' => 'ů', + 'Ű' => 'ű', + 'Ų' => 'ų', + 'Ŵ' => 'ŵ', + 'Ŷ' => 'ŷ', + 'Ÿ' => 'ÿ', + 'Ź' => 'ź', + 'Ż' => 'ż', + 'Ž' => 'ž', + 'Ɓ' => 'ɓ', + 'Ƃ' => 'ƃ', + 'Ƅ' => 'ƅ', + 'Ɔ' => 'ɔ', + 'Ƈ' => 'ƈ', + 'Ɖ' => 'ɖ', + 'Ɗ' => 'ɗ', + 'Ƌ' => 'ƌ', + 'Ǝ' => 'ǝ', + 'Ə' => 'ə', + 'Ɛ' => 'ɛ', + 'Ƒ' => 'ƒ', + 'Ɠ' => 'ɠ', + 'Ɣ' => 'ɣ', + 'Ɩ' => 'ɩ', + 'Ɨ' => 'ɨ', + 'Ƙ' => 'ƙ', + 'Ɯ' => 'ɯ', + 'Ɲ' => 'ɲ', + 'Ɵ' => 'ɵ', + 'Ơ' => 'ơ', + 'Ƣ' => 'ƣ', + 'Ƥ' => 'ƥ', + 'Ʀ' => 'ʀ', + 'Ƨ' => 'ƨ', + 'Ʃ' => 'ʃ', + 'Ƭ' => 'ƭ', + 'Ʈ' => 'ʈ', + 'Ư' => 'ư', + 'Ʊ' => 'ʊ', + 'Ʋ' => 'ʋ', + 'Ƴ' => 'ƴ', + 'Ƶ' => 'ƶ', + 'Ʒ' => 'ʒ', + 'Ƹ' => 'ƹ', + 'Ƽ' => 'ƽ', + 'DŽ' => 'dž', + 'Dž' => 'dž', + 'LJ' => 'lj', + 'Lj' => 'lj', + 'NJ' => 'nj', + 'Nj' => 'nj', + 'Ǎ' => 'ǎ', + 'Ǐ' => 'ǐ', + 'Ǒ' => 'ǒ', + 'Ǔ' => 'ǔ', + 'Ǖ' => 'ǖ', + 'Ǘ' => 'ǘ', + 'Ǚ' => 'ǚ', + 'Ǜ' => 'ǜ', + 'Ǟ' => 'ǟ', + 'Ǡ' => 'ǡ', + 'Ǣ' => 'ǣ', + 'Ǥ' => 'ǥ', + 'Ǧ' => 'ǧ', + 'Ǩ' => 'ǩ', + 'Ǫ' => 'ǫ', + 'Ǭ' => 'ǭ', + 'Ǯ' => 'ǯ', + 'DZ' => 'dz', + 'Dz' => 'dz', + 'Ǵ' => 'ǵ', + 'Ƕ' => 'ƕ', + 'Ƿ' => 'ƿ', + 'Ǹ' => 'ǹ', + 'Ǻ' => 'ǻ', + 'Ǽ' => 'ǽ', + 'Ǿ' => 'ǿ', + 'Ȁ' => 'ȁ', + 'Ȃ' => 'ȃ', + 'Ȅ' => 'ȅ', + 'Ȇ' => 'ȇ', + 'Ȉ' => 'ȉ', + 'Ȋ' => 'ȋ', + 'Ȍ' => 'ȍ', + 'Ȏ' => 'ȏ', + 'Ȑ' => 'ȑ', + 'Ȓ' => 'ȓ', + 'Ȕ' => 'ȕ', + 'Ȗ' => 'ȗ', + 'Ș' => 'ș', + 'Ț' => 'ț', + 'Ȝ' => 'ȝ', + 'Ȟ' => 'ȟ', + 'Ƞ' => 'ƞ', + 'Ȣ' => 'ȣ', + 'Ȥ' => 'ȥ', + 'Ȧ' => 'ȧ', + 'Ȩ' => 'ȩ', + 'Ȫ' => 'ȫ', + 'Ȭ' => 'ȭ', + 'Ȯ' => 'ȯ', + 'Ȱ' => 'ȱ', + 'Ȳ' => 'ȳ', + 'Ⱥ' => 'ⱥ', + 'Ȼ' => 'ȼ', + 'Ƚ' => 'ƚ', + 'Ⱦ' => 'ⱦ', + 'Ɂ' => 'ɂ', + 'Ƀ' => 'ƀ', + 'Ʉ' => 'ʉ', + 'Ʌ' => 'ʌ', + 'Ɇ' => 'ɇ', + 'Ɉ' => 'ɉ', + 'Ɋ' => 'ɋ', + 'Ɍ' => 'ɍ', + 'Ɏ' => 'ɏ', + 'Ͱ' => 'ͱ', + 'Ͳ' => 'ͳ', + 'Ͷ' => 'ͷ', + 'Ϳ' => 'ϳ', + 'Ά' => 'ά', + 'Έ' => 'έ', + 'Ή' => 'ή', + 'Ί' => 'ί', + 'Ό' => 'ό', + 'Ύ' => 'ύ', + 'Ώ' => 'ώ', + 'Α' => 'α', + 'Β' => 'β', + 'Γ' => 'γ', + 'Δ' => 'δ', + 'Ε' => 'ε', + 'Ζ' => 'ζ', + 'Η' => 'η', + 'Θ' => 'θ', + 'Ι' => 'ι', + 'Κ' => 'κ', + 'Λ' => 'λ', + 'Μ' => 'μ', + 'Ν' => 'ν', + 'Ξ' => 'ξ', + 'Ο' => 'ο', + 'Π' => 'π', + 'Ρ' => 'ρ', + 'Σ' => 'σ', + 'Τ' => 'τ', + 'Υ' => 'υ', + 'Φ' => 'φ', + 'Χ' => 'χ', + 'Ψ' => 'ψ', + 'Ω' => 'ω', + 'Ϊ' => 'ϊ', + 'Ϋ' => 'ϋ', + 'Ϗ' => 'ϗ', + 'Ϙ' => 'ϙ', + 'Ϛ' => 'ϛ', + 'Ϝ' => 'ϝ', + 'Ϟ' => 'ϟ', + 'Ϡ' => 'ϡ', + 'Ϣ' => 'ϣ', + 'Ϥ' => 'ϥ', + 'Ϧ' => 'ϧ', + 'Ϩ' => 'ϩ', + 'Ϫ' => 'ϫ', + 'Ϭ' => 'ϭ', + 'Ϯ' => 'ϯ', + 'ϴ' => 'θ', + 'Ϸ' => 'ϸ', + 'Ϲ' => 'ϲ', + 'Ϻ' => 'ϻ', + 'Ͻ' => 'ͻ', + 'Ͼ' => 'ͼ', + 'Ͽ' => 'ͽ', + 'Ѐ' => 'ѐ', + 'Ё' => 'ё', + 'Ђ' => 'ђ', + 'Ѓ' => 'ѓ', + 'Є' => 'є', + 'Ѕ' => 'ѕ', + 'І' => 'і', + 'Ї' => 'ї', + 'Ј' => 'ј', + 'Љ' => 'љ', + 'Њ' => 'њ', + 'Ћ' => 'ћ', + 'Ќ' => 'ќ', + 'Ѝ' => 'ѝ', + 'Ў' => 'ў', + 'Џ' => 'џ', + 'А' => 'а', + 'Б' => 'б', + 'В' => 'в', + 'Г' => 'г', + 'Д' => 'д', + 'Е' => 'е', + 'Ж' => 'ж', + 'З' => 'з', + 'И' => 'и', + 'Й' => 'й', + 'К' => 'к', + 'Л' => 'л', + 'М' => 'м', + 'Н' => 'н', + 'О' => 'о', + 'П' => 'п', + 'Р' => 'р', + 'С' => 'с', + 'Т' => 'т', + 'У' => 'у', + 'Ф' => 'ф', + 'Х' => 'х', + 'Ц' => 'ц', + 'Ч' => 'ч', + 'Ш' => 'ш', + 'Щ' => 'щ', + 'Ъ' => 'ъ', + 'Ы' => 'ы', + 'Ь' => 'ь', + 'Э' => 'э', + 'Ю' => 'ю', + 'Я' => 'я', + 'Ѡ' => 'ѡ', + 'Ѣ' => 'ѣ', + 'Ѥ' => 'ѥ', + 'Ѧ' => 'ѧ', + 'Ѩ' => 'ѩ', + 'Ѫ' => 'ѫ', + 'Ѭ' => 'ѭ', + 'Ѯ' => 'ѯ', + 'Ѱ' => 'ѱ', + 'Ѳ' => 'ѳ', + 'Ѵ' => 'ѵ', + 'Ѷ' => 'ѷ', + 'Ѹ' => 'ѹ', + 'Ѻ' => 'ѻ', + 'Ѽ' => 'ѽ', + 'Ѿ' => 'ѿ', + 'Ҁ' => 'ҁ', + 'Ҋ' => 'ҋ', + 'Ҍ' => 'ҍ', + 'Ҏ' => 'ҏ', + 'Ґ' => 'ґ', + 'Ғ' => 'ғ', + 'Ҕ' => 'ҕ', + 'Җ' => 'җ', + 'Ҙ' => 'ҙ', + 'Қ' => 'қ', + 'Ҝ' => 'ҝ', + 'Ҟ' => 'ҟ', + 'Ҡ' => 'ҡ', + 'Ң' => 'ң', + 'Ҥ' => 'ҥ', + 'Ҧ' => 'ҧ', + 'Ҩ' => 'ҩ', + 'Ҫ' => 'ҫ', + 'Ҭ' => 'ҭ', + 'Ү' => 'ү', + 'Ұ' => 'ұ', + 'Ҳ' => 'ҳ', + 'Ҵ' => 'ҵ', + 'Ҷ' => 'ҷ', + 'Ҹ' => 'ҹ', + 'Һ' => 'һ', + 'Ҽ' => 'ҽ', + 'Ҿ' => 'ҿ', + 'Ӏ' => 'ӏ', + 'Ӂ' => 'ӂ', + 'Ӄ' => 'ӄ', + 'Ӆ' => 'ӆ', + 'Ӈ' => 'ӈ', + 'Ӊ' => 'ӊ', + 'Ӌ' => 'ӌ', + 'Ӎ' => 'ӎ', + 'Ӑ' => 'ӑ', + 'Ӓ' => 'ӓ', + 'Ӕ' => 'ӕ', + 'Ӗ' => 'ӗ', + 'Ә' => 'ә', + 'Ӛ' => 'ӛ', + 'Ӝ' => 'ӝ', + 'Ӟ' => 'ӟ', + 'Ӡ' => 'ӡ', + 'Ӣ' => 'ӣ', + 'Ӥ' => 'ӥ', + 'Ӧ' => 'ӧ', + 'Ө' => 'ө', + 'Ӫ' => 'ӫ', + 'Ӭ' => 'ӭ', + 'Ӯ' => 'ӯ', + 'Ӱ' => 'ӱ', + 'Ӳ' => 'ӳ', + 'Ӵ' => 'ӵ', + 'Ӷ' => 'ӷ', + 'Ӹ' => 'ӹ', + 'Ӻ' => 'ӻ', + 'Ӽ' => 'ӽ', + 'Ӿ' => 'ӿ', + 'Ԁ' => 'ԁ', + 'Ԃ' => 'ԃ', + 'Ԅ' => 'ԅ', + 'Ԇ' => 'ԇ', + 'Ԉ' => 'ԉ', + 'Ԋ' => 'ԋ', + 'Ԍ' => 'ԍ', + 'Ԏ' => 'ԏ', + 'Ԑ' => 'ԑ', + 'Ԓ' => 'ԓ', + 'Ԕ' => 'ԕ', + 'Ԗ' => 'ԗ', + 'Ԙ' => 'ԙ', + 'Ԛ' => 'ԛ', + 'Ԝ' => 'ԝ', + 'Ԟ' => 'ԟ', + 'Ԡ' => 'ԡ', + 'Ԣ' => 'ԣ', + 'Ԥ' => 'ԥ', + 'Ԧ' => 'ԧ', + 'Ԩ' => 'ԩ', + 'Ԫ' => 'ԫ', + 'Ԭ' => 'ԭ', + 'Ԯ' => 'ԯ', + 'Ա' => 'ա', + 'Բ' => 'բ', + 'Գ' => 'գ', + 'Դ' => 'դ', + 'Ե' => 'ե', + 'Զ' => 'զ', + 'Է' => 'է', + 'Ը' => 'ը', + 'Թ' => 'թ', + 'Ժ' => 'ժ', + 'Ի' => 'ի', + 'Լ' => 'լ', + 'Խ' => 'խ', + 'Ծ' => 'ծ', + 'Կ' => 'կ', + 'Հ' => 'հ', + 'Ձ' => 'ձ', + 'Ղ' => 'ղ', + 'Ճ' => 'ճ', + 'Մ' => 'մ', + 'Յ' => 'յ', + 'Ն' => 'ն', + 'Շ' => 'շ', + 'Ո' => 'ո', + 'Չ' => 'չ', + 'Պ' => 'պ', + 'Ջ' => 'ջ', + 'Ռ' => 'ռ', + 'Ս' => 'ս', + 'Վ' => 'վ', + 'Տ' => 'տ', + 'Ր' => 'ր', + 'Ց' => 'ց', + 'Ւ' => 'ւ', + 'Փ' => 'փ', + 'Ք' => 'ք', + 'Օ' => 'օ', + 'Ֆ' => 'ֆ', + 'Ⴀ' => 'ⴀ', + 'Ⴁ' => 'ⴁ', + 'Ⴂ' => 'ⴂ', + 'Ⴃ' => 'ⴃ', + 'Ⴄ' => 'ⴄ', + 'Ⴅ' => 'ⴅ', + 'Ⴆ' => 'ⴆ', + 'Ⴇ' => 'ⴇ', + 'Ⴈ' => 'ⴈ', + 'Ⴉ' => 'ⴉ', + 'Ⴊ' => 'ⴊ', + 'Ⴋ' => 'ⴋ', + 'Ⴌ' => 'ⴌ', + 'Ⴍ' => 'ⴍ', + 'Ⴎ' => 'ⴎ', + 'Ⴏ' => 'ⴏ', + 'Ⴐ' => 'ⴐ', + 'Ⴑ' => 'ⴑ', + 'Ⴒ' => 'ⴒ', + 'Ⴓ' => 'ⴓ', + 'Ⴔ' => 'ⴔ', + 'Ⴕ' => 'ⴕ', + 'Ⴖ' => 'ⴖ', + 'Ⴗ' => 'ⴗ', + 'Ⴘ' => 'ⴘ', + 'Ⴙ' => 'ⴙ', + 'Ⴚ' => 'ⴚ', + 'Ⴛ' => 'ⴛ', + 'Ⴜ' => 'ⴜ', + 'Ⴝ' => 'ⴝ', + 'Ⴞ' => 'ⴞ', + 'Ⴟ' => 'ⴟ', + 'Ⴠ' => 'ⴠ', + 'Ⴡ' => 'ⴡ', + 'Ⴢ' => 'ⴢ', + 'Ⴣ' => 'ⴣ', + 'Ⴤ' => 'ⴤ', + 'Ⴥ' => 'ⴥ', + 'Ⴧ' => 'ⴧ', + 'Ⴭ' => 'ⴭ', + 'Ꭰ' => 'ꭰ', + 'Ꭱ' => 'ꭱ', + 'Ꭲ' => 'ꭲ', + 'Ꭳ' => 'ꭳ', + 'Ꭴ' => 'ꭴ', + 'Ꭵ' => 'ꭵ', + 'Ꭶ' => 'ꭶ', + 'Ꭷ' => 'ꭷ', + 'Ꭸ' => 'ꭸ', + 'Ꭹ' => 'ꭹ', + 'Ꭺ' => 'ꭺ', + 'Ꭻ' => 'ꭻ', + 'Ꭼ' => 'ꭼ', + 'Ꭽ' => 'ꭽ', + 'Ꭾ' => 'ꭾ', + 'Ꭿ' => 'ꭿ', + 'Ꮀ' => 'ꮀ', + 'Ꮁ' => 'ꮁ', + 'Ꮂ' => 'ꮂ', + 'Ꮃ' => 'ꮃ', + 'Ꮄ' => 'ꮄ', + 'Ꮅ' => 'ꮅ', + 'Ꮆ' => 'ꮆ', + 'Ꮇ' => 'ꮇ', + 'Ꮈ' => 'ꮈ', + 'Ꮉ' => 'ꮉ', + 'Ꮊ' => 'ꮊ', + 'Ꮋ' => 'ꮋ', + 'Ꮌ' => 'ꮌ', + 'Ꮍ' => 'ꮍ', + 'Ꮎ' => 'ꮎ', + 'Ꮏ' => 'ꮏ', + 'Ꮐ' => 'ꮐ', + 'Ꮑ' => 'ꮑ', + 'Ꮒ' => 'ꮒ', + 'Ꮓ' => 'ꮓ', + 'Ꮔ' => 'ꮔ', + 'Ꮕ' => 'ꮕ', + 'Ꮖ' => 'ꮖ', + 'Ꮗ' => 'ꮗ', + 'Ꮘ' => 'ꮘ', + 'Ꮙ' => 'ꮙ', + 'Ꮚ' => 'ꮚ', + 'Ꮛ' => 'ꮛ', + 'Ꮜ' => 'ꮜ', + 'Ꮝ' => 'ꮝ', + 'Ꮞ' => 'ꮞ', + 'Ꮟ' => 'ꮟ', + 'Ꮠ' => 'ꮠ', + 'Ꮡ' => 'ꮡ', + 'Ꮢ' => 'ꮢ', + 'Ꮣ' => 'ꮣ', + 'Ꮤ' => 'ꮤ', + 'Ꮥ' => 'ꮥ', + 'Ꮦ' => 'ꮦ', + 'Ꮧ' => 'ꮧ', + 'Ꮨ' => 'ꮨ', + 'Ꮩ' => 'ꮩ', + 'Ꮪ' => 'ꮪ', + 'Ꮫ' => 'ꮫ', + 'Ꮬ' => 'ꮬ', + 'Ꮭ' => 'ꮭ', + 'Ꮮ' => 'ꮮ', + 'Ꮯ' => 'ꮯ', + 'Ꮰ' => 'ꮰ', + 'Ꮱ' => 'ꮱ', + 'Ꮲ' => 'ꮲ', + 'Ꮳ' => 'ꮳ', + 'Ꮴ' => 'ꮴ', + 'Ꮵ' => 'ꮵ', + 'Ꮶ' => 'ꮶ', + 'Ꮷ' => 'ꮷ', + 'Ꮸ' => 'ꮸ', + 'Ꮹ' => 'ꮹ', + 'Ꮺ' => 'ꮺ', + 'Ꮻ' => 'ꮻ', + 'Ꮼ' => 'ꮼ', + 'Ꮽ' => 'ꮽ', + 'Ꮾ' => 'ꮾ', + 'Ꮿ' => 'ꮿ', + 'Ᏸ' => 'ᏸ', + 'Ᏹ' => 'ᏹ', + 'Ᏺ' => 'ᏺ', + 'Ᏻ' => 'ᏻ', + 'Ᏼ' => 'ᏼ', + 'Ᏽ' => 'ᏽ', + 'Ა' => 'ა', + 'Ბ' => 'ბ', + 'Გ' => 'გ', + 'Დ' => 'დ', + 'Ე' => 'ე', + 'Ვ' => 'ვ', + 'Ზ' => 'ზ', + 'Თ' => 'თ', + 'Ი' => 'ი', + 'Კ' => 'კ', + 'Ლ' => 'ლ', + 'Მ' => 'მ', + 'Ნ' => 'ნ', + 'Ო' => 'ო', + 'Პ' => 'პ', + 'Ჟ' => 'ჟ', + 'Რ' => 'რ', + 'Ს' => 'ს', + 'Ტ' => 'ტ', + 'Უ' => 'უ', + 'Ფ' => 'ფ', + 'Ქ' => 'ქ', + 'Ღ' => 'ღ', + 'Ყ' => 'ყ', + 'Შ' => 'შ', + 'Ჩ' => 'ჩ', + 'Ც' => 'ც', + 'Ძ' => 'ძ', + 'Წ' => 'წ', + 'Ჭ' => 'ჭ', + 'Ხ' => 'ხ', + 'Ჯ' => 'ჯ', + 'Ჰ' => 'ჰ', + 'Ჱ' => 'ჱ', + 'Ჲ' => 'ჲ', + 'Ჳ' => 'ჳ', + 'Ჴ' => 'ჴ', + 'Ჵ' => 'ჵ', + 'Ჶ' => 'ჶ', + 'Ჷ' => 'ჷ', + 'Ჸ' => 'ჸ', + 'Ჹ' => 'ჹ', + 'Ჺ' => 'ჺ', + 'Ჽ' => 'ჽ', + 'Ჾ' => 'ჾ', + 'Ჿ' => 'ჿ', + 'Ḁ' => 'ḁ', + 'Ḃ' => 'ḃ', + 'Ḅ' => 'ḅ', + 'Ḇ' => 'ḇ', + 'Ḉ' => 'ḉ', + 'Ḋ' => 'ḋ', + 'Ḍ' => 'ḍ', + 'Ḏ' => 'ḏ', + 'Ḑ' => 'ḑ', + 'Ḓ' => 'ḓ', + 'Ḕ' => 'ḕ', + 'Ḗ' => 'ḗ', + 'Ḙ' => 'ḙ', + 'Ḛ' => 'ḛ', + 'Ḝ' => 'ḝ', + 'Ḟ' => 'ḟ', + 'Ḡ' => 'ḡ', + 'Ḣ' => 'ḣ', + 'Ḥ' => 'ḥ', + 'Ḧ' => 'ḧ', + 'Ḩ' => 'ḩ', + 'Ḫ' => 'ḫ', + 'Ḭ' => 'ḭ', + 'Ḯ' => 'ḯ', + 'Ḱ' => 'ḱ', + 'Ḳ' => 'ḳ', + 'Ḵ' => 'ḵ', + 'Ḷ' => 'ḷ', + 'Ḹ' => 'ḹ', + 'Ḻ' => 'ḻ', + 'Ḽ' => 'ḽ', + 'Ḿ' => 'ḿ', + 'Ṁ' => 'ṁ', + 'Ṃ' => 'ṃ', + 'Ṅ' => 'ṅ', + 'Ṇ' => 'ṇ', + 'Ṉ' => 'ṉ', + 'Ṋ' => 'ṋ', + 'Ṍ' => 'ṍ', + 'Ṏ' => 'ṏ', + 'Ṑ' => 'ṑ', + 'Ṓ' => 'ṓ', + 'Ṕ' => 'ṕ', + 'Ṗ' => 'ṗ', + 'Ṙ' => 'ṙ', + 'Ṛ' => 'ṛ', + 'Ṝ' => 'ṝ', + 'Ṟ' => 'ṟ', + 'Ṡ' => 'ṡ', + 'Ṣ' => 'ṣ', + 'Ṥ' => 'ṥ', + 'Ṧ' => 'ṧ', + 'Ṩ' => 'ṩ', + 'Ṫ' => 'ṫ', + 'Ṭ' => 'ṭ', + 'Ṯ' => 'ṯ', + 'Ṱ' => 'ṱ', + 'Ṳ' => 'ṳ', + 'Ṵ' => 'ṵ', + 'Ṷ' => 'ṷ', + 'Ṹ' => 'ṹ', + 'Ṻ' => 'ṻ', + 'Ṽ' => 'ṽ', + 'Ṿ' => 'ṿ', + 'Ẁ' => 'ẁ', + 'Ẃ' => 'ẃ', + 'Ẅ' => 'ẅ', + 'Ẇ' => 'ẇ', + 'Ẉ' => 'ẉ', + 'Ẋ' => 'ẋ', + 'Ẍ' => 'ẍ', + 'Ẏ' => 'ẏ', + 'Ẑ' => 'ẑ', + 'Ẓ' => 'ẓ', + 'Ẕ' => 'ẕ', + 'ẞ' => 'ß', + 'Ạ' => 'ạ', + 'Ả' => 'ả', + 'Ấ' => 'ấ', + 'Ầ' => 'ầ', + 'Ẩ' => 'ẩ', + 'Ẫ' => 'ẫ', + 'Ậ' => 'ậ', + 'Ắ' => 'ắ', + 'Ằ' => 'ằ', + 'Ẳ' => 'ẳ', + 'Ẵ' => 'ẵ', + 'Ặ' => 'ặ', + 'Ẹ' => 'ẹ', + 'Ẻ' => 'ẻ', + 'Ẽ' => 'ẽ', + 'Ế' => 'ế', + 'Ề' => 'ề', + 'Ể' => 'ể', + 'Ễ' => 'ễ', + 'Ệ' => 'ệ', + 'Ỉ' => 'ỉ', + 'Ị' => 'ị', + 'Ọ' => 'ọ', + 'Ỏ' => 'ỏ', + 'Ố' => 'ố', + 'Ồ' => 'ồ', + 'Ổ' => 'ổ', + 'Ỗ' => 'ỗ', + 'Ộ' => 'ộ', + 'Ớ' => 'ớ', + 'Ờ' => 'ờ', + 'Ở' => 'ở', + 'Ỡ' => 'ỡ', + 'Ợ' => 'ợ', + 'Ụ' => 'ụ', + 'Ủ' => 'ủ', + 'Ứ' => 'ứ', + 'Ừ' => 'ừ', + 'Ử' => 'ử', + 'Ữ' => 'ữ', + 'Ự' => 'ự', + 'Ỳ' => 'ỳ', + 'Ỵ' => 'ỵ', + 'Ỷ' => 'ỷ', + 'Ỹ' => 'ỹ', + 'Ỻ' => 'ỻ', + 'Ỽ' => 'ỽ', + 'Ỿ' => 'ỿ', + 'Ἀ' => 'ἀ', + 'Ἁ' => 'ἁ', + 'Ἂ' => 'ἂ', + 'Ἃ' => 'ἃ', + 'Ἄ' => 'ἄ', + 'Ἅ' => 'ἅ', + 'Ἆ' => 'ἆ', + 'Ἇ' => 'ἇ', + 'Ἐ' => 'ἐ', + 'Ἑ' => 'ἑ', + 'Ἒ' => 'ἒ', + 'Ἓ' => 'ἓ', + 'Ἔ' => 'ἔ', + 'Ἕ' => 'ἕ', + 'Ἠ' => 'ἠ', + 'Ἡ' => 'ἡ', + 'Ἢ' => 'ἢ', + 'Ἣ' => 'ἣ', + 'Ἤ' => 'ἤ', + 'Ἥ' => 'ἥ', + 'Ἦ' => 'ἦ', + 'Ἧ' => 'ἧ', + 'Ἰ' => 'ἰ', + 'Ἱ' => 'ἱ', + 'Ἲ' => 'ἲ', + 'Ἳ' => 'ἳ', + 'Ἴ' => 'ἴ', + 'Ἵ' => 'ἵ', + 'Ἶ' => 'ἶ', + 'Ἷ' => 'ἷ', + 'Ὀ' => 'ὀ', + 'Ὁ' => 'ὁ', + 'Ὂ' => 'ὂ', + 'Ὃ' => 'ὃ', + 'Ὄ' => 'ὄ', + 'Ὅ' => 'ὅ', + 'Ὑ' => 'ὑ', + 'Ὓ' => 'ὓ', + 'Ὕ' => 'ὕ', + 'Ὗ' => 'ὗ', + 'Ὠ' => 'ὠ', + 'Ὡ' => 'ὡ', + 'Ὢ' => 'ὢ', + 'Ὣ' => 'ὣ', + 'Ὤ' => 'ὤ', + 'Ὥ' => 'ὥ', + 'Ὦ' => 'ὦ', + 'Ὧ' => 'ὧ', + 'ᾈ' => 'ᾀ', + 'ᾉ' => 'ᾁ', + 'ᾊ' => 'ᾂ', + 'ᾋ' => 'ᾃ', + 'ᾌ' => 'ᾄ', + 'ᾍ' => 'ᾅ', + 'ᾎ' => 'ᾆ', + 'ᾏ' => 'ᾇ', + 'ᾘ' => 'ᾐ', + 'ᾙ' => 'ᾑ', + 'ᾚ' => 'ᾒ', + 'ᾛ' => 'ᾓ', + 'ᾜ' => 'ᾔ', + 'ᾝ' => 'ᾕ', + 'ᾞ' => 'ᾖ', + 'ᾟ' => 'ᾗ', + 'ᾨ' => 'ᾠ', + 'ᾩ' => 'ᾡ', + 'ᾪ' => 'ᾢ', + 'ᾫ' => 'ᾣ', + 'ᾬ' => 'ᾤ', + 'ᾭ' => 'ᾥ', + 'ᾮ' => 'ᾦ', + 'ᾯ' => 'ᾧ', + 'Ᾰ' => 'ᾰ', + 'Ᾱ' => 'ᾱ', + 'Ὰ' => 'ὰ', + 'Ά' => 'ά', + 'ᾼ' => 'ᾳ', + 'Ὲ' => 'ὲ', + 'Έ' => 'έ', + 'Ὴ' => 'ὴ', + 'Ή' => 'ή', + 'ῌ' => 'ῃ', + 'Ῐ' => 'ῐ', + 'Ῑ' => 'ῑ', + 'Ὶ' => 'ὶ', + 'Ί' => 'ί', + 'Ῠ' => 'ῠ', + 'Ῡ' => 'ῡ', + 'Ὺ' => 'ὺ', + 'Ύ' => 'ύ', + 'Ῥ' => 'ῥ', + 'Ὸ' => 'ὸ', + 'Ό' => 'ό', + 'Ὼ' => 'ὼ', + 'Ώ' => 'ώ', + 'ῼ' => 'ῳ', + 'Ω' => 'ω', + 'K' => 'k', + 'Å' => 'å', + 'Ⅎ' => 'ⅎ', + 'Ⅰ' => 'ⅰ', + 'Ⅱ' => 'ⅱ', + 'Ⅲ' => 'ⅲ', + 'Ⅳ' => 'ⅳ', + 'Ⅴ' => 'ⅴ', + 'Ⅵ' => 'ⅵ', + 'Ⅶ' => 'ⅶ', + 'Ⅷ' => 'ⅷ', + 'Ⅸ' => 'ⅸ', + 'Ⅹ' => 'ⅹ', + 'Ⅺ' => 'ⅺ', + 'Ⅻ' => 'ⅻ', + 'Ⅼ' => 'ⅼ', + 'Ⅽ' => 'ⅽ', + 'Ⅾ' => 'ⅾ', + 'Ⅿ' => 'ⅿ', + 'Ↄ' => 'ↄ', + 'Ⓐ' => 'ⓐ', + 'Ⓑ' => 'ⓑ', + 'Ⓒ' => 'ⓒ', + 'Ⓓ' => 'ⓓ', + 'Ⓔ' => 'ⓔ', + 'Ⓕ' => 'ⓕ', + 'Ⓖ' => 'ⓖ', + 'Ⓗ' => 'ⓗ', + 'Ⓘ' => 'ⓘ', + 'Ⓙ' => 'ⓙ', + 'Ⓚ' => 'ⓚ', + 'Ⓛ' => 'ⓛ', + 'Ⓜ' => 'ⓜ', + 'Ⓝ' => 'ⓝ', + 'Ⓞ' => 'ⓞ', + 'Ⓟ' => 'ⓟ', + 'Ⓠ' => 'ⓠ', + 'Ⓡ' => 'ⓡ', + 'Ⓢ' => 'ⓢ', + 'Ⓣ' => 'ⓣ', + 'Ⓤ' => 'ⓤ', + 'Ⓥ' => 'ⓥ', + 'Ⓦ' => 'ⓦ', + 'Ⓧ' => 'ⓧ', + 'Ⓨ' => 'ⓨ', + 'Ⓩ' => 'ⓩ', + 'Ⰰ' => 'ⰰ', + 'Ⰱ' => 'ⰱ', + 'Ⰲ' => 'ⰲ', + 'Ⰳ' => 'ⰳ', + 'Ⰴ' => 'ⰴ', + 'Ⰵ' => 'ⰵ', + 'Ⰶ' => 'ⰶ', + 'Ⰷ' => 'ⰷ', + 'Ⰸ' => 'ⰸ', + 'Ⰹ' => 'ⰹ', + 'Ⰺ' => 'ⰺ', + 'Ⰻ' => 'ⰻ', + 'Ⰼ' => 'ⰼ', + 'Ⰽ' => 'ⰽ', + 'Ⰾ' => 'ⰾ', + 'Ⰿ' => 'ⰿ', + 'Ⱀ' => 'ⱀ', + 'Ⱁ' => 'ⱁ', + 'Ⱂ' => 'ⱂ', + 'Ⱃ' => 'ⱃ', + 'Ⱄ' => 'ⱄ', + 'Ⱅ' => 'ⱅ', + 'Ⱆ' => 'ⱆ', + 'Ⱇ' => 'ⱇ', + 'Ⱈ' => 'ⱈ', + 'Ⱉ' => 'ⱉ', + 'Ⱊ' => 'ⱊ', + 'Ⱋ' => 'ⱋ', + 'Ⱌ' => 'ⱌ', + 'Ⱍ' => 'ⱍ', + 'Ⱎ' => 'ⱎ', + 'Ⱏ' => 'ⱏ', + 'Ⱐ' => 'ⱐ', + 'Ⱑ' => 'ⱑ', + 'Ⱒ' => 'ⱒ', + 'Ⱓ' => 'ⱓ', + 'Ⱔ' => 'ⱔ', + 'Ⱕ' => 'ⱕ', + 'Ⱖ' => 'ⱖ', + 'Ⱗ' => 'ⱗ', + 'Ⱘ' => 'ⱘ', + 'Ⱙ' => 'ⱙ', + 'Ⱚ' => 'ⱚ', + 'Ⱛ' => 'ⱛ', + 'Ⱜ' => 'ⱜ', + 'Ⱝ' => 'ⱝ', + 'Ⱞ' => 'ⱞ', + 'Ⱡ' => 'ⱡ', + 'Ɫ' => 'ɫ', + 'Ᵽ' => 'ᵽ', + 'Ɽ' => 'ɽ', + 'Ⱨ' => 'ⱨ', + 'Ⱪ' => 'ⱪ', + 'Ⱬ' => 'ⱬ', + 'Ɑ' => 'ɑ', + 'Ɱ' => 'ɱ', + 'Ɐ' => 'ɐ', + 'Ɒ' => 'ɒ', + 'Ⱳ' => 'ⱳ', + 'Ⱶ' => 'ⱶ', + 'Ȿ' => 'ȿ', + 'Ɀ' => 'ɀ', + 'Ⲁ' => 'ⲁ', + 'Ⲃ' => 'ⲃ', + 'Ⲅ' => 'ⲅ', + 'Ⲇ' => 'ⲇ', + 'Ⲉ' => 'ⲉ', + 'Ⲋ' => 'ⲋ', + 'Ⲍ' => 'ⲍ', + 'Ⲏ' => 'ⲏ', + 'Ⲑ' => 'ⲑ', + 'Ⲓ' => 'ⲓ', + 'Ⲕ' => 'ⲕ', + 'Ⲗ' => 'ⲗ', + 'Ⲙ' => 'ⲙ', + 'Ⲛ' => 'ⲛ', + 'Ⲝ' => 'ⲝ', + 'Ⲟ' => 'ⲟ', + 'Ⲡ' => 'ⲡ', + 'Ⲣ' => 'ⲣ', + 'Ⲥ' => 'ⲥ', + 'Ⲧ' => 'ⲧ', + 'Ⲩ' => 'ⲩ', + 'Ⲫ' => 'ⲫ', + 'Ⲭ' => 'ⲭ', + 'Ⲯ' => 'ⲯ', + 'Ⲱ' => 'ⲱ', + 'Ⲳ' => 'ⲳ', + 'Ⲵ' => 'ⲵ', + 'Ⲷ' => 'ⲷ', + 'Ⲹ' => 'ⲹ', + 'Ⲻ' => 'ⲻ', + 'Ⲽ' => 'ⲽ', + 'Ⲿ' => 'ⲿ', + 'Ⳁ' => 'ⳁ', + 'Ⳃ' => 'ⳃ', + 'Ⳅ' => 'ⳅ', + 'Ⳇ' => 'ⳇ', + 'Ⳉ' => 'ⳉ', + 'Ⳋ' => 'ⳋ', + 'Ⳍ' => 'ⳍ', + 'Ⳏ' => 'ⳏ', + 'Ⳑ' => 'ⳑ', + 'Ⳓ' => 'ⳓ', + 'Ⳕ' => 'ⳕ', + 'Ⳗ' => 'ⳗ', + 'Ⳙ' => 'ⳙ', + 'Ⳛ' => 'ⳛ', + 'Ⳝ' => 'ⳝ', + 'Ⳟ' => 'ⳟ', + 'Ⳡ' => 'ⳡ', + 'Ⳣ' => 'ⳣ', + 'Ⳬ' => 'ⳬ', + 'Ⳮ' => 'ⳮ', + 'Ⳳ' => 'ⳳ', + 'Ꙁ' => 'ꙁ', + 'Ꙃ' => 'ꙃ', + 'Ꙅ' => 'ꙅ', + 'Ꙇ' => 'ꙇ', + 'Ꙉ' => 'ꙉ', + 'Ꙋ' => 'ꙋ', + 'Ꙍ' => 'ꙍ', + 'Ꙏ' => 'ꙏ', + 'Ꙑ' => 'ꙑ', + 'Ꙓ' => 'ꙓ', + 'Ꙕ' => 'ꙕ', + 'Ꙗ' => 'ꙗ', + 'Ꙙ' => 'ꙙ', + 'Ꙛ' => 'ꙛ', + 'Ꙝ' => 'ꙝ', + 'Ꙟ' => 'ꙟ', + 'Ꙡ' => 'ꙡ', + 'Ꙣ' => 'ꙣ', + 'Ꙥ' => 'ꙥ', + 'Ꙧ' => 'ꙧ', + 'Ꙩ' => 'ꙩ', + 'Ꙫ' => 'ꙫ', + 'Ꙭ' => 'ꙭ', + 'Ꚁ' => 'ꚁ', + 'Ꚃ' => 'ꚃ', + 'Ꚅ' => 'ꚅ', + 'Ꚇ' => 'ꚇ', + 'Ꚉ' => 'ꚉ', + 'Ꚋ' => 'ꚋ', + 'Ꚍ' => 'ꚍ', + 'Ꚏ' => 'ꚏ', + 'Ꚑ' => 'ꚑ', + 'Ꚓ' => 'ꚓ', + 'Ꚕ' => 'ꚕ', + 'Ꚗ' => 'ꚗ', + 'Ꚙ' => 'ꚙ', + 'Ꚛ' => 'ꚛ', + 'Ꜣ' => 'ꜣ', + 'Ꜥ' => 'ꜥ', + 'Ꜧ' => 'ꜧ', + 'Ꜩ' => 'ꜩ', + 'Ꜫ' => 'ꜫ', + 'Ꜭ' => 'ꜭ', + 'Ꜯ' => 'ꜯ', + 'Ꜳ' => 'ꜳ', + 'Ꜵ' => 'ꜵ', + 'Ꜷ' => 'ꜷ', + 'Ꜹ' => 'ꜹ', + 'Ꜻ' => 'ꜻ', + 'Ꜽ' => 'ꜽ', + 'Ꜿ' => 'ꜿ', + 'Ꝁ' => 'ꝁ', + 'Ꝃ' => 'ꝃ', + 'Ꝅ' => 'ꝅ', + 'Ꝇ' => 'ꝇ', + 'Ꝉ' => 'ꝉ', + 'Ꝋ' => 'ꝋ', + 'Ꝍ' => 'ꝍ', + 'Ꝏ' => 'ꝏ', + 'Ꝑ' => 'ꝑ', + 'Ꝓ' => 'ꝓ', + 'Ꝕ' => 'ꝕ', + 'Ꝗ' => 'ꝗ', + 'Ꝙ' => 'ꝙ', + 'Ꝛ' => 'ꝛ', + 'Ꝝ' => 'ꝝ', + 'Ꝟ' => 'ꝟ', + 'Ꝡ' => 'ꝡ', + 'Ꝣ' => 'ꝣ', + 'Ꝥ' => 'ꝥ', + 'Ꝧ' => 'ꝧ', + 'Ꝩ' => 'ꝩ', + 'Ꝫ' => 'ꝫ', + 'Ꝭ' => 'ꝭ', + 'Ꝯ' => 'ꝯ', + 'Ꝺ' => 'ꝺ', + 'Ꝼ' => 'ꝼ', + 'Ᵹ' => 'ᵹ', + 'Ꝿ' => 'ꝿ', + 'Ꞁ' => 'ꞁ', + 'Ꞃ' => 'ꞃ', + 'Ꞅ' => 'ꞅ', + 'Ꞇ' => 'ꞇ', + 'Ꞌ' => 'ꞌ', + 'Ɥ' => 'ɥ', + 'Ꞑ' => 'ꞑ', + 'Ꞓ' => 'ꞓ', + 'Ꞗ' => 'ꞗ', + 'Ꞙ' => 'ꞙ', + 'Ꞛ' => 'ꞛ', + 'Ꞝ' => 'ꞝ', + 'Ꞟ' => 'ꞟ', + 'Ꞡ' => 'ꞡ', + 'Ꞣ' => 'ꞣ', + 'Ꞥ' => 'ꞥ', + 'Ꞧ' => 'ꞧ', + 'Ꞩ' => 'ꞩ', + 'Ɦ' => 'ɦ', + 'Ɜ' => 'ɜ', + 'Ɡ' => 'ɡ', + 'Ɬ' => 'ɬ', + 'Ɪ' => 'ɪ', + 'Ʞ' => 'ʞ', + 'Ʇ' => 'ʇ', + 'Ʝ' => 'ʝ', + 'Ꭓ' => 'ꭓ', + 'Ꞵ' => 'ꞵ', + 'Ꞷ' => 'ꞷ', + 'Ꞹ' => 'ꞹ', + 'Ꞻ' => 'ꞻ', + 'Ꞽ' => 'ꞽ', + 'Ꞿ' => 'ꞿ', + 'Ꟃ' => 'ꟃ', + 'Ꞔ' => 'ꞔ', + 'Ʂ' => 'ʂ', + 'Ᶎ' => 'ᶎ', + 'Ꟈ' => 'ꟈ', + 'Ꟊ' => 'ꟊ', + 'Ꟶ' => 'ꟶ', + 'A' => 'a', + 'B' => 'b', + 'C' => 'c', + 'D' => 'd', + 'E' => 'e', + 'F' => 'f', + 'G' => 'g', + 'H' => 'h', + 'I' => 'i', + 'J' => 'j', + 'K' => 'k', + 'L' => 'l', + 'M' => 'm', + 'N' => 'n', + 'O' => 'o', + 'P' => 'p', + 'Q' => 'q', + 'R' => 'r', + 'S' => 's', + 'T' => 't', + 'U' => 'u', + 'V' => 'v', + 'W' => 'w', + 'X' => 'x', + 'Y' => 'y', + 'Z' => 'z', + '𐐀' => '𐐨', + '𐐁' => '𐐩', + '𐐂' => '𐐪', + '𐐃' => '𐐫', + '𐐄' => '𐐬', + '𐐅' => '𐐭', + '𐐆' => '𐐮', + '𐐇' => '𐐯', + '𐐈' => '𐐰', + '𐐉' => '𐐱', + '𐐊' => '𐐲', + '𐐋' => '𐐳', + '𐐌' => '𐐴', + '𐐍' => '𐐵', + '𐐎' => '𐐶', + '𐐏' => '𐐷', + '𐐐' => '𐐸', + '𐐑' => '𐐹', + '𐐒' => '𐐺', + '𐐓' => '𐐻', + '𐐔' => '𐐼', + '𐐕' => '𐐽', + '𐐖' => '𐐾', + '𐐗' => '𐐿', + '𐐘' => '𐑀', + '𐐙' => '𐑁', + '𐐚' => '𐑂', + '𐐛' => '𐑃', + '𐐜' => '𐑄', + '𐐝' => '𐑅', + '𐐞' => '𐑆', + '𐐟' => '𐑇', + '𐐠' => '𐑈', + '𐐡' => '𐑉', + '𐐢' => '𐑊', + '𐐣' => '𐑋', + '𐐤' => '𐑌', + '𐐥' => '𐑍', + '𐐦' => '𐑎', + '𐐧' => '𐑏', + '𐒰' => '𐓘', + '𐒱' => '𐓙', + '𐒲' => '𐓚', + '𐒳' => '𐓛', + '𐒴' => '𐓜', + '𐒵' => '𐓝', + '𐒶' => '𐓞', + '𐒷' => '𐓟', + '𐒸' => '𐓠', + '𐒹' => '𐓡', + '𐒺' => '𐓢', + '𐒻' => '𐓣', + '𐒼' => '𐓤', + '𐒽' => '𐓥', + '𐒾' => '𐓦', + '𐒿' => '𐓧', + '𐓀' => '𐓨', + '𐓁' => '𐓩', + '𐓂' => '𐓪', + '𐓃' => '𐓫', + '𐓄' => '𐓬', + '𐓅' => '𐓭', + '𐓆' => '𐓮', + '𐓇' => '𐓯', + '𐓈' => '𐓰', + '𐓉' => '𐓱', + '𐓊' => '𐓲', + '𐓋' => '𐓳', + '𐓌' => '𐓴', + '𐓍' => '𐓵', + '𐓎' => '𐓶', + '𐓏' => '𐓷', + '𐓐' => '𐓸', + '𐓑' => '𐓹', + '𐓒' => '𐓺', + '𐓓' => '𐓻', + '𐲀' => '𐳀', + '𐲁' => '𐳁', + '𐲂' => '𐳂', + '𐲃' => '𐳃', + '𐲄' => '𐳄', + '𐲅' => '𐳅', + '𐲆' => '𐳆', + '𐲇' => '𐳇', + '𐲈' => '𐳈', + '𐲉' => '𐳉', + '𐲊' => '𐳊', + '𐲋' => '𐳋', + '𐲌' => '𐳌', + '𐲍' => '𐳍', + '𐲎' => '𐳎', + '𐲏' => '𐳏', + '𐲐' => '𐳐', + '𐲑' => '𐳑', + '𐲒' => '𐳒', + '𐲓' => '𐳓', + '𐲔' => '𐳔', + '𐲕' => '𐳕', + '𐲖' => '𐳖', + '𐲗' => '𐳗', + '𐲘' => '𐳘', + '𐲙' => '𐳙', + '𐲚' => '𐳚', + '𐲛' => '𐳛', + '𐲜' => '𐳜', + '𐲝' => '𐳝', + '𐲞' => '𐳞', + '𐲟' => '𐳟', + '𐲠' => '𐳠', + '𐲡' => '𐳡', + '𐲢' => '𐳢', + '𐲣' => '𐳣', + '𐲤' => '𐳤', + '𐲥' => '𐳥', + '𐲦' => '𐳦', + '𐲧' => '𐳧', + '𐲨' => '𐳨', + '𐲩' => '𐳩', + '𐲪' => '𐳪', + '𐲫' => '𐳫', + '𐲬' => '𐳬', + '𐲭' => '𐳭', + '𐲮' => '𐳮', + '𐲯' => '𐳯', + '𐲰' => '𐳰', + '𐲱' => '𐳱', + '𐲲' => '𐳲', + '𑢠' => '𑣀', + '𑢡' => '𑣁', + '𑢢' => '𑣂', + '𑢣' => '𑣃', + '𑢤' => '𑣄', + '𑢥' => '𑣅', + '𑢦' => '𑣆', + '𑢧' => '𑣇', + '𑢨' => '𑣈', + '𑢩' => '𑣉', + '𑢪' => '𑣊', + '𑢫' => '𑣋', + '𑢬' => '𑣌', + '𑢭' => '𑣍', + '𑢮' => '𑣎', + '𑢯' => '𑣏', + '𑢰' => '𑣐', + '𑢱' => '𑣑', + '𑢲' => '𑣒', + '𑢳' => '𑣓', + '𑢴' => '𑣔', + '𑢵' => '𑣕', + '𑢶' => '𑣖', + '𑢷' => '𑣗', + '𑢸' => '𑣘', + '𑢹' => '𑣙', + '𑢺' => '𑣚', + '𑢻' => '𑣛', + '𑢼' => '𑣜', + '𑢽' => '𑣝', + '𑢾' => '𑣞', + '𑢿' => '𑣟', + '𖹀' => '𖹠', + '𖹁' => '𖹡', + '𖹂' => '𖹢', + '𖹃' => '𖹣', + '𖹄' => '𖹤', + '𖹅' => '𖹥', + '𖹆' => '𖹦', + '𖹇' => '𖹧', + '𖹈' => '𖹨', + '𖹉' => '𖹩', + '𖹊' => '𖹪', + '𖹋' => '𖹫', + '𖹌' => '𖹬', + '𖹍' => '𖹭', + '𖹎' => '𖹮', + '𖹏' => '𖹯', + '𖹐' => '𖹰', + '𖹑' => '𖹱', + '𖹒' => '𖹲', + '𖹓' => '𖹳', + '𖹔' => '𖹴', + '𖹕' => '𖹵', + '𖹖' => '𖹶', + '𖹗' => '𖹷', + '𖹘' => '𖹸', + '𖹙' => '𖹹', + '𖹚' => '𖹺', + '𖹛' => '𖹻', + '𖹜' => '𖹼', + '𖹝' => '𖹽', + '𖹞' => '𖹾', + '𖹟' => '𖹿', + '𞤀' => '𞤢', + '𞤁' => '𞤣', + '𞤂' => '𞤤', + '𞤃' => '𞤥', + '𞤄' => '𞤦', + '𞤅' => '𞤧', + '𞤆' => '𞤨', + '𞤇' => '𞤩', + '𞤈' => '𞤪', + '𞤉' => '𞤫', + '𞤊' => '𞤬', + '𞤋' => '𞤭', + '𞤌' => '𞤮', + '𞤍' => '𞤯', + '𞤎' => '𞤰', + '𞤏' => '𞤱', + '𞤐' => '𞤲', + '𞤑' => '𞤳', + '𞤒' => '𞤴', + '𞤓' => '𞤵', + '𞤔' => '𞤶', + '𞤕' => '𞤷', + '𞤖' => '𞤸', + '𞤗' => '𞤹', + '𞤘' => '𞤺', + '𞤙' => '𞤻', + '𞤚' => '𞤼', + '𞤛' => '𞤽', + '𞤜' => '𞤾', + '𞤝' => '𞤿', + '𞤞' => '𞥀', + '𞤟' => '𞥁', + '𞤠' => '𞥂', + '𞤡' => '𞥃', +); diff --git a/data/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php b/data/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php new file mode 100644 index 0000000..2a8f6e7 --- /dev/null +++ b/data/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php @@ -0,0 +1,5 @@ + 'A', + 'b' => 'B', + 'c' => 'C', + 'd' => 'D', + 'e' => 'E', + 'f' => 'F', + 'g' => 'G', + 'h' => 'H', + 'i' => 'I', + 'j' => 'J', + 'k' => 'K', + 'l' => 'L', + 'm' => 'M', + 'n' => 'N', + 'o' => 'O', + 'p' => 'P', + 'q' => 'Q', + 'r' => 'R', + 's' => 'S', + 't' => 'T', + 'u' => 'U', + 'v' => 'V', + 'w' => 'W', + 'x' => 'X', + 'y' => 'Y', + 'z' => 'Z', + 'µ' => 'Μ', + 'à' => 'À', + 'á' => 'Á', + 'â' => 'Â', + 'ã' => 'Ã', + 'ä' => 'Ä', + 'å' => 'Å', + 'æ' => 'Æ', + 'ç' => 'Ç', + 'è' => 'È', + 'é' => 'É', + 'ê' => 'Ê', + 'ë' => 'Ë', + 'ì' => 'Ì', + 'í' => 'Í', + 'î' => 'Î', + 'ï' => 'Ï', + 'ð' => 'Ð', + 'ñ' => 'Ñ', + 'ò' => 'Ò', + 'ó' => 'Ó', + 'ô' => 'Ô', + 'õ' => 'Õ', + 'ö' => 'Ö', + 'ø' => 'Ø', + 'ù' => 'Ù', + 'ú' => 'Ú', + 'û' => 'Û', + 'ü' => 'Ü', + 'ý' => 'Ý', + 'þ' => 'Þ', + 'ÿ' => 'Ÿ', + 'ā' => 'Ā', + 'ă' => 'Ă', + 'ą' => 'Ą', + 'ć' => 'Ć', + 'ĉ' => 'Ĉ', + 'ċ' => 'Ċ', + 'č' => 'Č', + 'ď' => 'Ď', + 'đ' => 'Đ', + 'ē' => 'Ē', + 'ĕ' => 'Ĕ', + 'ė' => 'Ė', + 'ę' => 'Ę', + 'ě' => 'Ě', + 'ĝ' => 'Ĝ', + 'ğ' => 'Ğ', + 'ġ' => 'Ġ', + 'ģ' => 'Ģ', + 'ĥ' => 'Ĥ', + 'ħ' => 'Ħ', + 'ĩ' => 'Ĩ', + 'ī' => 'Ī', + 'ĭ' => 'Ĭ', + 'į' => 'Į', + 'ı' => 'I', + 'ij' => 'IJ', + 'ĵ' => 'Ĵ', + 'ķ' => 'Ķ', + 'ĺ' => 'Ĺ', + 'ļ' => 'Ļ', + 'ľ' => 'Ľ', + 'ŀ' => 'Ŀ', + 'ł' => 'Ł', + 'ń' => 'Ń', + 'ņ' => 'Ņ', + 'ň' => 'Ň', + 'ŋ' => 'Ŋ', + 'ō' => 'Ō', + 'ŏ' => 'Ŏ', + 'ő' => 'Ő', + 'œ' => 'Œ', + 'ŕ' => 'Ŕ', + 'ŗ' => 'Ŗ', + 'ř' => 'Ř', + 'ś' => 'Ś', + 'ŝ' => 'Ŝ', + 'ş' => 'Ş', + 'š' => 'Š', + 'ţ' => 'Ţ', + 'ť' => 'Ť', + 'ŧ' => 'Ŧ', + 'ũ' => 'Ũ', + 'ū' => 'Ū', + 'ŭ' => 'Ŭ', + 'ů' => 'Ů', + 'ű' => 'Ű', + 'ų' => 'Ų', + 'ŵ' => 'Ŵ', + 'ŷ' => 'Ŷ', + 'ź' => 'Ź', + 'ż' => 'Ż', + 'ž' => 'Ž', + 'ſ' => 'S', + 'ƀ' => 'Ƀ', + 'ƃ' => 'Ƃ', + 'ƅ' => 'Ƅ', + 'ƈ' => 'Ƈ', + 'ƌ' => 'Ƌ', + 'ƒ' => 'Ƒ', + 'ƕ' => 'Ƕ', + 'ƙ' => 'Ƙ', + 'ƚ' => 'Ƚ', + 'ƞ' => 'Ƞ', + 'ơ' => 'Ơ', + 'ƣ' => 'Ƣ', + 'ƥ' => 'Ƥ', + 'ƨ' => 'Ƨ', + 'ƭ' => 'Ƭ', + 'ư' => 'Ư', + 'ƴ' => 'Ƴ', + 'ƶ' => 'Ƶ', + 'ƹ' => 'Ƹ', + 'ƽ' => 'Ƽ', + 'ƿ' => 'Ƿ', + 'Dž' => 'DŽ', + 'dž' => 'DŽ', + 'Lj' => 'LJ', + 'lj' => 'LJ', + 'Nj' => 'NJ', + 'nj' => 'NJ', + 'ǎ' => 'Ǎ', + 'ǐ' => 'Ǐ', + 'ǒ' => 'Ǒ', + 'ǔ' => 'Ǔ', + 'ǖ' => 'Ǖ', + 'ǘ' => 'Ǘ', + 'ǚ' => 'Ǚ', + 'ǜ' => 'Ǜ', + 'ǝ' => 'Ǝ', + 'ǟ' => 'Ǟ', + 'ǡ' => 'Ǡ', + 'ǣ' => 'Ǣ', + 'ǥ' => 'Ǥ', + 'ǧ' => 'Ǧ', + 'ǩ' => 'Ǩ', + 'ǫ' => 'Ǫ', + 'ǭ' => 'Ǭ', + 'ǯ' => 'Ǯ', + 'Dz' => 'DZ', + 'dz' => 'DZ', + 'ǵ' => 'Ǵ', + 'ǹ' => 'Ǹ', + 'ǻ' => 'Ǻ', + 'ǽ' => 'Ǽ', + 'ǿ' => 'Ǿ', + 'ȁ' => 'Ȁ', + 'ȃ' => 'Ȃ', + 'ȅ' => 'Ȅ', + 'ȇ' => 'Ȇ', + 'ȉ' => 'Ȉ', + 'ȋ' => 'Ȋ', + 'ȍ' => 'Ȍ', + 'ȏ' => 'Ȏ', + 'ȑ' => 'Ȑ', + 'ȓ' => 'Ȓ', + 'ȕ' => 'Ȕ', + 'ȗ' => 'Ȗ', + 'ș' => 'Ș', + 'ț' => 'Ț', + 'ȝ' => 'Ȝ', + 'ȟ' => 'Ȟ', + 'ȣ' => 'Ȣ', + 'ȥ' => 'Ȥ', + 'ȧ' => 'Ȧ', + 'ȩ' => 'Ȩ', + 'ȫ' => 'Ȫ', + 'ȭ' => 'Ȭ', + 'ȯ' => 'Ȯ', + 'ȱ' => 'Ȱ', + 'ȳ' => 'Ȳ', + 'ȼ' => 'Ȼ', + 'ȿ' => 'Ȿ', + 'ɀ' => 'Ɀ', + 'ɂ' => 'Ɂ', + 'ɇ' => 'Ɇ', + 'ɉ' => 'Ɉ', + 'ɋ' => 'Ɋ', + 'ɍ' => 'Ɍ', + 'ɏ' => 'Ɏ', + 'ɐ' => 'Ɐ', + 'ɑ' => 'Ɑ', + 'ɒ' => 'Ɒ', + 'ɓ' => 'Ɓ', + 'ɔ' => 'Ɔ', + 'ɖ' => 'Ɖ', + 'ɗ' => 'Ɗ', + 'ə' => 'Ə', + 'ɛ' => 'Ɛ', + 'ɜ' => 'Ɜ', + 'ɠ' => 'Ɠ', + 'ɡ' => 'Ɡ', + 'ɣ' => 'Ɣ', + 'ɥ' => 'Ɥ', + 'ɦ' => 'Ɦ', + 'ɨ' => 'Ɨ', + 'ɩ' => 'Ɩ', + 'ɪ' => 'Ɪ', + 'ɫ' => 'Ɫ', + 'ɬ' => 'Ɬ', + 'ɯ' => 'Ɯ', + 'ɱ' => 'Ɱ', + 'ɲ' => 'Ɲ', + 'ɵ' => 'Ɵ', + 'ɽ' => 'Ɽ', + 'ʀ' => 'Ʀ', + 'ʂ' => 'Ʂ', + 'ʃ' => 'Ʃ', + 'ʇ' => 'Ʇ', + 'ʈ' => 'Ʈ', + 'ʉ' => 'Ʉ', + 'ʊ' => 'Ʊ', + 'ʋ' => 'Ʋ', + 'ʌ' => 'Ʌ', + 'ʒ' => 'Ʒ', + 'ʝ' => 'Ʝ', + 'ʞ' => 'Ʞ', + 'ͅ' => 'Ι', + 'ͱ' => 'Ͱ', + 'ͳ' => 'Ͳ', + 'ͷ' => 'Ͷ', + 'ͻ' => 'Ͻ', + 'ͼ' => 'Ͼ', + 'ͽ' => 'Ͽ', + 'ά' => 'Ά', + 'έ' => 'Έ', + 'ή' => 'Ή', + 'ί' => 'Ί', + 'α' => 'Α', + 'β' => 'Β', + 'γ' => 'Γ', + 'δ' => 'Δ', + 'ε' => 'Ε', + 'ζ' => 'Ζ', + 'η' => 'Η', + 'θ' => 'Θ', + 'ι' => 'Ι', + 'κ' => 'Κ', + 'λ' => 'Λ', + 'μ' => 'Μ', + 'ν' => 'Ν', + 'ξ' => 'Ξ', + 'ο' => 'Ο', + 'π' => 'Π', + 'ρ' => 'Ρ', + 'ς' => 'Σ', + 'σ' => 'Σ', + 'τ' => 'Τ', + 'υ' => 'Υ', + 'φ' => 'Φ', + 'χ' => 'Χ', + 'ψ' => 'Ψ', + 'ω' => 'Ω', + 'ϊ' => 'Ϊ', + 'ϋ' => 'Ϋ', + 'ό' => 'Ό', + 'ύ' => 'Ύ', + 'ώ' => 'Ώ', + 'ϐ' => 'Β', + 'ϑ' => 'Θ', + 'ϕ' => 'Φ', + 'ϖ' => 'Π', + 'ϗ' => 'Ϗ', + 'ϙ' => 'Ϙ', + 'ϛ' => 'Ϛ', + 'ϝ' => 'Ϝ', + 'ϟ' => 'Ϟ', + 'ϡ' => 'Ϡ', + 'ϣ' => 'Ϣ', + 'ϥ' => 'Ϥ', + 'ϧ' => 'Ϧ', + 'ϩ' => 'Ϩ', + 'ϫ' => 'Ϫ', + 'ϭ' => 'Ϭ', + 'ϯ' => 'Ϯ', + 'ϰ' => 'Κ', + 'ϱ' => 'Ρ', + 'ϲ' => 'Ϲ', + 'ϳ' => 'Ϳ', + 'ϵ' => 'Ε', + 'ϸ' => 'Ϸ', + 'ϻ' => 'Ϻ', + 'а' => 'А', + 'б' => 'Б', + 'в' => 'В', + 'г' => 'Г', + 'д' => 'Д', + 'е' => 'Е', + 'ж' => 'Ж', + 'з' => 'З', + 'и' => 'И', + 'й' => 'Й', + 'к' => 'К', + 'л' => 'Л', + 'м' => 'М', + 'н' => 'Н', + 'о' => 'О', + 'п' => 'П', + 'р' => 'Р', + 'с' => 'С', + 'т' => 'Т', + 'у' => 'У', + 'ф' => 'Ф', + 'х' => 'Х', + 'ц' => 'Ц', + 'ч' => 'Ч', + 'ш' => 'Ш', + 'щ' => 'Щ', + 'ъ' => 'Ъ', + 'ы' => 'Ы', + 'ь' => 'Ь', + 'э' => 'Э', + 'ю' => 'Ю', + 'я' => 'Я', + 'ѐ' => 'Ѐ', + 'ё' => 'Ё', + 'ђ' => 'Ђ', + 'ѓ' => 'Ѓ', + 'є' => 'Є', + 'ѕ' => 'Ѕ', + 'і' => 'І', + 'ї' => 'Ї', + 'ј' => 'Ј', + 'љ' => 'Љ', + 'њ' => 'Њ', + 'ћ' => 'Ћ', + 'ќ' => 'Ќ', + 'ѝ' => 'Ѝ', + 'ў' => 'Ў', + 'џ' => 'Џ', + 'ѡ' => 'Ѡ', + 'ѣ' => 'Ѣ', + 'ѥ' => 'Ѥ', + 'ѧ' => 'Ѧ', + 'ѩ' => 'Ѩ', + 'ѫ' => 'Ѫ', + 'ѭ' => 'Ѭ', + 'ѯ' => 'Ѯ', + 'ѱ' => 'Ѱ', + 'ѳ' => 'Ѳ', + 'ѵ' => 'Ѵ', + 'ѷ' => 'Ѷ', + 'ѹ' => 'Ѹ', + 'ѻ' => 'Ѻ', + 'ѽ' => 'Ѽ', + 'ѿ' => 'Ѿ', + 'ҁ' => 'Ҁ', + 'ҋ' => 'Ҋ', + 'ҍ' => 'Ҍ', + 'ҏ' => 'Ҏ', + 'ґ' => 'Ґ', + 'ғ' => 'Ғ', + 'ҕ' => 'Ҕ', + 'җ' => 'Җ', + 'ҙ' => 'Ҙ', + 'қ' => 'Қ', + 'ҝ' => 'Ҝ', + 'ҟ' => 'Ҟ', + 'ҡ' => 'Ҡ', + 'ң' => 'Ң', + 'ҥ' => 'Ҥ', + 'ҧ' => 'Ҧ', + 'ҩ' => 'Ҩ', + 'ҫ' => 'Ҫ', + 'ҭ' => 'Ҭ', + 'ү' => 'Ү', + 'ұ' => 'Ұ', + 'ҳ' => 'Ҳ', + 'ҵ' => 'Ҵ', + 'ҷ' => 'Ҷ', + 'ҹ' => 'Ҹ', + 'һ' => 'Һ', + 'ҽ' => 'Ҽ', + 'ҿ' => 'Ҿ', + 'ӂ' => 'Ӂ', + 'ӄ' => 'Ӄ', + 'ӆ' => 'Ӆ', + 'ӈ' => 'Ӈ', + 'ӊ' => 'Ӊ', + 'ӌ' => 'Ӌ', + 'ӎ' => 'Ӎ', + 'ӏ' => 'Ӏ', + 'ӑ' => 'Ӑ', + 'ӓ' => 'Ӓ', + 'ӕ' => 'Ӕ', + 'ӗ' => 'Ӗ', + 'ә' => 'Ә', + 'ӛ' => 'Ӛ', + 'ӝ' => 'Ӝ', + 'ӟ' => 'Ӟ', + 'ӡ' => 'Ӡ', + 'ӣ' => 'Ӣ', + 'ӥ' => 'Ӥ', + 'ӧ' => 'Ӧ', + 'ө' => 'Ө', + 'ӫ' => 'Ӫ', + 'ӭ' => 'Ӭ', + 'ӯ' => 'Ӯ', + 'ӱ' => 'Ӱ', + 'ӳ' => 'Ӳ', + 'ӵ' => 'Ӵ', + 'ӷ' => 'Ӷ', + 'ӹ' => 'Ӹ', + 'ӻ' => 'Ӻ', + 'ӽ' => 'Ӽ', + 'ӿ' => 'Ӿ', + 'ԁ' => 'Ԁ', + 'ԃ' => 'Ԃ', + 'ԅ' => 'Ԅ', + 'ԇ' => 'Ԇ', + 'ԉ' => 'Ԉ', + 'ԋ' => 'Ԋ', + 'ԍ' => 'Ԍ', + 'ԏ' => 'Ԏ', + 'ԑ' => 'Ԑ', + 'ԓ' => 'Ԓ', + 'ԕ' => 'Ԕ', + 'ԗ' => 'Ԗ', + 'ԙ' => 'Ԙ', + 'ԛ' => 'Ԛ', + 'ԝ' => 'Ԝ', + 'ԟ' => 'Ԟ', + 'ԡ' => 'Ԡ', + 'ԣ' => 'Ԣ', + 'ԥ' => 'Ԥ', + 'ԧ' => 'Ԧ', + 'ԩ' => 'Ԩ', + 'ԫ' => 'Ԫ', + 'ԭ' => 'Ԭ', + 'ԯ' => 'Ԯ', + 'ա' => 'Ա', + 'բ' => 'Բ', + 'գ' => 'Գ', + 'դ' => 'Դ', + 'ե' => 'Ե', + 'զ' => 'Զ', + 'է' => 'Է', + 'ը' => 'Ը', + 'թ' => 'Թ', + 'ժ' => 'Ժ', + 'ի' => 'Ի', + 'լ' => 'Լ', + 'խ' => 'Խ', + 'ծ' => 'Ծ', + 'կ' => 'Կ', + 'հ' => 'Հ', + 'ձ' => 'Ձ', + 'ղ' => 'Ղ', + 'ճ' => 'Ճ', + 'մ' => 'Մ', + 'յ' => 'Յ', + 'ն' => 'Ն', + 'շ' => 'Շ', + 'ո' => 'Ո', + 'չ' => 'Չ', + 'պ' => 'Պ', + 'ջ' => 'Ջ', + 'ռ' => 'Ռ', + 'ս' => 'Ս', + 'վ' => 'Վ', + 'տ' => 'Տ', + 'ր' => 'Ր', + 'ց' => 'Ց', + 'ւ' => 'Ւ', + 'փ' => 'Փ', + 'ք' => 'Ք', + 'օ' => 'Օ', + 'ֆ' => 'Ֆ', + 'ა' => 'Ა', + 'ბ' => 'Ბ', + 'გ' => 'Გ', + 'დ' => 'Დ', + 'ე' => 'Ე', + 'ვ' => 'Ვ', + 'ზ' => 'Ზ', + 'თ' => 'Თ', + 'ი' => 'Ი', + 'კ' => 'Კ', + 'ლ' => 'Ლ', + 'მ' => 'Მ', + 'ნ' => 'Ნ', + 'ო' => 'Ო', + 'პ' => 'Პ', + 'ჟ' => 'Ჟ', + 'რ' => 'Რ', + 'ს' => 'Ს', + 'ტ' => 'Ტ', + 'უ' => 'Უ', + 'ფ' => 'Ფ', + 'ქ' => 'Ქ', + 'ღ' => 'Ღ', + 'ყ' => 'Ყ', + 'შ' => 'Შ', + 'ჩ' => 'Ჩ', + 'ც' => 'Ც', + 'ძ' => 'Ძ', + 'წ' => 'Წ', + 'ჭ' => 'Ჭ', + 'ხ' => 'Ხ', + 'ჯ' => 'Ჯ', + 'ჰ' => 'Ჰ', + 'ჱ' => 'Ჱ', + 'ჲ' => 'Ჲ', + 'ჳ' => 'Ჳ', + 'ჴ' => 'Ჴ', + 'ჵ' => 'Ჵ', + 'ჶ' => 'Ჶ', + 'ჷ' => 'Ჷ', + 'ჸ' => 'Ჸ', + 'ჹ' => 'Ჹ', + 'ჺ' => 'Ჺ', + 'ჽ' => 'Ჽ', + 'ჾ' => 'Ჾ', + 'ჿ' => 'Ჿ', + 'ᏸ' => 'Ᏸ', + 'ᏹ' => 'Ᏹ', + 'ᏺ' => 'Ᏺ', + 'ᏻ' => 'Ᏻ', + 'ᏼ' => 'Ᏼ', + 'ᏽ' => 'Ᏽ', + 'ᲀ' => 'В', + 'ᲁ' => 'Д', + 'ᲂ' => 'О', + 'ᲃ' => 'С', + 'ᲄ' => 'Т', + 'ᲅ' => 'Т', + 'ᲆ' => 'Ъ', + 'ᲇ' => 'Ѣ', + 'ᲈ' => 'Ꙋ', + 'ᵹ' => 'Ᵹ', + 'ᵽ' => 'Ᵽ', + 'ᶎ' => 'Ᶎ', + 'ḁ' => 'Ḁ', + 'ḃ' => 'Ḃ', + 'ḅ' => 'Ḅ', + 'ḇ' => 'Ḇ', + 'ḉ' => 'Ḉ', + 'ḋ' => 'Ḋ', + 'ḍ' => 'Ḍ', + 'ḏ' => 'Ḏ', + 'ḑ' => 'Ḑ', + 'ḓ' => 'Ḓ', + 'ḕ' => 'Ḕ', + 'ḗ' => 'Ḗ', + 'ḙ' => 'Ḙ', + 'ḛ' => 'Ḛ', + 'ḝ' => 'Ḝ', + 'ḟ' => 'Ḟ', + 'ḡ' => 'Ḡ', + 'ḣ' => 'Ḣ', + 'ḥ' => 'Ḥ', + 'ḧ' => 'Ḧ', + 'ḩ' => 'Ḩ', + 'ḫ' => 'Ḫ', + 'ḭ' => 'Ḭ', + 'ḯ' => 'Ḯ', + 'ḱ' => 'Ḱ', + 'ḳ' => 'Ḳ', + 'ḵ' => 'Ḵ', + 'ḷ' => 'Ḷ', + 'ḹ' => 'Ḹ', + 'ḻ' => 'Ḻ', + 'ḽ' => 'Ḽ', + 'ḿ' => 'Ḿ', + 'ṁ' => 'Ṁ', + 'ṃ' => 'Ṃ', + 'ṅ' => 'Ṅ', + 'ṇ' => 'Ṇ', + 'ṉ' => 'Ṉ', + 'ṋ' => 'Ṋ', + 'ṍ' => 'Ṍ', + 'ṏ' => 'Ṏ', + 'ṑ' => 'Ṑ', + 'ṓ' => 'Ṓ', + 'ṕ' => 'Ṕ', + 'ṗ' => 'Ṗ', + 'ṙ' => 'Ṙ', + 'ṛ' => 'Ṛ', + 'ṝ' => 'Ṝ', + 'ṟ' => 'Ṟ', + 'ṡ' => 'Ṡ', + 'ṣ' => 'Ṣ', + 'ṥ' => 'Ṥ', + 'ṧ' => 'Ṧ', + 'ṩ' => 'Ṩ', + 'ṫ' => 'Ṫ', + 'ṭ' => 'Ṭ', + 'ṯ' => 'Ṯ', + 'ṱ' => 'Ṱ', + 'ṳ' => 'Ṳ', + 'ṵ' => 'Ṵ', + 'ṷ' => 'Ṷ', + 'ṹ' => 'Ṹ', + 'ṻ' => 'Ṻ', + 'ṽ' => 'Ṽ', + 'ṿ' => 'Ṿ', + 'ẁ' => 'Ẁ', + 'ẃ' => 'Ẃ', + 'ẅ' => 'Ẅ', + 'ẇ' => 'Ẇ', + 'ẉ' => 'Ẉ', + 'ẋ' => 'Ẋ', + 'ẍ' => 'Ẍ', + 'ẏ' => 'Ẏ', + 'ẑ' => 'Ẑ', + 'ẓ' => 'Ẓ', + 'ẕ' => 'Ẕ', + 'ẛ' => 'Ṡ', + 'ạ' => 'Ạ', + 'ả' => 'Ả', + 'ấ' => 'Ấ', + 'ầ' => 'Ầ', + 'ẩ' => 'Ẩ', + 'ẫ' => 'Ẫ', + 'ậ' => 'Ậ', + 'ắ' => 'Ắ', + 'ằ' => 'Ằ', + 'ẳ' => 'Ẳ', + 'ẵ' => 'Ẵ', + 'ặ' => 'Ặ', + 'ẹ' => 'Ẹ', + 'ẻ' => 'Ẻ', + 'ẽ' => 'Ẽ', + 'ế' => 'Ế', + 'ề' => 'Ề', + 'ể' => 'Ể', + 'ễ' => 'Ễ', + 'ệ' => 'Ệ', + 'ỉ' => 'Ỉ', + 'ị' => 'Ị', + 'ọ' => 'Ọ', + 'ỏ' => 'Ỏ', + 'ố' => 'Ố', + 'ồ' => 'Ồ', + 'ổ' => 'Ổ', + 'ỗ' => 'Ỗ', + 'ộ' => 'Ộ', + 'ớ' => 'Ớ', + 'ờ' => 'Ờ', + 'ở' => 'Ở', + 'ỡ' => 'Ỡ', + 'ợ' => 'Ợ', + 'ụ' => 'Ụ', + 'ủ' => 'Ủ', + 'ứ' => 'Ứ', + 'ừ' => 'Ừ', + 'ử' => 'Ử', + 'ữ' => 'Ữ', + 'ự' => 'Ự', + 'ỳ' => 'Ỳ', + 'ỵ' => 'Ỵ', + 'ỷ' => 'Ỷ', + 'ỹ' => 'Ỹ', + 'ỻ' => 'Ỻ', + 'ỽ' => 'Ỽ', + 'ỿ' => 'Ỿ', + 'ἀ' => 'Ἀ', + 'ἁ' => 'Ἁ', + 'ἂ' => 'Ἂ', + 'ἃ' => 'Ἃ', + 'ἄ' => 'Ἄ', + 'ἅ' => 'Ἅ', + 'ἆ' => 'Ἆ', + 'ἇ' => 'Ἇ', + 'ἐ' => 'Ἐ', + 'ἑ' => 'Ἑ', + 'ἒ' => 'Ἒ', + 'ἓ' => 'Ἓ', + 'ἔ' => 'Ἔ', + 'ἕ' => 'Ἕ', + 'ἠ' => 'Ἠ', + 'ἡ' => 'Ἡ', + 'ἢ' => 'Ἢ', + 'ἣ' => 'Ἣ', + 'ἤ' => 'Ἤ', + 'ἥ' => 'Ἥ', + 'ἦ' => 'Ἦ', + 'ἧ' => 'Ἧ', + 'ἰ' => 'Ἰ', + 'ἱ' => 'Ἱ', + 'ἲ' => 'Ἲ', + 'ἳ' => 'Ἳ', + 'ἴ' => 'Ἴ', + 'ἵ' => 'Ἵ', + 'ἶ' => 'Ἶ', + 'ἷ' => 'Ἷ', + 'ὀ' => 'Ὀ', + 'ὁ' => 'Ὁ', + 'ὂ' => 'Ὂ', + 'ὃ' => 'Ὃ', + 'ὄ' => 'Ὄ', + 'ὅ' => 'Ὅ', + 'ὑ' => 'Ὑ', + 'ὓ' => 'Ὓ', + 'ὕ' => 'Ὕ', + 'ὗ' => 'Ὗ', + 'ὠ' => 'Ὠ', + 'ὡ' => 'Ὡ', + 'ὢ' => 'Ὢ', + 'ὣ' => 'Ὣ', + 'ὤ' => 'Ὤ', + 'ὥ' => 'Ὥ', + 'ὦ' => 'Ὦ', + 'ὧ' => 'Ὧ', + 'ὰ' => 'Ὰ', + 'ά' => 'Ά', + 'ὲ' => 'Ὲ', + 'έ' => 'Έ', + 'ὴ' => 'Ὴ', + 'ή' => 'Ή', + 'ὶ' => 'Ὶ', + 'ί' => 'Ί', + 'ὸ' => 'Ὸ', + 'ό' => 'Ό', + 'ὺ' => 'Ὺ', + 'ύ' => 'Ύ', + 'ὼ' => 'Ὼ', + 'ώ' => 'Ώ', + 'ᾀ' => 'ἈΙ', + 'ᾁ' => 'ἉΙ', + 'ᾂ' => 'ἊΙ', + 'ᾃ' => 'ἋΙ', + 'ᾄ' => 'ἌΙ', + 'ᾅ' => 'ἍΙ', + 'ᾆ' => 'ἎΙ', + 'ᾇ' => 'ἏΙ', + 'ᾐ' => 'ἨΙ', + 'ᾑ' => 'ἩΙ', + 'ᾒ' => 'ἪΙ', + 'ᾓ' => 'ἫΙ', + 'ᾔ' => 'ἬΙ', + 'ᾕ' => 'ἭΙ', + 'ᾖ' => 'ἮΙ', + 'ᾗ' => 'ἯΙ', + 'ᾠ' => 'ὨΙ', + 'ᾡ' => 'ὩΙ', + 'ᾢ' => 'ὪΙ', + 'ᾣ' => 'ὫΙ', + 'ᾤ' => 'ὬΙ', + 'ᾥ' => 'ὭΙ', + 'ᾦ' => 'ὮΙ', + 'ᾧ' => 'ὯΙ', + 'ᾰ' => 'Ᾰ', + 'ᾱ' => 'Ᾱ', + 'ᾳ' => 'ΑΙ', + 'ι' => 'Ι', + 'ῃ' => 'ΗΙ', + 'ῐ' => 'Ῐ', + 'ῑ' => 'Ῑ', + 'ῠ' => 'Ῠ', + 'ῡ' => 'Ῡ', + 'ῥ' => 'Ῥ', + 'ῳ' => 'ΩΙ', + 'ⅎ' => 'Ⅎ', + 'ⅰ' => 'Ⅰ', + 'ⅱ' => 'Ⅱ', + 'ⅲ' => 'Ⅲ', + 'ⅳ' => 'Ⅳ', + 'ⅴ' => 'Ⅴ', + 'ⅵ' => 'Ⅵ', + 'ⅶ' => 'Ⅶ', + 'ⅷ' => 'Ⅷ', + 'ⅸ' => 'Ⅸ', + 'ⅹ' => 'Ⅹ', + 'ⅺ' => 'Ⅺ', + 'ⅻ' => 'Ⅻ', + 'ⅼ' => 'Ⅼ', + 'ⅽ' => 'Ⅽ', + 'ⅾ' => 'Ⅾ', + 'ⅿ' => 'Ⅿ', + 'ↄ' => 'Ↄ', + 'ⓐ' => 'Ⓐ', + 'ⓑ' => 'Ⓑ', + 'ⓒ' => 'Ⓒ', + 'ⓓ' => 'Ⓓ', + 'ⓔ' => 'Ⓔ', + 'ⓕ' => 'Ⓕ', + 'ⓖ' => 'Ⓖ', + 'ⓗ' => 'Ⓗ', + 'ⓘ' => 'Ⓘ', + 'ⓙ' => 'Ⓙ', + 'ⓚ' => 'Ⓚ', + 'ⓛ' => 'Ⓛ', + 'ⓜ' => 'Ⓜ', + 'ⓝ' => 'Ⓝ', + 'ⓞ' => 'Ⓞ', + 'ⓟ' => 'Ⓟ', + 'ⓠ' => 'Ⓠ', + 'ⓡ' => 'Ⓡ', + 'ⓢ' => 'Ⓢ', + 'ⓣ' => 'Ⓣ', + 'ⓤ' => 'Ⓤ', + 'ⓥ' => 'Ⓥ', + 'ⓦ' => 'Ⓦ', + 'ⓧ' => 'Ⓧ', + 'ⓨ' => 'Ⓨ', + 'ⓩ' => 'Ⓩ', + 'ⰰ' => 'Ⰰ', + 'ⰱ' => 'Ⰱ', + 'ⰲ' => 'Ⰲ', + 'ⰳ' => 'Ⰳ', + 'ⰴ' => 'Ⰴ', + 'ⰵ' => 'Ⰵ', + 'ⰶ' => 'Ⰶ', + 'ⰷ' => 'Ⰷ', + 'ⰸ' => 'Ⰸ', + 'ⰹ' => 'Ⰹ', + 'ⰺ' => 'Ⰺ', + 'ⰻ' => 'Ⰻ', + 'ⰼ' => 'Ⰼ', + 'ⰽ' => 'Ⰽ', + 'ⰾ' => 'Ⰾ', + 'ⰿ' => 'Ⰿ', + 'ⱀ' => 'Ⱀ', + 'ⱁ' => 'Ⱁ', + 'ⱂ' => 'Ⱂ', + 'ⱃ' => 'Ⱃ', + 'ⱄ' => 'Ⱄ', + 'ⱅ' => 'Ⱅ', + 'ⱆ' => 'Ⱆ', + 'ⱇ' => 'Ⱇ', + 'ⱈ' => 'Ⱈ', + 'ⱉ' => 'Ⱉ', + 'ⱊ' => 'Ⱊ', + 'ⱋ' => 'Ⱋ', + 'ⱌ' => 'Ⱌ', + 'ⱍ' => 'Ⱍ', + 'ⱎ' => 'Ⱎ', + 'ⱏ' => 'Ⱏ', + 'ⱐ' => 'Ⱐ', + 'ⱑ' => 'Ⱑ', + 'ⱒ' => 'Ⱒ', + 'ⱓ' => 'Ⱓ', + 'ⱔ' => 'Ⱔ', + 'ⱕ' => 'Ⱕ', + 'ⱖ' => 'Ⱖ', + 'ⱗ' => 'Ⱗ', + 'ⱘ' => 'Ⱘ', + 'ⱙ' => 'Ⱙ', + 'ⱚ' => 'Ⱚ', + 'ⱛ' => 'Ⱛ', + 'ⱜ' => 'Ⱜ', + 'ⱝ' => 'Ⱝ', + 'ⱞ' => 'Ⱞ', + 'ⱡ' => 'Ⱡ', + 'ⱥ' => 'Ⱥ', + 'ⱦ' => 'Ⱦ', + 'ⱨ' => 'Ⱨ', + 'ⱪ' => 'Ⱪ', + 'ⱬ' => 'Ⱬ', + 'ⱳ' => 'Ⱳ', + 'ⱶ' => 'Ⱶ', + 'ⲁ' => 'Ⲁ', + 'ⲃ' => 'Ⲃ', + 'ⲅ' => 'Ⲅ', + 'ⲇ' => 'Ⲇ', + 'ⲉ' => 'Ⲉ', + 'ⲋ' => 'Ⲋ', + 'ⲍ' => 'Ⲍ', + 'ⲏ' => 'Ⲏ', + 'ⲑ' => 'Ⲑ', + 'ⲓ' => 'Ⲓ', + 'ⲕ' => 'Ⲕ', + 'ⲗ' => 'Ⲗ', + 'ⲙ' => 'Ⲙ', + 'ⲛ' => 'Ⲛ', + 'ⲝ' => 'Ⲝ', + 'ⲟ' => 'Ⲟ', + 'ⲡ' => 'Ⲡ', + 'ⲣ' => 'Ⲣ', + 'ⲥ' => 'Ⲥ', + 'ⲧ' => 'Ⲧ', + 'ⲩ' => 'Ⲩ', + 'ⲫ' => 'Ⲫ', + 'ⲭ' => 'Ⲭ', + 'ⲯ' => 'Ⲯ', + 'ⲱ' => 'Ⲱ', + 'ⲳ' => 'Ⲳ', + 'ⲵ' => 'Ⲵ', + 'ⲷ' => 'Ⲷ', + 'ⲹ' => 'Ⲹ', + 'ⲻ' => 'Ⲻ', + 'ⲽ' => 'Ⲽ', + 'ⲿ' => 'Ⲿ', + 'ⳁ' => 'Ⳁ', + 'ⳃ' => 'Ⳃ', + 'ⳅ' => 'Ⳅ', + 'ⳇ' => 'Ⳇ', + 'ⳉ' => 'Ⳉ', + 'ⳋ' => 'Ⳋ', + 'ⳍ' => 'Ⳍ', + 'ⳏ' => 'Ⳏ', + 'ⳑ' => 'Ⳑ', + 'ⳓ' => 'Ⳓ', + 'ⳕ' => 'Ⳕ', + 'ⳗ' => 'Ⳗ', + 'ⳙ' => 'Ⳙ', + 'ⳛ' => 'Ⳛ', + 'ⳝ' => 'Ⳝ', + 'ⳟ' => 'Ⳟ', + 'ⳡ' => 'Ⳡ', + 'ⳣ' => 'Ⳣ', + 'ⳬ' => 'Ⳬ', + 'ⳮ' => 'Ⳮ', + 'ⳳ' => 'Ⳳ', + 'ⴀ' => 'Ⴀ', + 'ⴁ' => 'Ⴁ', + 'ⴂ' => 'Ⴂ', + 'ⴃ' => 'Ⴃ', + 'ⴄ' => 'Ⴄ', + 'ⴅ' => 'Ⴅ', + 'ⴆ' => 'Ⴆ', + 'ⴇ' => 'Ⴇ', + 'ⴈ' => 'Ⴈ', + 'ⴉ' => 'Ⴉ', + 'ⴊ' => 'Ⴊ', + 'ⴋ' => 'Ⴋ', + 'ⴌ' => 'Ⴌ', + 'ⴍ' => 'Ⴍ', + 'ⴎ' => 'Ⴎ', + 'ⴏ' => 'Ⴏ', + 'ⴐ' => 'Ⴐ', + 'ⴑ' => 'Ⴑ', + 'ⴒ' => 'Ⴒ', + 'ⴓ' => 'Ⴓ', + 'ⴔ' => 'Ⴔ', + 'ⴕ' => 'Ⴕ', + 'ⴖ' => 'Ⴖ', + 'ⴗ' => 'Ⴗ', + 'ⴘ' => 'Ⴘ', + 'ⴙ' => 'Ⴙ', + 'ⴚ' => 'Ⴚ', + 'ⴛ' => 'Ⴛ', + 'ⴜ' => 'Ⴜ', + 'ⴝ' => 'Ⴝ', + 'ⴞ' => 'Ⴞ', + 'ⴟ' => 'Ⴟ', + 'ⴠ' => 'Ⴠ', + 'ⴡ' => 'Ⴡ', + 'ⴢ' => 'Ⴢ', + 'ⴣ' => 'Ⴣ', + 'ⴤ' => 'Ⴤ', + 'ⴥ' => 'Ⴥ', + 'ⴧ' => 'Ⴧ', + 'ⴭ' => 'Ⴭ', + 'ꙁ' => 'Ꙁ', + 'ꙃ' => 'Ꙃ', + 'ꙅ' => 'Ꙅ', + 'ꙇ' => 'Ꙇ', + 'ꙉ' => 'Ꙉ', + 'ꙋ' => 'Ꙋ', + 'ꙍ' => 'Ꙍ', + 'ꙏ' => 'Ꙏ', + 'ꙑ' => 'Ꙑ', + 'ꙓ' => 'Ꙓ', + 'ꙕ' => 'Ꙕ', + 'ꙗ' => 'Ꙗ', + 'ꙙ' => 'Ꙙ', + 'ꙛ' => 'Ꙛ', + 'ꙝ' => 'Ꙝ', + 'ꙟ' => 'Ꙟ', + 'ꙡ' => 'Ꙡ', + 'ꙣ' => 'Ꙣ', + 'ꙥ' => 'Ꙥ', + 'ꙧ' => 'Ꙧ', + 'ꙩ' => 'Ꙩ', + 'ꙫ' => 'Ꙫ', + 'ꙭ' => 'Ꙭ', + 'ꚁ' => 'Ꚁ', + 'ꚃ' => 'Ꚃ', + 'ꚅ' => 'Ꚅ', + 'ꚇ' => 'Ꚇ', + 'ꚉ' => 'Ꚉ', + 'ꚋ' => 'Ꚋ', + 'ꚍ' => 'Ꚍ', + 'ꚏ' => 'Ꚏ', + 'ꚑ' => 'Ꚑ', + 'ꚓ' => 'Ꚓ', + 'ꚕ' => 'Ꚕ', + 'ꚗ' => 'Ꚗ', + 'ꚙ' => 'Ꚙ', + 'ꚛ' => 'Ꚛ', + 'ꜣ' => 'Ꜣ', + 'ꜥ' => 'Ꜥ', + 'ꜧ' => 'Ꜧ', + 'ꜩ' => 'Ꜩ', + 'ꜫ' => 'Ꜫ', + 'ꜭ' => 'Ꜭ', + 'ꜯ' => 'Ꜯ', + 'ꜳ' => 'Ꜳ', + 'ꜵ' => 'Ꜵ', + 'ꜷ' => 'Ꜷ', + 'ꜹ' => 'Ꜹ', + 'ꜻ' => 'Ꜻ', + 'ꜽ' => 'Ꜽ', + 'ꜿ' => 'Ꜿ', + 'ꝁ' => 'Ꝁ', + 'ꝃ' => 'Ꝃ', + 'ꝅ' => 'Ꝅ', + 'ꝇ' => 'Ꝇ', + 'ꝉ' => 'Ꝉ', + 'ꝋ' => 'Ꝋ', + 'ꝍ' => 'Ꝍ', + 'ꝏ' => 'Ꝏ', + 'ꝑ' => 'Ꝑ', + 'ꝓ' => 'Ꝓ', + 'ꝕ' => 'Ꝕ', + 'ꝗ' => 'Ꝗ', + 'ꝙ' => 'Ꝙ', + 'ꝛ' => 'Ꝛ', + 'ꝝ' => 'Ꝝ', + 'ꝟ' => 'Ꝟ', + 'ꝡ' => 'Ꝡ', + 'ꝣ' => 'Ꝣ', + 'ꝥ' => 'Ꝥ', + 'ꝧ' => 'Ꝧ', + 'ꝩ' => 'Ꝩ', + 'ꝫ' => 'Ꝫ', + 'ꝭ' => 'Ꝭ', + 'ꝯ' => 'Ꝯ', + 'ꝺ' => 'Ꝺ', + 'ꝼ' => 'Ꝼ', + 'ꝿ' => 'Ꝿ', + 'ꞁ' => 'Ꞁ', + 'ꞃ' => 'Ꞃ', + 'ꞅ' => 'Ꞅ', + 'ꞇ' => 'Ꞇ', + 'ꞌ' => 'Ꞌ', + 'ꞑ' => 'Ꞑ', + 'ꞓ' => 'Ꞓ', + 'ꞔ' => 'Ꞔ', + 'ꞗ' => 'Ꞗ', + 'ꞙ' => 'Ꞙ', + 'ꞛ' => 'Ꞛ', + 'ꞝ' => 'Ꞝ', + 'ꞟ' => 'Ꞟ', + 'ꞡ' => 'Ꞡ', + 'ꞣ' => 'Ꞣ', + 'ꞥ' => 'Ꞥ', + 'ꞧ' => 'Ꞧ', + 'ꞩ' => 'Ꞩ', + 'ꞵ' => 'Ꞵ', + 'ꞷ' => 'Ꞷ', + 'ꞹ' => 'Ꞹ', + 'ꞻ' => 'Ꞻ', + 'ꞽ' => 'Ꞽ', + 'ꞿ' => 'Ꞿ', + 'ꟃ' => 'Ꟃ', + 'ꟈ' => 'Ꟈ', + 'ꟊ' => 'Ꟊ', + 'ꟶ' => 'Ꟶ', + 'ꭓ' => 'Ꭓ', + 'ꭰ' => 'Ꭰ', + 'ꭱ' => 'Ꭱ', + 'ꭲ' => 'Ꭲ', + 'ꭳ' => 'Ꭳ', + 'ꭴ' => 'Ꭴ', + 'ꭵ' => 'Ꭵ', + 'ꭶ' => 'Ꭶ', + 'ꭷ' => 'Ꭷ', + 'ꭸ' => 'Ꭸ', + 'ꭹ' => 'Ꭹ', + 'ꭺ' => 'Ꭺ', + 'ꭻ' => 'Ꭻ', + 'ꭼ' => 'Ꭼ', + 'ꭽ' => 'Ꭽ', + 'ꭾ' => 'Ꭾ', + 'ꭿ' => 'Ꭿ', + 'ꮀ' => 'Ꮀ', + 'ꮁ' => 'Ꮁ', + 'ꮂ' => 'Ꮂ', + 'ꮃ' => 'Ꮃ', + 'ꮄ' => 'Ꮄ', + 'ꮅ' => 'Ꮅ', + 'ꮆ' => 'Ꮆ', + 'ꮇ' => 'Ꮇ', + 'ꮈ' => 'Ꮈ', + 'ꮉ' => 'Ꮉ', + 'ꮊ' => 'Ꮊ', + 'ꮋ' => 'Ꮋ', + 'ꮌ' => 'Ꮌ', + 'ꮍ' => 'Ꮍ', + 'ꮎ' => 'Ꮎ', + 'ꮏ' => 'Ꮏ', + 'ꮐ' => 'Ꮐ', + 'ꮑ' => 'Ꮑ', + 'ꮒ' => 'Ꮒ', + 'ꮓ' => 'Ꮓ', + 'ꮔ' => 'Ꮔ', + 'ꮕ' => 'Ꮕ', + 'ꮖ' => 'Ꮖ', + 'ꮗ' => 'Ꮗ', + 'ꮘ' => 'Ꮘ', + 'ꮙ' => 'Ꮙ', + 'ꮚ' => 'Ꮚ', + 'ꮛ' => 'Ꮛ', + 'ꮜ' => 'Ꮜ', + 'ꮝ' => 'Ꮝ', + 'ꮞ' => 'Ꮞ', + 'ꮟ' => 'Ꮟ', + 'ꮠ' => 'Ꮠ', + 'ꮡ' => 'Ꮡ', + 'ꮢ' => 'Ꮢ', + 'ꮣ' => 'Ꮣ', + 'ꮤ' => 'Ꮤ', + 'ꮥ' => 'Ꮥ', + 'ꮦ' => 'Ꮦ', + 'ꮧ' => 'Ꮧ', + 'ꮨ' => 'Ꮨ', + 'ꮩ' => 'Ꮩ', + 'ꮪ' => 'Ꮪ', + 'ꮫ' => 'Ꮫ', + 'ꮬ' => 'Ꮬ', + 'ꮭ' => 'Ꮭ', + 'ꮮ' => 'Ꮮ', + 'ꮯ' => 'Ꮯ', + 'ꮰ' => 'Ꮰ', + 'ꮱ' => 'Ꮱ', + 'ꮲ' => 'Ꮲ', + 'ꮳ' => 'Ꮳ', + 'ꮴ' => 'Ꮴ', + 'ꮵ' => 'Ꮵ', + 'ꮶ' => 'Ꮶ', + 'ꮷ' => 'Ꮷ', + 'ꮸ' => 'Ꮸ', + 'ꮹ' => 'Ꮹ', + 'ꮺ' => 'Ꮺ', + 'ꮻ' => 'Ꮻ', + 'ꮼ' => 'Ꮼ', + 'ꮽ' => 'Ꮽ', + 'ꮾ' => 'Ꮾ', + 'ꮿ' => 'Ꮿ', + 'a' => 'A', + 'b' => 'B', + 'c' => 'C', + 'd' => 'D', + 'e' => 'E', + 'f' => 'F', + 'g' => 'G', + 'h' => 'H', + 'i' => 'I', + 'j' => 'J', + 'k' => 'K', + 'l' => 'L', + 'm' => 'M', + 'n' => 'N', + 'o' => 'O', + 'p' => 'P', + 'q' => 'Q', + 'r' => 'R', + 's' => 'S', + 't' => 'T', + 'u' => 'U', + 'v' => 'V', + 'w' => 'W', + 'x' => 'X', + 'y' => 'Y', + 'z' => 'Z', + '𐐨' => '𐐀', + '𐐩' => '𐐁', + '𐐪' => '𐐂', + '𐐫' => '𐐃', + '𐐬' => '𐐄', + '𐐭' => '𐐅', + '𐐮' => '𐐆', + '𐐯' => '𐐇', + '𐐰' => '𐐈', + '𐐱' => '𐐉', + '𐐲' => '𐐊', + '𐐳' => '𐐋', + '𐐴' => '𐐌', + '𐐵' => '𐐍', + '𐐶' => '𐐎', + '𐐷' => '𐐏', + '𐐸' => '𐐐', + '𐐹' => '𐐑', + '𐐺' => '𐐒', + '𐐻' => '𐐓', + '𐐼' => '𐐔', + '𐐽' => '𐐕', + '𐐾' => '𐐖', + '𐐿' => '𐐗', + '𐑀' => '𐐘', + '𐑁' => '𐐙', + '𐑂' => '𐐚', + '𐑃' => '𐐛', + '𐑄' => '𐐜', + '𐑅' => '𐐝', + '𐑆' => '𐐞', + '𐑇' => '𐐟', + '𐑈' => '𐐠', + '𐑉' => '𐐡', + '𐑊' => '𐐢', + '𐑋' => '𐐣', + '𐑌' => '𐐤', + '𐑍' => '𐐥', + '𐑎' => '𐐦', + '𐑏' => '𐐧', + '𐓘' => '𐒰', + '𐓙' => '𐒱', + '𐓚' => '𐒲', + '𐓛' => '𐒳', + '𐓜' => '𐒴', + '𐓝' => '𐒵', + '𐓞' => '𐒶', + '𐓟' => '𐒷', + '𐓠' => '𐒸', + '𐓡' => '𐒹', + '𐓢' => '𐒺', + '𐓣' => '𐒻', + '𐓤' => '𐒼', + '𐓥' => '𐒽', + '𐓦' => '𐒾', + '𐓧' => '𐒿', + '𐓨' => '𐓀', + '𐓩' => '𐓁', + '𐓪' => '𐓂', + '𐓫' => '𐓃', + '𐓬' => '𐓄', + '𐓭' => '𐓅', + '𐓮' => '𐓆', + '𐓯' => '𐓇', + '𐓰' => '𐓈', + '𐓱' => '𐓉', + '𐓲' => '𐓊', + '𐓳' => '𐓋', + '𐓴' => '𐓌', + '𐓵' => '𐓍', + '𐓶' => '𐓎', + '𐓷' => '𐓏', + '𐓸' => '𐓐', + '𐓹' => '𐓑', + '𐓺' => '𐓒', + '𐓻' => '𐓓', + '𐳀' => '𐲀', + '𐳁' => '𐲁', + '𐳂' => '𐲂', + '𐳃' => '𐲃', + '𐳄' => '𐲄', + '𐳅' => '𐲅', + '𐳆' => '𐲆', + '𐳇' => '𐲇', + '𐳈' => '𐲈', + '𐳉' => '𐲉', + '𐳊' => '𐲊', + '𐳋' => '𐲋', + '𐳌' => '𐲌', + '𐳍' => '𐲍', + '𐳎' => '𐲎', + '𐳏' => '𐲏', + '𐳐' => '𐲐', + '𐳑' => '𐲑', + '𐳒' => '𐲒', + '𐳓' => '𐲓', + '𐳔' => '𐲔', + '𐳕' => '𐲕', + '𐳖' => '𐲖', + '𐳗' => '𐲗', + '𐳘' => '𐲘', + '𐳙' => '𐲙', + '𐳚' => '𐲚', + '𐳛' => '𐲛', + '𐳜' => '𐲜', + '𐳝' => '𐲝', + '𐳞' => '𐲞', + '𐳟' => '𐲟', + '𐳠' => '𐲠', + '𐳡' => '𐲡', + '𐳢' => '𐲢', + '𐳣' => '𐲣', + '𐳤' => '𐲤', + '𐳥' => '𐲥', + '𐳦' => '𐲦', + '𐳧' => '𐲧', + '𐳨' => '𐲨', + '𐳩' => '𐲩', + '𐳪' => '𐲪', + '𐳫' => '𐲫', + '𐳬' => '𐲬', + '𐳭' => '𐲭', + '𐳮' => '𐲮', + '𐳯' => '𐲯', + '𐳰' => '𐲰', + '𐳱' => '𐲱', + '𐳲' => '𐲲', + '𑣀' => '𑢠', + '𑣁' => '𑢡', + '𑣂' => '𑢢', + '𑣃' => '𑢣', + '𑣄' => '𑢤', + '𑣅' => '𑢥', + '𑣆' => '𑢦', + '𑣇' => '𑢧', + '𑣈' => '𑢨', + '𑣉' => '𑢩', + '𑣊' => '𑢪', + '𑣋' => '𑢫', + '𑣌' => '𑢬', + '𑣍' => '𑢭', + '𑣎' => '𑢮', + '𑣏' => '𑢯', + '𑣐' => '𑢰', + '𑣑' => '𑢱', + '𑣒' => '𑢲', + '𑣓' => '𑢳', + '𑣔' => '𑢴', + '𑣕' => '𑢵', + '𑣖' => '𑢶', + '𑣗' => '𑢷', + '𑣘' => '𑢸', + '𑣙' => '𑢹', + '𑣚' => '𑢺', + '𑣛' => '𑢻', + '𑣜' => '𑢼', + '𑣝' => '𑢽', + '𑣞' => '𑢾', + '𑣟' => '𑢿', + '𖹠' => '𖹀', + '𖹡' => '𖹁', + '𖹢' => '𖹂', + '𖹣' => '𖹃', + '𖹤' => '𖹄', + '𖹥' => '𖹅', + '𖹦' => '𖹆', + '𖹧' => '𖹇', + '𖹨' => '𖹈', + '𖹩' => '𖹉', + '𖹪' => '𖹊', + '𖹫' => '𖹋', + '𖹬' => '𖹌', + '𖹭' => '𖹍', + '𖹮' => '𖹎', + '𖹯' => '𖹏', + '𖹰' => '𖹐', + '𖹱' => '𖹑', + '𖹲' => '𖹒', + '𖹳' => '𖹓', + '𖹴' => '𖹔', + '𖹵' => '𖹕', + '𖹶' => '𖹖', + '𖹷' => '𖹗', + '𖹸' => '𖹘', + '𖹹' => '𖹙', + '𖹺' => '𖹚', + '𖹻' => '𖹛', + '𖹼' => '𖹜', + '𖹽' => '𖹝', + '𖹾' => '𖹞', + '𖹿' => '𖹟', + '𞤢' => '𞤀', + '𞤣' => '𞤁', + '𞤤' => '𞤂', + '𞤥' => '𞤃', + '𞤦' => '𞤄', + '𞤧' => '𞤅', + '𞤨' => '𞤆', + '𞤩' => '𞤇', + '𞤪' => '𞤈', + '𞤫' => '𞤉', + '𞤬' => '𞤊', + '𞤭' => '𞤋', + '𞤮' => '𞤌', + '𞤯' => '𞤍', + '𞤰' => '𞤎', + '𞤱' => '𞤏', + '𞤲' => '𞤐', + '𞤳' => '𞤑', + '𞤴' => '𞤒', + '𞤵' => '𞤓', + '𞤶' => '𞤔', + '𞤷' => '𞤕', + '𞤸' => '𞤖', + '𞤹' => '𞤗', + '𞤺' => '𞤘', + '𞤻' => '𞤙', + '𞤼' => '𞤚', + '𞤽' => '𞤛', + '𞤾' => '𞤜', + '𞤿' => '𞤝', + '𞥀' => '𞤞', + '𞥁' => '𞤟', + '𞥂' => '𞤠', + '𞥃' => '𞤡', + 'ß' => 'SS', + 'ff' => 'FF', + 'fi' => 'FI', + 'fl' => 'FL', + 'ffi' => 'FFI', + 'ffl' => 'FFL', + 'ſt' => 'ST', + 'st' => 'ST', + 'և' => 'ԵՒ', + 'ﬓ' => 'ՄՆ', + 'ﬔ' => 'ՄԵ', + 'ﬕ' => 'ՄԻ', + 'ﬖ' => 'ՎՆ', + 'ﬗ' => 'ՄԽ', + 'ʼn' => 'ʼN', + 'ΐ' => 'Ϊ́', + 'ΰ' => 'Ϋ́', + 'ǰ' => 'J̌', + 'ẖ' => 'H̱', + 'ẗ' => 'T̈', + 'ẘ' => 'W̊', + 'ẙ' => 'Y̊', + 'ẚ' => 'Aʾ', + 'ὐ' => 'Υ̓', + 'ὒ' => 'Υ̓̀', + 'ὔ' => 'Υ̓́', + 'ὖ' => 'Υ̓͂', + 'ᾶ' => 'Α͂', + 'ῆ' => 'Η͂', + 'ῒ' => 'Ϊ̀', + 'ΐ' => 'Ϊ́', + 'ῖ' => 'Ι͂', + 'ῗ' => 'Ϊ͂', + 'ῢ' => 'Ϋ̀', + 'ΰ' => 'Ϋ́', + 'ῤ' => 'Ρ̓', + 'ῦ' => 'Υ͂', + 'ῧ' => 'Ϋ͂', + 'ῶ' => 'Ω͂', + 'ᾈ' => 'ἈΙ', + 'ᾉ' => 'ἉΙ', + 'ᾊ' => 'ἊΙ', + 'ᾋ' => 'ἋΙ', + 'ᾌ' => 'ἌΙ', + 'ᾍ' => 'ἍΙ', + 'ᾎ' => 'ἎΙ', + 'ᾏ' => 'ἏΙ', + 'ᾘ' => 'ἨΙ', + 'ᾙ' => 'ἩΙ', + 'ᾚ' => 'ἪΙ', + 'ᾛ' => 'ἫΙ', + 'ᾜ' => 'ἬΙ', + 'ᾝ' => 'ἭΙ', + 'ᾞ' => 'ἮΙ', + 'ᾟ' => 'ἯΙ', + 'ᾨ' => 'ὨΙ', + 'ᾩ' => 'ὩΙ', + 'ᾪ' => 'ὪΙ', + 'ᾫ' => 'ὫΙ', + 'ᾬ' => 'ὬΙ', + 'ᾭ' => 'ὭΙ', + 'ᾮ' => 'ὮΙ', + 'ᾯ' => 'ὯΙ', + 'ᾼ' => 'ΑΙ', + 'ῌ' => 'ΗΙ', + 'ῼ' => 'ΩΙ', + 'ᾲ' => 'ᾺΙ', + 'ᾴ' => 'ΆΙ', + 'ῂ' => 'ῊΙ', + 'ῄ' => 'ΉΙ', + 'ῲ' => 'ῺΙ', + 'ῴ' => 'ΏΙ', + 'ᾷ' => 'Α͂Ι', + 'ῇ' => 'Η͂Ι', + 'ῷ' => 'Ω͂Ι', +); diff --git a/data/vendor/symfony/polyfill-mbstring/bootstrap.php b/data/vendor/symfony/polyfill-mbstring/bootstrap.php new file mode 100644 index 0000000..1fedd1f --- /dev/null +++ b/data/vendor/symfony/polyfill-mbstring/bootstrap.php @@ -0,0 +1,147 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Mbstring as p; + +if (\PHP_VERSION_ID >= 80000) { + return require __DIR__.'/bootstrap80.php'; +} + +if (!function_exists('mb_convert_encoding')) { + function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); } +} +if (!function_exists('mb_decode_mimeheader')) { + function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); } +} +if (!function_exists('mb_encode_mimeheader')) { + function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = "\r\n", $indent = 0) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); } +} +if (!function_exists('mb_decode_numericentity')) { + function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); } +} +if (!function_exists('mb_encode_numericentity')) { + function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); } +} +if (!function_exists('mb_convert_case')) { + function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); } +} +if (!function_exists('mb_internal_encoding')) { + function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); } +} +if (!function_exists('mb_language')) { + function mb_language($language = null) { return p\Mbstring::mb_language($language); } +} +if (!function_exists('mb_list_encodings')) { + function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); } +} +if (!function_exists('mb_encoding_aliases')) { + function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); } +} +if (!function_exists('mb_check_encoding')) { + function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); } +} +if (!function_exists('mb_detect_encoding')) { + function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); } +} +if (!function_exists('mb_detect_order')) { + function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); } +} +if (!function_exists('mb_parse_str')) { + function mb_parse_str($string, &$result = []) { parse_str($string, $result); return (bool) $result; } +} +if (!function_exists('mb_strlen')) { + function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); } +} +if (!function_exists('mb_strpos')) { + function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_strtolower')) { + function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); } +} +if (!function_exists('mb_strtoupper')) { + function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); } +} +if (!function_exists('mb_substitute_character')) { + function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); } +} +if (!function_exists('mb_substr')) { + function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); } +} +if (!function_exists('mb_stripos')) { + function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_stristr')) { + function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_strrchr')) { + function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_strrichr')) { + function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_strripos')) { + function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_strrpos')) { + function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_strstr')) { + function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_get_info')) { + function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); } +} +if (!function_exists('mb_http_output')) { + function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); } +} +if (!function_exists('mb_strwidth')) { + function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); } +} +if (!function_exists('mb_substr_count')) { + function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); } +} +if (!function_exists('mb_output_handler')) { + function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); } +} +if (!function_exists('mb_http_input')) { + function mb_http_input($type = null) { return p\Mbstring::mb_http_input($type); } +} + +if (!function_exists('mb_convert_variables')) { + function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); } +} + +if (!function_exists('mb_ord')) { + function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); } +} +if (!function_exists('mb_chr')) { + function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); } +} +if (!function_exists('mb_scrub')) { + function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); } +} +if (!function_exists('mb_str_split')) { + function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); } +} + +if (extension_loaded('mbstring')) { + return; +} + +if (!defined('MB_CASE_UPPER')) { + define('MB_CASE_UPPER', 0); +} +if (!defined('MB_CASE_LOWER')) { + define('MB_CASE_LOWER', 1); +} +if (!defined('MB_CASE_TITLE')) { + define('MB_CASE_TITLE', 2); +} diff --git a/data/vendor/symfony/polyfill-mbstring/bootstrap80.php b/data/vendor/symfony/polyfill-mbstring/bootstrap80.php new file mode 100644 index 0000000..82f5ac4 --- /dev/null +++ b/data/vendor/symfony/polyfill-mbstring/bootstrap80.php @@ -0,0 +1,143 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Mbstring as p; + +if (!function_exists('mb_convert_encoding')) { + function mb_convert_encoding(array|string|null $string, ?string $to_encoding, array|string|null $from_encoding = null): array|string|false { return p\Mbstring::mb_convert_encoding($string ?? '', (string) $to_encoding, $from_encoding); } +} +if (!function_exists('mb_decode_mimeheader')) { + function mb_decode_mimeheader(?string $string): string { return p\Mbstring::mb_decode_mimeheader((string) $string); } +} +if (!function_exists('mb_encode_mimeheader')) { + function mb_encode_mimeheader(?string $string, ?string $charset = null, ?string $transfer_encoding = null, ?string $newline = "\r\n", ?int $indent = 0): string { return p\Mbstring::mb_encode_mimeheader((string) $string, $charset, $transfer_encoding, (string) $newline, (int) $indent); } +} +if (!function_exists('mb_decode_numericentity')) { + function mb_decode_numericentity(?string $string, array $map, ?string $encoding = null): string { return p\Mbstring::mb_decode_numericentity((string) $string, $map, $encoding); } +} +if (!function_exists('mb_encode_numericentity')) { + function mb_encode_numericentity(?string $string, array $map, ?string $encoding = null, ?bool $hex = false): string { return p\Mbstring::mb_encode_numericentity((string) $string, $map, $encoding, (bool) $hex); } +} +if (!function_exists('mb_convert_case')) { + function mb_convert_case(?string $string, ?int $mode, ?string $encoding = null): string { return p\Mbstring::mb_convert_case((string) $string, (int) $mode, $encoding); } +} +if (!function_exists('mb_internal_encoding')) { + function mb_internal_encoding(?string $encoding = null): string|bool { return p\Mbstring::mb_internal_encoding($encoding); } +} +if (!function_exists('mb_language')) { + function mb_language(?string $language = null): string|bool { return p\Mbstring::mb_language($language); } +} +if (!function_exists('mb_list_encodings')) { + function mb_list_encodings(): array { return p\Mbstring::mb_list_encodings(); } +} +if (!function_exists('mb_encoding_aliases')) { + function mb_encoding_aliases(?string $encoding): array { return p\Mbstring::mb_encoding_aliases((string) $encoding); } +} +if (!function_exists('mb_check_encoding')) { + function mb_check_encoding(array|string|null $value = null, ?string $encoding = null): bool { return p\Mbstring::mb_check_encoding($value, $encoding); } +} +if (!function_exists('mb_detect_encoding')) { + function mb_detect_encoding(?string $string, array|string|null $encodings = null, ?bool $strict = false): string|false { return p\Mbstring::mb_detect_encoding((string) $string, $encodings, (bool) $strict); } +} +if (!function_exists('mb_detect_order')) { + function mb_detect_order(array|string|null $encoding = null): array|bool { return p\Mbstring::mb_detect_order($encoding); } +} +if (!function_exists('mb_parse_str')) { + function mb_parse_str(?string $string, &$result = []): bool { parse_str((string) $string, $result); return (bool) $result; } +} +if (!function_exists('mb_strlen')) { + function mb_strlen(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strlen((string) $string, $encoding); } +} +if (!function_exists('mb_strpos')) { + function mb_strpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } +} +if (!function_exists('mb_strtolower')) { + function mb_strtolower(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtolower((string) $string, $encoding); } +} +if (!function_exists('mb_strtoupper')) { + function mb_strtoupper(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtoupper((string) $string, $encoding); } +} +if (!function_exists('mb_substitute_character')) { + function mb_substitute_character(string|int|null $substitute_character = null): string|int|bool { return p\Mbstring::mb_substitute_character($substitute_character); } +} +if (!function_exists('mb_substr')) { + function mb_substr(?string $string, ?int $start, ?int $length = null, ?string $encoding = null): string { return p\Mbstring::mb_substr((string) $string, (int) $start, $length, $encoding); } +} +if (!function_exists('mb_stripos')) { + function mb_stripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_stripos((string) $haystack, (string) $needle, (int) $offset, $encoding); } +} +if (!function_exists('mb_stristr')) { + function mb_stristr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_stristr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } +} +if (!function_exists('mb_strrchr')) { + function mb_strrchr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrchr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } +} +if (!function_exists('mb_strrichr')) { + function mb_strrichr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrichr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } +} +if (!function_exists('mb_strripos')) { + function mb_strripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strripos((string) $haystack, (string) $needle, (int) $offset, $encoding); } +} +if (!function_exists('mb_strrpos')) { + function mb_strrpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strrpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } +} +if (!function_exists('mb_strstr')) { + function mb_strstr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strstr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } +} +if (!function_exists('mb_get_info')) { + function mb_get_info(?string $type = 'all'): array|string|int|false { return p\Mbstring::mb_get_info((string) $type); } +} +if (!function_exists('mb_http_output')) { + function mb_http_output(?string $encoding = null): string|bool { return p\Mbstring::mb_http_output($encoding); } +} +if (!function_exists('mb_strwidth')) { + function mb_strwidth(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strwidth((string) $string, $encoding); } +} +if (!function_exists('mb_substr_count')) { + function mb_substr_count(?string $haystack, ?string $needle, ?string $encoding = null): int { return p\Mbstring::mb_substr_count((string) $haystack, (string) $needle, $encoding); } +} +if (!function_exists('mb_output_handler')) { + function mb_output_handler(?string $string, ?int $status): string { return p\Mbstring::mb_output_handler((string) $string, (int) $status); } +} +if (!function_exists('mb_http_input')) { + function mb_http_input(?string $type = null): array|string|false { return p\Mbstring::mb_http_input($type); } +} + +if (!function_exists('mb_convert_variables')) { + function mb_convert_variables(?string $to_encoding, array|string|null $from_encoding, mixed &$var, mixed &...$vars): string|false { return p\Mbstring::mb_convert_variables((string) $to_encoding, $from_encoding ?? '', $var, ...$vars); } +} + +if (!function_exists('mb_ord')) { + function mb_ord(?string $string, ?string $encoding = null): int|false { return p\Mbstring::mb_ord((string) $string, $encoding); } +} +if (!function_exists('mb_chr')) { + function mb_chr(?int $codepoint, ?string $encoding = null): string|false { return p\Mbstring::mb_chr((int) $codepoint, $encoding); } +} +if (!function_exists('mb_scrub')) { + function mb_scrub(?string $string, ?string $encoding = null): string { $encoding ??= mb_internal_encoding(); return mb_convert_encoding((string) $string, $encoding, $encoding); } +} +if (!function_exists('mb_str_split')) { + function mb_str_split(?string $string, ?int $length = 1, ?string $encoding = null): array { return p\Mbstring::mb_str_split((string) $string, (int) $length, $encoding); } +} + +if (extension_loaded('mbstring')) { + return; +} + +if (!defined('MB_CASE_UPPER')) { + define('MB_CASE_UPPER', 0); +} +if (!defined('MB_CASE_LOWER')) { + define('MB_CASE_LOWER', 1); +} +if (!defined('MB_CASE_TITLE')) { + define('MB_CASE_TITLE', 2); +} diff --git a/data/vendor/symfony/polyfill-mbstring/composer.json b/data/vendor/symfony/polyfill-mbstring/composer.json new file mode 100644 index 0000000..2ed7a74 --- /dev/null +++ b/data/vendor/symfony/polyfill-mbstring/composer.json @@ -0,0 +1,38 @@ +{ + "name": "symfony/polyfill-mbstring", + "type": "library", + "description": "Symfony polyfill for the Mbstring extension", + "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.1" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" }, + "files": [ "bootstrap.php" ] + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + } +} diff --git a/data/vendor/twig/twig/.editorconfig b/data/vendor/twig/twig/.editorconfig new file mode 100644 index 0000000..270f1d1 --- /dev/null +++ b/data/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/data/vendor/twig/twig/.gitattributes b/data/vendor/twig/twig/.gitattributes new file mode 100644 index 0000000..1ce832b --- /dev/null +++ b/data/vendor/twig/twig/.gitattributes @@ -0,0 +1,4 @@ +/doc/** export-ignore +/extra/** export-ignore +/tests export-ignore +/phpunit.xml.dist export-ignore diff --git a/data/vendor/twig/twig/.github/workflows/ci.yml b/data/vendor/twig/twig/.github/workflows/ci.yml new file mode 100644 index 0000000..140483c --- /dev/null +++ b/data/vendor/twig/twig/.github/workflows/ci.yml @@ -0,0 +1,175 @@ +name: "CI" + +on: + pull_request: + push: + branches: + - '3.x' + +env: + SYMFONY_PHPUNIT_DISABLE_RESULT_CACHE: 1 + +jobs: + tests: + name: "PHP ${{ matrix.php-version }}" + + runs-on: 'ubuntu-latest' + + continue-on-error: ${{ matrix.experimental }} + + strategy: + matrix: + php-version: + - '7.2.5' + - '7.3' + - '7.4' + - '8.0' + - '8.1' + composer-options: [''] + experimental: [false] + + steps: + - name: "Checkout code" + uses: actions/checkout@v2.3.3 + + - name: "Install PHP with extensions" + uses: shivammathur/setup-php@2.7.0 + with: + coverage: "none" + php-version: ${{ matrix.php-version }} + ini-values: memory_limit=-1 + tools: composer:v2 + + - name: "Add PHPUnit matcher" + run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + + - name: "Set composer cache directory" + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-files-dir)" + + - name: "Cache composer" + uses: actions/cache@v2.1.2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-${{ matrix.php-version }}-composer-${{ hashFiles('composer.json') }} + restore-keys: ${{ runner.os }}-${{ matrix.php-version }}-composer- + + - run: composer install ${{ matrix.composer-options }} + + - name: "Install PHPUnit" + run: vendor/bin/simple-phpunit install + + - name: "PHPUnit version" + run: vendor/bin/simple-phpunit --version + + - name: "Run tests" + run: vendor/bin/simple-phpunit + + extension-tests: + needs: + - 'tests' + + name: "${{ matrix.extension }} with PHP ${{ matrix.php-version }}" + + runs-on: 'ubuntu-latest' + + continue-on-error: true + + strategy: + matrix: + php-version: + - '7.2.5' + - '7.3' + - '7.4' + - '8.0' + - '8.1' + extension: + - 'extra/cache-extra' + - 'extra/cssinliner-extra' + - 'extra/html-extra' + - 'extra/inky-extra' + - 'extra/intl-extra' + - 'extra/markdown-extra' + - 'extra/string-extra' + - 'extra/twig-extra-bundle' + composer-options: [''] + experimental: [false] + + steps: + - name: "Checkout code" + uses: actions/checkout@v2.3.3 + + - name: "Install PHP with extensions" + uses: shivammathur/setup-php@2.7.0 + with: + coverage: "none" + php-version: ${{ matrix.php-version }} + ini-values: memory_limit=-1 + tools: composer:v2 + + - name: "Add PHPUnit matcher" + run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + + - name: "Set composer cache directory" + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-files-dir)" + + - name: "Cache composer" + uses: actions/cache@v2.1.2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-${{ matrix.php-version }}-${{ matrix.extension }}-${{ hashFiles('composer.json') }} + restore-keys: ${{ runner.os }}-${{ matrix.php-version }}-${{ matrix.extension }}- + + - run: composer install + + - name: "Install PHPUnit" + run: vendor/bin/simple-phpunit install + + - name: "PHPUnit version" + run: vendor/bin/simple-phpunit --version + + - if: matrix.extension == 'extra/markdown-extra' && matrix.php-version == '8.0' + working-directory: ${{ matrix.extension}} + run: composer config platform.php 7.4.99 + + - name: "Composer install" + working-directory: ${{ matrix.extension}} + run: composer install + + - name: "Run tests" + working-directory: ${{ matrix.extension}} + run: ../../vendor/bin/simple-phpunit +# +# Drupal does not support Twig 3 now! +# +# integration-tests: +# needs: +# - 'tests' +# +# name: "Integration tests with PHP ${{ matrix.php-version }}" +# +# runs-on: 'ubuntu-20.04' +# +# continue-on-error: true +# +# strategy: +# matrix: +# php-version: +# - '7.3' +# +# steps: +# - name: "Checkout code" +# uses: actions/checkout@v2.3.3 +# +# - name: "Install PHP with extensions" +# uses: shivammathur/setup-php@2.7.0 +# with: +# coverage: "none" +# extensions: "gd, pdo_sqlite" +# php-version: ${{ matrix.php-version }} +# ini-values: memory_limit=-1 +# tools: composer:v2 +# +# - run: bash ./tests/drupal_test.sh +# shell: "bash" diff --git a/data/vendor/twig/twig/.github/workflows/documentation.yml b/data/vendor/twig/twig/.github/workflows/documentation.yml new file mode 100644 index 0000000..0b3ca71 --- /dev/null +++ b/data/vendor/twig/twig/.github/workflows/documentation.yml @@ -0,0 +1,60 @@ +name: "Documentation" + +on: + pull_request: + push: + branches: + - '3.x' + +jobs: + build: + name: "Build" + + runs-on: ubuntu-latest + + steps: + - name: "Checkout code" + uses: actions/checkout@v2 + + - name: "Set up Python 3.7" + uses: actions/setup-python@v1 + with: + python-version: '3.7' # Semantic version range syntax or exact version of a Python version + + - name: "Display Python version" + run: python -c "import sys; print(sys.version)" + + - name: "Install Sphinx dependencies" + run: sudo apt-get install python-dev build-essential + + - name: "Cache pip" + uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('_build/.requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: "Install Sphinx + requirements via pip" + working-directory: "doc" + run: pip install -r _build/.requirements.txt + + - name: "Build documentation" + working-directory: "doc" + run: make -C _build SPHINXOPTS="-nqW -j auto" html + + doctor-rst: + name: "DOCtor-RST" + + runs-on: ubuntu-latest + + steps: + - name: "Checkout code" + uses: actions/checkout@v2 + + - name: "Run DOCtor-RST" + uses: docker://oskarstark/doctor-rst + with: + args: --short + env: + DOCS_DIR: 'doc/' diff --git a/data/vendor/twig/twig/.gitignore b/data/vendor/twig/twig/.gitignore new file mode 100644 index 0000000..cd52aea --- /dev/null +++ b/data/vendor/twig/twig/.gitignore @@ -0,0 +1,4 @@ +/composer.lock +/phpunit.xml +/vendor +.phpunit.result.cache diff --git a/data/vendor/twig/twig/.php-cs-fixer.dist.php b/data/vendor/twig/twig/.php-cs-fixer.dist.php new file mode 100644 index 0000000..b07ac7f --- /dev/null +++ b/data/vendor/twig/twig/.php-cs-fixer.dist.php @@ -0,0 +1,20 @@ +setRules([ + '@Symfony' => true, + '@Symfony:risky' => true, + '@PHPUnit75Migration:risky' => true, + 'php_unit_dedicate_assert' => ['target' => '5.6'], + 'array_syntax' => ['syntax' => 'short'], + 'php_unit_fqcn_annotation' => true, + 'no_unreachable_default_argument_value' => false, + 'braces' => ['allow_single_line_closure' => true], + 'heredoc_to_nowdoc' => false, + 'ordered_imports' => true, + 'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'], + 'native_function_invocation' => ['include' => ['@compiler_optimized'], 'scope' => 'all'], + ]) + ->setRiskyAllowed(true) + ->setFinder((new PhpCsFixer\Finder())->in(__DIR__)) +; diff --git a/data/vendor/twig/twig/CHANGELOG b/data/vendor/twig/twig/CHANGELOG new file mode 100644 index 0000000..24cebe6 --- /dev/null +++ b/data/vendor/twig/twig/CHANGELOG @@ -0,0 +1,116 @@ +# 3.3.7 (2022-01-03) + +* Allow more null support when Twig expects a string (for better 8.1 support) +* Only use Commonmark extensions if markdown enabled + +# 3.3.6 (2022-01-03) + +* Only use Commonmark extensions if markdown enabled + +# 3.3.5 (2022-01-03) + +* Allow CommonMark extensions to easily be added +* Allow null when Twig expects a string (for better 8.1 support) +* Make some performance optimizations +* Allow Symfony translation contract v3+ + +# 3.3.4 (2021-11-25) + + * Bump minimum supported Symfony component versions + * Fix a deprecated message + +# 3.3.3 (2021-09-17) + + * Allow Symfony 6 + * Improve compatibility with PHP 8.1 + * Explicitly specify the encoding for mb_ord in JS escaper + +# 3.3.2 (2021-05-16) + + * Revert "Throw a proper exception when a template name is an absolute path (as it has never been supported)" + +# 3.3.1 (2021-05-12) + + * Fix PHP 8.1 compatibility + * Throw a proper exception when a template name is an absolute path (as it has never been supported) + +# 3.3.0 (2021-02-08) + + * Fix macro calls in a "cache" tag + * Add the slug filter + * Allow extra bundle to be compatible with Twig 2 + +# 3.2.1 (2021-01-05) + + * Fix extra bundle compat with older versions of Symfony + +# 3.2.0 (2021-01-05) + + * Add the Cache extension in the "extra" repositories: "cache" tag + * Add "registerUndefinedTokenParserCallback" + * Mark built-in node visitors as @internal + * Fix "odd" not working for negative numbers + +# 3.1.1 (2020-10-27) + + * Fix "include(template_from_string())" + +# 3.1.0 (2020-10-21) + + * Fix sandbox support when using "include(template_from_string())" + * Make round brackets optional for one argument tests like "same as" or "divisible by" + * Add support for ES2015 style object initialisation shortcut { a } is the same as { 'a': a } + +# 3.0.5 (2020-08-05) + + * Fix twig_compare w.r.t. whitespace trimming + * Fix sandbox not disabled if syntax error occurs within {% sandbox %} tag + * Fix a regression when not using a space before an operator + * Restrict callables to closures in filters + * Allow trailing commas in argument lists (in calls as well as definitions) + +# 3.0.4 (2020-07-05) + + * Fix comparison operators + * Fix options not taken into account when using "Michelf\MarkdownExtra" + * Fix "Twig\Extra\Intl\IntlExtension::getCountryName()" to accept "null" as a first argument + * Throw exception in case non-Traversable data is passed to "filter" + * Fix context optimization on PHP 7.4 + * Fix PHP 8 compatibility + * Fix ambiguous syntax parsing + +# 3.0.3 (2020-02-11) + + * Add a check to ensure that iconv() is defined + +# 3.0.2 (2020-02-11) + + * Avoid exceptions when an intl resource is not found + * Fix implementation of case-insensitivity for method names + +# 3.0.1 (2019-12-28) + + * fixed Symfony 5.0 support for the HTML extra extension + +# 3.0.0 (2019-11-15) + + * fixed number formatter in Intl extra extension when using a formatter prototype + +# 3.0.0-BETA1 (2019-11-11) + + * removed the "if" condition support on the "for" tag + * made the in, <, >, <=, >=, ==, and != operators more strict when comparing strings and integers/floats + * removed the "filter" tag + * added type hints everywhere + * changed Environment::resolveTemplate() to always return a TemplateWrapper instance + * removed Template::__toString() + * removed Parser::isReservedMacroName() + * removed SanboxedPrintNode + * removed Node::setTemplateName() + * made classes maked as "@final" final + * removed InitRuntimeInterface, ExistsLoaderInterface, and SourceContextLoaderInterface + * removed the "spaceless" tag + * removed Twig\Environment::getBaseTemplateClass() and Twig\Environment::setBaseTemplateClass() + * removed the "base_template_class" option on Twig\Environment + * bumped minimum PHP version to 7.2 + * removed PSR-0 classes diff --git a/data/vendor/twig/twig/LICENSE b/data/vendor/twig/twig/LICENSE new file mode 100644 index 0000000..8711927 --- /dev/null +++ b/data/vendor/twig/twig/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009-2022 by the Twig Team. + +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 Twig nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/data/vendor/twig/twig/README.rst b/data/vendor/twig/twig/README.rst new file mode 100644 index 0000000..fbe7e9a --- /dev/null +++ b/data/vendor/twig/twig/README.rst @@ -0,0 +1,23 @@ +Twig, the flexible, fast, and secure template language for PHP +============================================================== + +Twig is a template language for PHP. + +Twig uses a syntax similar to the Django and Jinja template languages which +inspired the Twig runtime environment. + +Sponsors +-------- + +.. raw:: html + + + Blackfire.io + + +More Information +---------------- + +Read the `documentation`_ for more information. + +.. _documentation: https://twig.symfony.com/documentation diff --git a/data/vendor/twig/twig/composer.json b/data/vendor/twig/twig/composer.json new file mode 100644 index 0000000..91ff912 --- /dev/null +++ b/data/vendor/twig/twig/composer.json @@ -0,0 +1,50 @@ +{ + "name": "twig/twig", + "type": "library", + "description": "Twig, the flexible, fast, and secure template language for PHP", + "keywords": ["templating"], + "homepage": "https://twig.symfony.com", + "license": "BSD-3-Clause", + "minimum-stability": "dev", + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", + "psr/container": "^1.0" + }, + "autoload": { + "psr-4" : { + "Twig\\" : "src/" + } + }, + "autoload-dev": { + "psr-4" : { + "Twig\\Tests\\" : "tests/" + } + }, + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + } +} diff --git a/data/vendor/twig/twig/src/Cache/CacheInterface.php b/data/vendor/twig/twig/src/Cache/CacheInterface.php new file mode 100644 index 0000000..6e8c409 --- /dev/null +++ b/data/vendor/twig/twig/src/Cache/CacheInterface.php @@ -0,0 +1,46 @@ + + */ +interface CacheInterface +{ + /** + * Generates a cache key for the given template class name. + */ + public function generateKey(string $name, string $className): string; + + /** + * Writes the compiled template to cache. + * + * @param string $content The template representation as a PHP class + */ + public function write(string $key, string $content): void; + + /** + * Loads a template from the cache. + */ + public function load(string $key): void; + + /** + * Returns the modification timestamp of a key. + */ + public function getTimestamp(string $key): int; +} diff --git a/data/vendor/twig/twig/src/Cache/FilesystemCache.php b/data/vendor/twig/twig/src/Cache/FilesystemCache.php new file mode 100644 index 0000000..e075563 --- /dev/null +++ b/data/vendor/twig/twig/src/Cache/FilesystemCache.php @@ -0,0 +1,87 @@ + + */ +class FilesystemCache implements CacheInterface +{ + public const FORCE_BYTECODE_INVALIDATION = 1; + + private $directory; + private $options; + + public function __construct(string $directory, int $options = 0) + { + $this->directory = rtrim($directory, '\/').'/'; + $this->options = $options; + } + + public function generateKey(string $name, string $className): string + { + $hash = hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $className); + + return $this->directory.$hash[0].$hash[1].'/'.$hash.'.php'; + } + + public function load(string $key): void + { + if (is_file($key)) { + @include_once $key; + } + } + + public function write(string $key, string $content): void + { + $dir = \dirname($key); + if (!is_dir($dir)) { + if (false === @mkdir($dir, 0777, true)) { + 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') && filter_var(ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN)) { + @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(string $key): int + { + if (!is_file($key)) { + return 0; + } + + return (int) @filemtime($key); + } +} diff --git a/data/vendor/twig/twig/src/Cache/NullCache.php b/data/vendor/twig/twig/src/Cache/NullCache.php new file mode 100644 index 0000000..8d20d59 --- /dev/null +++ b/data/vendor/twig/twig/src/Cache/NullCache.php @@ -0,0 +1,38 @@ + + */ +final class NullCache implements CacheInterface +{ + public function generateKey(string $name, string $className): string + { + return ''; + } + + public function write(string $key, string $content): void + { + } + + public function load(string $key): void + { + } + + public function getTimestamp(string $key): int + { + return 0; + } +} diff --git a/data/vendor/twig/twig/src/Compiler.php b/data/vendor/twig/twig/src/Compiler.php new file mode 100644 index 0000000..95e1f18 --- /dev/null +++ b/data/vendor/twig/twig/src/Compiler.php @@ -0,0 +1,214 @@ + + */ +class Compiler +{ + private $lastLine; + private $source; + private $indentation; + private $env; + private $debugInfo = []; + private $sourceOffset; + private $sourceLine; + private $varNameSalt = 0; + + public function __construct(Environment $env) + { + $this->env = $env; + } + + public function getEnvironment(): Environment + { + return $this->env; + } + + public function getSource(): string + { + return $this->source; + } + + /** + * @return $this + */ + public function compile(Node $node, int $indentation = 0) + { + $this->lastLine = null; + $this->source = ''; + $this->debugInfo = []; + $this->sourceOffset = 0; + // source code starts at 1 (as we then increment it when we encounter new lines) + $this->sourceLine = 1; + $this->indentation = $indentation; + $this->varNameSalt = 0; + + $node->compile($this); + + return $this; + } + + /** + * @return $this + */ + public function subcompile(Node $node, bool $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. + * + * @return $this + */ + public function raw(string $string) + { + $this->source .= $string; + + return $this; + } + + /** + * Writes a string to the compiled code by adding indentation. + * + * @return $this + */ + public function write(...$strings) + { + foreach ($strings as $string) { + $this->source .= str_repeat(' ', $this->indentation * 4).$string; + } + + return $this; + } + + /** + * Adds a quoted string to the compiled code. + * + * @return $this + */ + public function string(string $value) + { + $this->source .= sprintf('"%s"', addcslashes($value, "\0\t\"\$\\")); + + return $this; + } + + /** + * Returns a PHP representation of a given value. + * + * @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(var_export($value, true)); + + 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; + } + + /** + * @return $this + */ + public function addDebugInfo(Node $node) + { + if ($node->getTemplateLine() != $this->lastLine) { + $this->write(sprintf("// line %d\n", $node->getTemplateLine())); + + $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(): array + { + ksort($this->debugInfo); + + return $this->debugInfo; + } + + /** + * @return $this + */ + public function indent(int $step = 1) + { + $this->indentation += $step; + + return $this; + } + + /** + * @return $this + * + * @throws \LogicException When trying to outdent too much so the indentation would become negative + */ + public function outdent(int $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(): string + { + return sprintf('__internal_compile_%d', $this->varNameSalt++); + } +} diff --git a/data/vendor/twig/twig/src/Environment.php b/data/vendor/twig/twig/src/Environment.php new file mode 100644 index 0000000..681f534 --- /dev/null +++ b/data/vendor/twig/twig/src/Environment.php @@ -0,0 +1,832 @@ + + */ +class Environment +{ + public const VERSION = '3.3.7'; + public const VERSION_ID = 30307; + public const MAJOR_VERSION = 3; + public const MINOR_VERSION = 3; + public const RELEASE_VERSION = 7; + public const EXTRA_VERSION = ''; + + private $charset; + private $loader; + private $debug; + private $autoReload; + private $cache; + private $lexer; + private $parser; + private $compiler; + private $globals = []; + private $resolvedGlobals; + private $loadedTemplates; + private $strictVariables; + private $templateClassPrefix = '__TwigTemplate_'; + private $originalCache; + private $extensionSet; + private $runtimeLoaders = []; + private $runtimes = []; + 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). + * + * * cache: An absolute path where to store the compiled templates, + * a \Twig\Cache\CacheInterface 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 + * * 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). + */ + public function __construct(LoaderInterface $loader, $options = []) + { + $this->setLoader($loader); + + $options = array_merge([ + 'debug' => false, + 'charset' => 'UTF-8', + 'strict_variables' => false, + 'autoescape' => 'html', + 'cache' => false, + 'auto_reload' => null, + 'optimizations' => -1, + ], $options); + + $this->debug = (bool) $options['debug']; + $this->setCharset($options['charset'] ?? 'UTF-8'); + $this->autoReload = null === $options['auto_reload'] ? $this->debug : (bool) $options['auto_reload']; + $this->strictVariables = (bool) $options['strict_variables']; + $this->setCache($options['cache']); + $this->extensionSet = new ExtensionSet(); + + $this->addExtension(new CoreExtension()); + $this->addExtension(new EscaperExtension($options['autoescape'])); + $this->addExtension(new OptimizerExtension($options['optimizations'])); + } + + /** + * 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 CacheInterface|string|false A Twig\Cache\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 CacheInterface|string|false $cache A Twig\Cache\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 FilesystemCache($cache); + } elseif (false === $cache) { + $this->originalCache = $cache; + $this->cache = new NullCache(); + } elseif ($cache instanceof CacheInterface) { + $this->originalCache = $this->cache = $cache; + } else { + throw new \LogicException('Cache can only be a string, false, or a \Twig\Cache\CacheInterface implementation.'); + } + } + + /** + * 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 + * + * @internal + */ + public function getTemplateClass(string $name, int $index = null): string + { + $key = $this->getLoader()->getCacheKey($name).$this->optionsHash; + + return $this->templateClassPrefix.hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $key).(null === $index ? '' : '___'.$index); + } + + /** + * Renders a template. + * + * @param string|TemplateWrapper $name The template name + * + * @throws LoaderError When the template cannot be found + * @throws SyntaxError When an error occurred during compilation + * @throws RuntimeError When an error occurred during rendering + */ + public function render($name, array $context = []): string + { + return $this->load($name)->render($context); + } + + /** + * Displays a template. + * + * @param string|TemplateWrapper $name The template name + * + * @throws LoaderError When the template cannot be found + * @throws SyntaxError When an error occurred during compilation + * @throws RuntimeError When an error occurred during rendering + */ + public function display($name, array $context = []): void + { + $this->load($name)->display($context); + } + + /** + * Loads a template. + * + * @param string|TemplateWrapper $name The template name + * + * @throws LoaderError When the template cannot be found + * @throws RuntimeError When a previously generated cache is corrupted + * @throws SyntaxError When an error occurred during compilation + */ + public function load($name): TemplateWrapper + { + if ($name instanceof TemplateWrapper) { + return $name; + } + + return new TemplateWrapper($this, $this->loadTemplate($this->getTemplateClass($name), $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 + * + * @throws LoaderError When the template cannot be found + * @throws RuntimeError When a previously generated cache is corrupted + * @throws SyntaxError When an error occurred during compilation + * + * @internal + */ + public function loadTemplate(string $cls, string $name, int $index = null): Template + { + $mainCls = $cls; + if (null !== $index) { + $cls .= '___'.$index; + } + + if (isset($this->loadedTemplates[$cls])) { + return $this->loadedTemplates[$cls]; + } + + if (!class_exists($cls, false)) { + $key = $this->cache->generateKey($name, $mainCls); + + if (!$this->isAutoReload() || $this->isTemplateFresh($name, $this->cache->getTimestamp($key))) { + $this->cache->load($key); + } + + $source = null; + if (!class_exists($cls, false)) { + $source = $this->getLoader()->getSourceContext($name); + $content = $this->compileSource($source); + $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 RuntimeError(sprintf('Failed to load Twig template "%s", index "%s": cache might be corrupted.', $name, $index), -1, $source); + } + } + } + + $this->extensionSet->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 source + * @param string $name An optional name of the template to be used in error messages + * + * @throws LoaderError When the template cannot be found + * @throws SyntaxError When an error occurred during compilation + */ + public function createTemplate(string $template, string $name = null): TemplateWrapper + { + $hash = hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $template, false); + if (null !== $name) { + $name = sprintf('%s (string template %s)', $name, $hash); + } else { + $name = sprintf('__string_template__%s', $hash); + } + + $loader = new ChainLoader([ + new ArrayLoader([$name => $template]), + $current = $this->getLoader(), + ]); + + $this->setLoader($loader); + try { + return new TemplateWrapper($this, $this->loadTemplate($this->getTemplateClass($name), $name)); + } finally { + $this->setLoader($current); + } + } + + /** + * 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 int $time The last modification time of the cached template + */ + public function isTemplateFresh(string $name, int $time): bool + { + return $this->extensionSet->getLastModified() <= $time && $this->getLoader()->isFresh($name, $time); + } + + /** + * Tries to load a template consecutively from an array. + * + * Similar to load() but it also accepts instances of \Twig\Template and + * \Twig\TemplateWrapper, and an array of templates where each is tried to be loaded. + * + * @param string|TemplateWrapper|array $names A template or an array of templates to try consecutively + * + * @throws LoaderError When none of the templates can be found + * @throws SyntaxError When an error occurred during compilation + */ + public function resolveTemplate($names): TemplateWrapper + { + if (!\is_array($names)) { + return $this->load($names); + } + + $count = \count($names); + foreach ($names as $name) { + if ($name instanceof Template) { + return $name; + } + if ($name instanceof TemplateWrapper) { + return $name; + } + + if (1 !== $count && !$this->getLoader()->exists($name)) { + continue; + } + + return $this->load($name); + } + + throw new LoaderError(sprintf('Unable to find one of the following templates: "%s".', implode('", "', $names))); + } + + public function setLexer(Lexer $lexer) + { + $this->lexer = $lexer; + } + + /** + * @throws SyntaxError When the code is syntactically wrong + */ + public function tokenize(Source $source): TokenStream + { + if (null === $this->lexer) { + $this->lexer = new Lexer($this); + } + + return $this->lexer->tokenize($source); + } + + public function setParser(Parser $parser) + { + $this->parser = $parser; + } + + /** + * Converts a token stream to a node tree. + * + * @throws SyntaxError When the token stream is syntactically or semantically wrong + */ + public function parse(TokenStream $stream): ModuleNode + { + if (null === $this->parser) { + $this->parser = new Parser($this); + } + + return $this->parser->parse($stream); + } + + public function setCompiler(Compiler $compiler) + { + $this->compiler = $compiler; + } + + /** + * Compiles a node and returns the PHP code. + */ + public function compile(Node $node): string + { + if (null === $this->compiler) { + $this->compiler = new Compiler($this); + } + + return $this->compiler->compile($node)->getSource(); + } + + /** + * Compiles a template source code. + * + * @throws SyntaxError When there was an error during tokenizing, parsing or compiling + */ + public function compileSource(Source $source): string + { + try { + return $this->compile($this->parse($this->tokenize($source))); + } catch (Error $e) { + $e->setSourceContext($source); + throw $e; + } catch (\Exception $e) { + throw new SyntaxError(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e); + } + } + + public function setLoader(LoaderInterface $loader) + { + $this->loader = $loader; + } + + public function getLoader(): LoaderInterface + { + return $this->loader; + } + + public function setCharset(string $charset) + { + if ('UTF8' === $charset = null === $charset ? null : strtoupper($charset)) { + // iconv on Windows requires "UTF-8" instead of "UTF8" + $charset = 'UTF-8'; + } + + $this->charset = $charset; + } + + public function getCharset(): string + { + return $this->charset; + } + + public function hasExtension(string $class): bool + { + return $this->extensionSet->hasExtension($class); + } + + public function addRuntimeLoader(RuntimeLoaderInterface $loader) + { + $this->runtimeLoaders[] = $loader; + } + + /** + * @template TExtension of ExtensionInterface + * + * @param class-string $class + * + * @return TExtension + */ + public function getExtension(string $class): ExtensionInterface + { + return $this->extensionSet->getExtension($class); + } + + /** + * Returns the runtime implementation of a Twig element (filter/function/tag/test). + * + * @template TRuntime of object + * + * @param class-string $class A runtime class name + * + * @return TRuntime The runtime implementation + * + * @throws RuntimeError When the template cannot be found + */ + public function getRuntime(string $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 RuntimeError(sprintf('Unable to load the "%s" runtime.', $class)); + } + + public function addExtension(ExtensionInterface $extension) + { + $this->extensionSet->addExtension($extension); + $this->updateOptionsHash(); + } + + /** + * @param ExtensionInterface[] $extensions An array of extensions + */ + public function setExtensions(array $extensions) + { + $this->extensionSet->setExtensions($extensions); + $this->updateOptionsHash(); + } + + /** + * @return ExtensionInterface[] An array of extensions (keys are for internal usage only and should not be relied on) + */ + public function getExtensions(): array + { + return $this->extensionSet->getExtensions(); + } + + public function addTokenParser(TokenParserInterface $parser) + { + $this->extensionSet->addTokenParser($parser); + } + + /** + * @return TokenParserInterface[] + * + * @internal + */ + public function getTokenParsers(): array + { + return $this->extensionSet->getTokenParsers(); + } + + /** + * @internal + */ + public function getTokenParser(string $name): ?TokenParserInterface + { + return $this->extensionSet->getTokenParser($name); + } + + public function registerUndefinedTokenParserCallback(callable $callable): void + { + $this->extensionSet->registerUndefinedTokenParserCallback($callable); + } + + public function addNodeVisitor(NodeVisitorInterface $visitor) + { + $this->extensionSet->addNodeVisitor($visitor); + } + + /** + * @return NodeVisitorInterface[] + * + * @internal + */ + public function getNodeVisitors(): array + { + return $this->extensionSet->getNodeVisitors(); + } + + public function addFilter(TwigFilter $filter) + { + $this->extensionSet->addFilter($filter); + } + + /** + * @internal + */ + public function getFilter(string $name): ?TwigFilter + { + return $this->extensionSet->getFilter($name); + } + + public function registerUndefinedFilterCallback(callable $callable): void + { + $this->extensionSet->registerUndefinedFilterCallback($callable); + } + + /** + * Gets the registered Filters. + * + * Be warned that this method cannot return filters defined with registerUndefinedFilterCallback. + * + * @return TwigFilter[] + * + * @see registerUndefinedFilterCallback + * + * @internal + */ + public function getFilters(): array + { + return $this->extensionSet->getFilters(); + } + + public function addTest(TwigTest $test) + { + $this->extensionSet->addTest($test); + } + + /** + * @return TwigTest[] + * + * @internal + */ + public function getTests(): array + { + return $this->extensionSet->getTests(); + } + + /** + * @internal + */ + public function getTest(string $name): ?TwigTest + { + return $this->extensionSet->getTest($name); + } + + public function addFunction(TwigFunction $function) + { + $this->extensionSet->addFunction($function); + } + + /** + * @internal + */ + public function getFunction(string $name): ?TwigFunction + { + return $this->extensionSet->getFunction($name); + } + + public function registerUndefinedFunctionCallback(callable $callable): void + { + $this->extensionSet->registerUndefinedFunctionCallback($callable); + } + + /** + * Gets registered functions. + * + * Be warned that this method cannot return functions defined with registerUndefinedFunctionCallback. + * + * @return TwigFunction[] + * + * @see registerUndefinedFunctionCallback + * + * @internal + */ + public function getFunctions(): array + { + return $this->extensionSet->getFunctions(); + } + + /** + * Registers a Global. + * + * New globals can be added before compiling or rendering a template; + * but after, you can only update existing globals. + * + * @param mixed $value The global value + */ + public function addGlobal(string $name, $value) + { + if ($this->extensionSet->isInitialized() && !\array_key_exists($name, $this->getGlobals())) { + throw new \LogicException(sprintf('Unable to add global "%s" as the runtime or the extensions have already been initialized.', $name)); + } + + if (null !== $this->resolvedGlobals) { + $this->resolvedGlobals[$name] = $value; + } else { + $this->globals[$name] = $value; + } + } + + /** + * @internal + */ + public function getGlobals(): array + { + if ($this->extensionSet->isInitialized()) { + if (null === $this->resolvedGlobals) { + $this->resolvedGlobals = array_merge($this->extensionSet->getGlobals(), $this->globals); + } + + return $this->resolvedGlobals; + } + + return array_merge($this->extensionSet->getGlobals(), $this->globals); + } + + public function mergeGlobals(array $context): array + { + // 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; + } + + /** + * @internal + */ + public function getUnaryOperators(): array + { + return $this->extensionSet->getUnaryOperators(); + } + + /** + * @internal + */ + public function getBinaryOperators(): array + { + return $this->extensionSet->getBinaryOperators(); + } + + private function updateOptionsHash(): void + { + $this->optionsHash = implode(':', [ + $this->extensionSet->getSignature(), + \PHP_MAJOR_VERSION, + \PHP_MINOR_VERSION, + self::VERSION, + (int) $this->debug, + (int) $this->strictVariables, + ]); + } +} diff --git a/data/vendor/twig/twig/src/Error/Error.php b/data/vendor/twig/twig/src/Error/Error.php new file mode 100644 index 0000000..a68be65 --- /dev/null +++ b/data/vendor/twig/twig/src/Error/Error.php @@ -0,0 +1,227 @@ + + */ +class Error extends \Exception +{ + private $lineno; + private $name; + private $rawMessage; + private $sourcePath; + private $sourceCode; + + /** + * Constructor. + * + * By default, automatic guessing is enabled. + * + * @param string $message The error message + * @param int $lineno The template line where the error occurred + * @param Source|null $source The source context where the error occurred + */ + public function __construct(string $message, int $lineno = -1, Source $source = null, \Exception $previous = null) + { + parent::__construct('', 0, $previous); + + if (null === $source) { + $name = null; + } else { + $name = $source->getName(); + $this->sourceCode = $source->getCode(); + $this->sourcePath = $source->getPath(); + } + + $this->lineno = $lineno; + $this->name = $name; + $this->rawMessage = $message; + $this->updateRepr(); + } + + public function getRawMessage(): string + { + return $this->rawMessage; + } + + public function getTemplateLine(): int + { + return $this->lineno; + } + + public function setTemplateLine(int $lineno): void + { + $this->lineno = $lineno; + + $this->updateRepr(); + } + + public function getSourceContext(): ?Source + { + return $this->name ? new Source($this->sourceCode, $this->name, $this->sourcePath) : null; + } + + public function setSourceContext(Source $source = null): void + { + if (null === $source) { + $this->sourceCode = $this->name = $this->sourcePath = null; + } else { + $this->sourceCode = $source->getCode(); + $this->name = $source->getName(); + $this->sourcePath = $source->getPath(); + } + + $this->updateRepr(); + } + + public function guess(): void + { + $this->guessTemplateInfo(); + $this->updateRepr(); + } + + public function appendMessage($rawMessage): void + { + $this->rawMessage .= $rawMessage; + $this->updateRepr(); + } + + private function updateRepr(): void + { + $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->name) { + if (\is_string($this->name) || (\is_object($this->name) && method_exists($this->name, '__toString'))) { + $name = sprintf('"%s"', $this->name); + } else { + $name = json_encode($this->name); + } + $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 .= '?'; + } + } + + private function guessTemplateInfo(): void + { + $template = null; + $templateClass = null; + + $backtrace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS | \DEBUG_BACKTRACE_PROVIDE_OBJECT); + foreach ($backtrace as $trace) { + if (isset($trace['object']) && $trace['object'] instanceof Template) { + $currentClass = \get_class($trace['object']); + $isEmbedContainer = null === $templateClass ? false : 0 === strpos($templateClass, $currentClass); + if (null === $this->name || ($this->name == $trace['object']->getTemplateName() && !$isEmbedContainer)) { + $template = $trace['object']; + $templateClass = \get_class($trace['object']); + } + } + } + + // update template name + if (null !== $template && null === $this->name) { + $this->name = $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(); + + $exceptions = [$e = $this]; + while ($e = $e->getPrevious()) { + $exceptions[] = $e; + } + + while ($e = array_pop($exceptions)) { + $traces = $e->getTrace(); + array_unshift($traces, ['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/data/vendor/twig/twig/src/Error/LoaderError.php b/data/vendor/twig/twig/src/Error/LoaderError.php new file mode 100644 index 0000000..7c8c23c --- /dev/null +++ b/data/vendor/twig/twig/src/Error/LoaderError.php @@ -0,0 +1,21 @@ + + */ +class LoaderError extends Error +{ +} diff --git a/data/vendor/twig/twig/src/Error/RuntimeError.php b/data/vendor/twig/twig/src/Error/RuntimeError.php new file mode 100644 index 0000000..f6b8476 --- /dev/null +++ b/data/vendor/twig/twig/src/Error/RuntimeError.php @@ -0,0 +1,22 @@ + + */ +class RuntimeError extends Error +{ +} diff --git a/data/vendor/twig/twig/src/Error/SyntaxError.php b/data/vendor/twig/twig/src/Error/SyntaxError.php new file mode 100644 index 0000000..726b330 --- /dev/null +++ b/data/vendor/twig/twig/src/Error/SyntaxError.php @@ -0,0 +1,46 @@ + + */ +class SyntaxError extends 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(string $name, array $items): void + { + $alternatives = []; + foreach ($items as $item) { + $lev = levenshtein($name, $item); + if ($lev <= \strlen($name) / 3 || false !== strpos($item, $name)) { + $alternatives[$item] = $lev; + } + } + + if (!$alternatives) { + return; + } + + asort($alternatives); + + $this->appendMessage(sprintf(' Did you mean "%s"?', implode('", "', array_keys($alternatives)))); + } +} diff --git a/data/vendor/twig/twig/src/ExpressionParser.php b/data/vendor/twig/twig/src/ExpressionParser.php new file mode 100644 index 0000000..66acddf --- /dev/null +++ b/data/vendor/twig/twig/src/ExpressionParser.php @@ -0,0 +1,825 @@ + + * + * @internal + */ +class ExpressionParser +{ + public const OPERATOR_LEFT = 1; + public const OPERATOR_RIGHT = 2; + + private $parser; + private $env; + private $unaryOperators; + private $binaryOperators; + + public function __construct(Parser $parser, Environment $env) + { + $this->parser = $parser; + $this->env = $env; + $this->unaryOperators = $env->getUnaryOperators(); + $this->binaryOperators = $env->getBinaryOperators(); + } + + public function parseExpression($precedence = 0, $allowArrow = false) + { + if ($allowArrow && $arrow = $this->parseArrow()) { + return $arrow; + } + + $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 = $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; + } + + /** + * @return ArrowFunctionExpression|null + */ + private function parseArrow() + { + $stream = $this->parser->getStream(); + + // short array syntax (one argument, no parentheses)? + if ($stream->look(1)->test(/* Token::ARROW_TYPE */ 12)) { + $line = $stream->getCurrent()->getLine(); + $token = $stream->expect(/* Token::NAME_TYPE */ 5); + $names = [new AssignNameExpression($token->getValue(), $token->getLine())]; + $stream->expect(/* Token::ARROW_TYPE */ 12); + + return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line); + } + + // first, determine if we are parsing an arrow function by finding => (long form) + $i = 0; + if (!$stream->look($i)->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + return null; + } + ++$i; + while (true) { + // variable name + ++$i; + if (!$stream->look($i)->test(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + break; + } + ++$i; + } + if (!$stream->look($i)->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) { + return null; + } + ++$i; + if (!$stream->look($i)->test(/* Token::ARROW_TYPE */ 12)) { + return null; + } + + // yes, let's parse it properly + $token = $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '('); + $line = $token->getLine(); + + $names = []; + while (true) { + $token = $stream->expect(/* Token::NAME_TYPE */ 5); + $names[] = new AssignNameExpression($token->getValue(), $token->getLine()); + + if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + break; + } + } + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ')'); + $stream->expect(/* Token::ARROW_TYPE */ 12); + + return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line); + } + + private function getPrimary(): AbstractExpression + { + $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(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + $this->parser->getStream()->next(); + $expr = $this->parseExpression(); + $this->parser->getStream()->expect(/* Token::PUNCTUATION_TYPE */ 9, ')', 'An opened parenthesis is not properly closed'); + + return $this->parsePostfixExpression($expr); + } + + return $this->parsePrimaryExpression(); + } + + private function parseConditionalExpression($expr): AbstractExpression + { + while ($this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, '?')) { + if (!$this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) { + $expr2 = $this->parseExpression(); + if ($this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) { + $expr3 = $this->parseExpression(); + } else { + $expr3 = new ConstantExpression('', $this->parser->getCurrentToken()->getLine()); + } + } else { + $expr2 = $expr; + $expr3 = $this->parseExpression(); + } + + $expr = new ConditionalExpression($expr, $expr2, $expr3, $this->parser->getCurrentToken()->getLine()); + } + + return $expr; + } + + private function isUnary(Token $token): bool + { + return $token->test(/* Token::OPERATOR_TYPE */ 8) && isset($this->unaryOperators[$token->getValue()]); + } + + private function isBinary(Token $token): bool + { + return $token->test(/* Token::OPERATOR_TYPE */ 8) && isset($this->binaryOperators[$token->getValue()]); + } + + public function parsePrimaryExpression() + { + $token = $this->parser->getCurrentToken(); + switch ($token->getType()) { + case /* Token::NAME_TYPE */ 5: + $this->parser->getStream()->next(); + switch ($token->getValue()) { + case 'true': + case 'TRUE': + $node = new ConstantExpression(true, $token->getLine()); + break; + + case 'false': + case 'FALSE': + $node = new ConstantExpression(false, $token->getLine()); + break; + + case 'none': + case 'NONE': + case 'null': + case 'NULL': + $node = new ConstantExpression(null, $token->getLine()); + break; + + default: + if ('(' === $this->parser->getCurrentToken()->getValue()) { + $node = $this->getFunctionNode($token->getValue(), $token->getLine()); + } else { + $node = new NameExpression($token->getValue(), $token->getLine()); + } + } + break; + + case /* Token::NUMBER_TYPE */ 6: + $this->parser->getStream()->next(); + $node = new ConstantExpression($token->getValue(), $token->getLine()); + break; + + case /* Token::STRING_TYPE */ 7: + case /* Token::INTERPOLATION_START_TYPE */ 10: + $node = $this->parseStringExpression(); + break; + + case /* Token::OPERATOR_TYPE */ 8: + if (preg_match(Lexer::REGEX_NAME, $token->getValue(), $matches) && $matches[0] == $token->getValue()) { + // in this context, string operators are variable names + $this->parser->getStream()->next(); + $node = new NameExpression($token->getValue(), $token->getLine()); + break; + } + + if (isset($this->unaryOperators[$token->getValue()])) { + $class = $this->unaryOperators[$token->getValue()]['class']; + if (!\in_array($class, [NegUnary::class, PosUnary::class])) { + throw new SyntaxError(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; + } + + // no break + default: + if ($token->test(/* Token::PUNCTUATION_TYPE */ 9, '[')) { + $node = $this->parseArrayExpression(); + } elseif ($token->test(/* Token::PUNCTUATION_TYPE */ 9, '{')) { + $node = $this->parseHashExpression(); + } elseif ($token->test(/* Token::OPERATOR_TYPE */ 8, '=') && ('==' === $this->parser->getStream()->look(-1)->getValue() || '!=' === $this->parser->getStream()->look(-1)->getValue())) { + throw new SyntaxError(sprintf('Unexpected operator of value "%s". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead.', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); + } else { + throw new SyntaxError(sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); + } + } + + return $this->parsePostfixExpression($node); + } + + public function parseStringExpression() + { + $stream = $this->parser->getStream(); + + $nodes = []; + // a string cannot be followed by another string in a single expression + $nextCanBeString = true; + while (true) { + if ($nextCanBeString && $token = $stream->nextIf(/* Token::STRING_TYPE */ 7)) { + $nodes[] = new ConstantExpression($token->getValue(), $token->getLine()); + $nextCanBeString = false; + } elseif ($stream->nextIf(/* Token::INTERPOLATION_START_TYPE */ 10)) { + $nodes[] = $this->parseExpression(); + $stream->expect(/* Token::INTERPOLATION_END_TYPE */ 11); + $nextCanBeString = true; + } else { + break; + } + } + + $expr = array_shift($nodes); + foreach ($nodes as $node) { + $expr = new ConcatBinary($expr, $node, $node->getTemplateLine()); + } + + return $expr; + } + + public function parseArrayExpression() + { + $stream = $this->parser->getStream(); + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '[', 'An array element was expected'); + + $node = new ArrayExpression([], $stream->getCurrent()->getLine()); + $first = true; + while (!$stream->test(/* Token::PUNCTUATION_TYPE */ 9, ']')) { + if (!$first) { + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ',', 'An array element must be followed by a comma'); + + // trailing ,? + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ']')) { + break; + } + } + $first = false; + + $node->addElement($this->parseExpression()); + } + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ']', 'An opened array is not properly closed'); + + return $node; + } + + public function parseHashExpression() + { + $stream = $this->parser->getStream(); + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '{', 'A hash element was expected'); + + $node = new ArrayExpression([], $stream->getCurrent()->getLine()); + $first = true; + while (!$stream->test(/* Token::PUNCTUATION_TYPE */ 9, '}')) { + if (!$first) { + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ',', 'A hash value must be followed by a comma'); + + // trailing ,? + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '}')) { + 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(/* Token::NAME_TYPE */ 5)) { + $key = new ConstantExpression($token->getValue(), $token->getLine()); + + // {a} is a shortcut for {a:a} + if ($stream->test(Token::PUNCTUATION_TYPE, [',', '}'])) { + $value = new NameExpression($key->getAttribute('value'), $key->getTemplateLine()); + $node->addElement($value, $key); + continue; + } + } elseif (($token = $stream->nextIf(/* Token::STRING_TYPE */ 7)) || $token = $stream->nextIf(/* Token::NUMBER_TYPE */ 6)) { + $key = new ConstantExpression($token->getValue(), $token->getLine()); + } elseif ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + $key = $this->parseExpression(); + } else { + $current = $stream->getCurrent(); + + throw new SyntaxError(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".', Token::typeToEnglish($current->getType()), $current->getValue()), $current->getLine(), $stream->getSourceContext()); + } + + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ':', 'A hash key must be followed by a colon (:)'); + $value = $this->parseExpression(); + + $node->addElement($value, $key); + } + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '}', 'An opened hash is not properly closed'); + + return $node; + } + + public function parsePostfixExpression($node) + { + while (true) { + $token = $this->parser->getCurrentToken(); + if (/* Token::PUNCTUATION_TYPE */ 9 == $token->getType()) { + 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 SyntaxError('Calling "parent" outside a block is forbidden.', $line, $this->parser->getStream()->getSourceContext()); + } + + if (!$this->parser->getParent() && !$this->parser->hasTraits()) { + throw new SyntaxError('Calling "parent" on a template that does not extend nor "use" another template is forbidden.', $line, $this->parser->getStream()->getSourceContext()); + } + + return new ParentExpression($this->parser->peekBlockStack(), $line); + case 'block': + $args = $this->parseArguments(); + if (\count($args) < 1) { + throw new SyntaxError('The "block" function takes one argument (the block name).', $line, $this->parser->getStream()->getSourceContext()); + } + + return new BlockReferenceExpression($args->getNode(0), \count($args) > 1 ? $args->getNode(1) : null, $line); + case 'attribute': + $args = $this->parseArguments(); + if (\count($args) < 2) { + throw new SyntaxError('The "attribute" function takes at least two arguments (the variable and the attributes).', $line, $this->parser->getStream()->getSourceContext()); + } + + return new GetAttrExpression($args->getNode(0), $args->getNode(1), \count($args) > 2 ? $args->getNode(2) : null, Template::ANY_CALL, $line); + default: + if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) { + $arguments = new ArrayExpression([], $line); + foreach ($this->parseArguments() as $n) { + $arguments->addElement($n); + } + + $node = new MethodCallExpression($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 ArrayExpression([], $lineno); + $type = Template::ANY_CALL; + if ('.' == $token->getValue()) { + $token = $stream->next(); + if ( + /* Token::NAME_TYPE */ 5 == $token->getType() + || + /* Token::NUMBER_TYPE */ 6 == $token->getType() + || + (/* Token::OPERATOR_TYPE */ 8 == $token->getType() && preg_match(Lexer::REGEX_NAME, $token->getValue())) + ) { + $arg = new ConstantExpression($token->getValue(), $lineno); + + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + $type = Template::METHOD_CALL; + foreach ($this->parseArguments() as $n) { + $arguments->addElement($n); + } + } + } else { + throw new SyntaxError('Expected name or number.', $lineno, $stream->getSourceContext()); + } + + if ($node instanceof NameExpression && null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) { + if (!$arg instanceof ConstantExpression) { + throw new SyntaxError(sprintf('Dynamic macro names are not supported (called on "%s").', $node->getAttribute('name')), $token->getLine(), $stream->getSourceContext()); + } + + $name = $arg->getAttribute('value'); + + $node = new MethodCallExpression($node, 'macro_'.$name, $arguments, $lineno); + $node->setAttribute('safe', true); + + return $node; + } + } else { + $type = Template::ARRAY_CALL; + + // slice? + $slice = false; + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ':')) { + $slice = true; + $arg = new ConstantExpression(0, $token->getLine()); + } else { + $arg = $this->parseExpression(); + } + + if ($stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) { + $slice = true; + } + + if ($slice) { + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ']')) { + $length = new ConstantExpression(null, $token->getLine()); + } else { + $length = $this->parseExpression(); + } + + $class = $this->getFilterNodeClass('slice', $token->getLine()); + $arguments = new Node([$arg, $length]); + $filter = new $class($node, new ConstantExpression('slice', $token->getLine()), $arguments, $token->getLine()); + + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ']'); + + return $filter; + } + + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ']'); + } + + return new GetAttrExpression($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(/* Token::NAME_TYPE */ 5); + + $name = new ConstantExpression($token->getValue(), $token->getLine()); + if (!$this->parser->getStream()->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + $arguments = new Node(); + } else { + $arguments = $this->parseArguments(true, false, true); + } + + $class = $this->getFilterNodeClass($name->getAttribute('value'), $token->getLine()); + + $node = new $class($node, $name, $arguments, $token->getLine(), $tag); + + if (!$this->parser->getStream()->test(/* Token::PUNCTUATION_TYPE */ 9, '|')) { + 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 Node + * + * @throws SyntaxError + */ + public function parseArguments($namedArguments = false, $definition = false, $allowArrow = false) + { + $args = []; + $stream = $this->parser->getStream(); + + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '(', 'A list of arguments must begin with an opening parenthesis'); + while (!$stream->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) { + if (!empty($args)) { + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ',', 'Arguments must be separated by a comma'); + + // if the comma above was a trailing comma, early exit the argument parse loop + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) { + break; + } + } + + if ($definition) { + $token = $stream->expect(/* Token::NAME_TYPE */ 5, null, 'An argument must be a name'); + $value = new NameExpression($token->getValue(), $this->parser->getCurrentToken()->getLine()); + } else { + $value = $this->parseExpression(0, $allowArrow); + } + + $name = null; + if ($namedArguments && $token = $stream->nextIf(/* Token::OPERATOR_TYPE */ 8, '=')) { + if (!$value instanceof NameExpression) { + throw new SyntaxError(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 SyntaxError('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(0, $allowArrow); + } + } + + if ($definition) { + if (null === $name) { + $name = $value->getAttribute('name'); + $value = new ConstantExpression(null, $this->parser->getCurrentToken()->getLine()); + } + $args[$name] = $value; + } else { + if (null === $name) { + $args[] = $value; + } else { + $args[$name] = $value; + } + } + } + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ')', 'A list of arguments must be closed by a parenthesis'); + + return new Node($args); + } + + public function parseAssignmentExpression() + { + $stream = $this->parser->getStream(); + $targets = []; + while (true) { + $token = $this->parser->getCurrentToken(); + if ($stream->test(/* Token::OPERATOR_TYPE */ 8) && preg_match(Lexer::REGEX_NAME, $token->getValue())) { + // in this context, string operators are variable names + $this->parser->getStream()->next(); + } else { + $stream->expect(/* Token::NAME_TYPE */ 5, null, 'Only variables can be assigned to'); + } + $value = $token->getValue(); + if (\in_array(strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), ['true', 'false', 'none', 'null'])) { + throw new SyntaxError(sprintf('You cannot assign a value to "%s".', $value), $token->getLine(), $stream->getSourceContext()); + } + $targets[] = new AssignNameExpression($value, $token->getLine()); + + if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + break; + } + } + + return new Node($targets); + } + + public function parseMultitargetExpression() + { + $targets = []; + while (true) { + $targets[] = $this->parseExpression(); + if (!$this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + break; + } + } + + return new Node($targets); + } + + private function parseNotTestExpression(Node $node): NotUnary + { + return new NotUnary($this->parseTestExpression($node), $this->parser->getCurrentToken()->getLine()); + } + + private function parseTestExpression(Node $node): TestExpression + { + $stream = $this->parser->getStream(); + list($name, $test) = $this->getTest($node->getTemplateLine()); + + $class = $this->getTestNodeClass($test); + $arguments = null; + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + $arguments = $this->parseArguments(true); + } elseif ($test->hasOneMandatoryArgument()) { + $arguments = new Node([0 => $this->parsePrimaryExpression()]); + } + + if ('defined' === $name && $node instanceof NameExpression && null !== $alias = $this->parser->getImportedSymbol('function', $node->getAttribute('name'))) { + $node = new MethodCallExpression($alias['node'], $alias['name'], new ArrayExpression([], $node->getTemplateLine()), $node->getTemplateLine()); + $node->setAttribute('safe', true); + } + + return new $class($node, $name, $arguments, $this->parser->getCurrentToken()->getLine()); + } + + private function getTest(int $line): array + { + $stream = $this->parser->getStream(); + $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + + if ($test = $this->env->getTest($name)) { + return [$name, $test]; + } + + if ($stream->test(/* Token::NAME_TYPE */ 5)) { + // try 2-words tests + $name = $name.' '.$this->parser->getCurrentToken()->getValue(); + + if ($test = $this->env->getTest($name)) { + $stream->next(); + + return [$name, $test]; + } + } + + $e = new SyntaxError(sprintf('Unknown "%s" test.', $name), $line, $stream->getSourceContext()); + $e->addSuggestions($name, array_keys($this->env->getTests())); + + throw $e; + } + + private function getTestNodeClass(TwigTest $test): string + { + if ($test->isDeprecated()) { + $stream = $this->parser->getStream(); + $message = sprintf('Twig Test "%s" is deprecated', $test->getName()); + + if ($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->getName(), $stream->getCurrent()->getLine()); + + @trigger_error($message, \E_USER_DEPRECATED); + } + + return $test->getNodeClass(); + } + + private function getFunctionNodeClass(string $name, int $line): string + { + if (!$function = $this->env->getFunction($name)) { + $e = new SyntaxError(sprintf('Unknown "%s" function.', $name), $line, $this->parser->getStream()->getSourceContext()); + $e->addSuggestions($name, array_keys($this->env->getFunctions())); + + throw $e; + } + + if ($function->isDeprecated()) { + $message = sprintf('Twig Function "%s" is deprecated', $function->getName()); + if ($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->getName(), $line); + + @trigger_error($message, \E_USER_DEPRECATED); + } + + return $function->getNodeClass(); + } + + private function getFilterNodeClass(string $name, int $line): string + { + if (!$filter = $this->env->getFilter($name)) { + $e = new SyntaxError(sprintf('Unknown "%s" filter.', $name), $line, $this->parser->getStream()->getSourceContext()); + $e->addSuggestions($name, array_keys($this->env->getFilters())); + + throw $e; + } + + if ($filter->isDeprecated()) { + $message = sprintf('Twig Filter "%s" is deprecated', $filter->getName()); + if ($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->getName(), $line); + + @trigger_error($message, \E_USER_DEPRECATED); + } + + return $filter->getNodeClass(); + } + + // checks that the node only contains "constant" elements + private function checkConstantExpression(Node $node): bool + { + if (!($node instanceof ConstantExpression || $node instanceof ArrayExpression + || $node instanceof NegUnary || $node instanceof PosUnary + )) { + return false; + } + + foreach ($node as $n) { + if (!$this->checkConstantExpression($n)) { + return false; + } + } + + return true; + } +} diff --git a/data/vendor/twig/twig/src/Extension/AbstractExtension.php b/data/vendor/twig/twig/src/Extension/AbstractExtension.php new file mode 100644 index 0000000..422925f --- /dev/null +++ b/data/vendor/twig/twig/src/Extension/AbstractExtension.php @@ -0,0 +1,45 @@ +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 = [$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(): array + { + return [ + new ApplyTokenParser(), + new ForTokenParser(), + new IfTokenParser(), + new ExtendsTokenParser(), + new IncludeTokenParser(), + new BlockTokenParser(), + new UseTokenParser(), + new MacroTokenParser(), + new ImportTokenParser(), + new FromTokenParser(), + new SetTokenParser(), + new FlushTokenParser(), + new DoTokenParser(), + new EmbedTokenParser(), + new WithTokenParser(), + new DeprecatedTokenParser(), + ]; + } + + public function getFilters(): array + { + return [ + // formatting filters + new TwigFilter('date', 'twig_date_format_filter', ['needs_environment' => true]), + new TwigFilter('date_modify', 'twig_date_modify_filter', ['needs_environment' => true]), + new TwigFilter('format', 'twig_sprintf'), + new TwigFilter('replace', 'twig_replace_filter'), + new TwigFilter('number_format', 'twig_number_format_filter', ['needs_environment' => true]), + new TwigFilter('abs', 'abs'), + new TwigFilter('round', 'twig_round'), + + // encoding + new TwigFilter('url_encode', 'twig_urlencode_filter'), + new TwigFilter('json_encode', 'json_encode'), + new TwigFilter('convert_encoding', 'twig_convert_encoding'), + + // string filters + new TwigFilter('title', 'twig_title_string_filter', ['needs_environment' => true]), + new TwigFilter('capitalize', 'twig_capitalize_string_filter', ['needs_environment' => true]), + new TwigFilter('upper', 'twig_upper_filter', ['needs_environment' => true]), + new TwigFilter('lower', 'twig_lower_filter', ['needs_environment' => true]), + new TwigFilter('striptags', 'twig_striptags'), + new TwigFilter('trim', 'twig_trim_filter'), + new TwigFilter('nl2br', 'twig_nl2br', ['pre_escape' => 'html', 'is_safe' => ['html']]), + new TwigFilter('spaceless', 'twig_spaceless', ['is_safe' => ['html']]), + + // array helpers + new TwigFilter('join', 'twig_join_filter'), + new TwigFilter('split', 'twig_split_filter', ['needs_environment' => true]), + new TwigFilter('sort', 'twig_sort_filter'), + new TwigFilter('merge', 'twig_array_merge'), + new TwigFilter('batch', 'twig_array_batch'), + new TwigFilter('column', 'twig_array_column'), + new TwigFilter('filter', 'twig_array_filter', ['needs_environment' => true]), + new TwigFilter('map', 'twig_array_map', ['needs_environment' => true]), + new TwigFilter('reduce', 'twig_array_reduce', ['needs_environment' => true]), + + // string/array filters + new TwigFilter('reverse', 'twig_reverse_filter', ['needs_environment' => true]), + new TwigFilter('length', 'twig_length_filter', ['needs_environment' => true]), + new TwigFilter('slice', 'twig_slice', ['needs_environment' => true]), + new TwigFilter('first', 'twig_first', ['needs_environment' => true]), + new TwigFilter('last', 'twig_last', ['needs_environment' => true]), + + // iteration and runtime + new TwigFilter('default', '_twig_default_filter', ['node_class' => DefaultFilter::class]), + new TwigFilter('keys', 'twig_get_array_keys_filter'), + ]; + } + + public function getFunctions(): array + { + return [ + new TwigFunction('max', 'max'), + new TwigFunction('min', 'min'), + new TwigFunction('range', 'range'), + new TwigFunction('constant', 'twig_constant'), + new TwigFunction('cycle', 'twig_cycle'), + new TwigFunction('random', 'twig_random', ['needs_environment' => true]), + new TwigFunction('date', 'twig_date_converter', ['needs_environment' => true]), + new TwigFunction('include', 'twig_include', ['needs_environment' => true, 'needs_context' => true, 'is_safe' => ['all']]), + new TwigFunction('source', 'twig_source', ['needs_environment' => true, 'is_safe' => ['all']]), + ]; + } + + public function getTests(): array + { + return [ + new TwigTest('even', null, ['node_class' => EvenTest::class]), + new TwigTest('odd', null, ['node_class' => OddTest::class]), + new TwigTest('defined', null, ['node_class' => DefinedTest::class]), + new TwigTest('same as', null, ['node_class' => SameasTest::class, 'one_mandatory_argument' => true]), + new TwigTest('none', null, ['node_class' => NullTest::class]), + new TwigTest('null', null, ['node_class' => NullTest::class]), + new TwigTest('divisible by', null, ['node_class' => DivisiblebyTest::class, 'one_mandatory_argument' => true]), + new TwigTest('constant', null, ['node_class' => ConstantTest::class]), + new TwigTest('empty', 'twig_test_empty'), + new TwigTest('iterable', 'twig_test_iterable'), + ]; + } + + public function getNodeVisitors(): array + { + return [new MacroAutoImportNodeVisitor()]; + } + + public function getOperators(): array + { + return [ + [ + 'not' => ['precedence' => 50, 'class' => NotUnary::class], + '-' => ['precedence' => 500, 'class' => NegUnary::class], + '+' => ['precedence' => 500, 'class' => PosUnary::class], + ], + [ + 'or' => ['precedence' => 10, 'class' => OrBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'and' => ['precedence' => 15, 'class' => AndBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'b-or' => ['precedence' => 16, 'class' => BitwiseOrBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'b-xor' => ['precedence' => 17, 'class' => BitwiseXorBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'b-and' => ['precedence' => 18, 'class' => BitwiseAndBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '==' => ['precedence' => 20, 'class' => EqualBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '!=' => ['precedence' => 20, 'class' => NotEqualBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '<=>' => ['precedence' => 20, 'class' => SpaceshipBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '<' => ['precedence' => 20, 'class' => LessBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '>' => ['precedence' => 20, 'class' => GreaterBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '>=' => ['precedence' => 20, 'class' => GreaterEqualBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '<=' => ['precedence' => 20, 'class' => LessEqualBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'not in' => ['precedence' => 20, 'class' => NotInBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'in' => ['precedence' => 20, 'class' => InBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'matches' => ['precedence' => 20, 'class' => MatchesBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'starts with' => ['precedence' => 20, 'class' => StartsWithBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'ends with' => ['precedence' => 20, 'class' => EndsWithBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '..' => ['precedence' => 25, 'class' => RangeBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '+' => ['precedence' => 30, 'class' => AddBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '-' => ['precedence' => 30, 'class' => SubBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '~' => ['precedence' => 40, 'class' => ConcatBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '*' => ['precedence' => 60, 'class' => MulBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '/' => ['precedence' => 60, 'class' => DivBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '//' => ['precedence' => 60, 'class' => FloorDivBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '%' => ['precedence' => 60, 'class' => ModBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'is' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'is not' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '**' => ['precedence' => 200, 'class' => PowerBinary::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], + '??' => ['precedence' => 300, 'class' => NullCoalesceExpression::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], + ], + ]; + } +} +} + +namespace { + use Twig\Environment; + use Twig\Error\LoaderError; + use Twig\Error\RuntimeError; + use Twig\Extension\CoreExtension; + use Twig\Extension\SandboxExtension; + use Twig\Markup; + use Twig\Source; + use Twig\Template; + use Twig\TemplateWrapper; + +/** + * 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 \Traversable|array|int|float|string $values The values to pick a random item from + * @param int|null $max Maximum value used when $values is an int + * + * @throws RuntimeError 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(Environment $env, $values = null, $max = null) +{ + if (null === $values) { + return null === $max ? mt_rand() : mt_rand(0, (int) $max); + } + + if (\is_int($values) || \is_float($values)) { + if (null === $max) { + if ($values < 0) { + $max = 0; + $min = $values; + } else { + $max = $values; + $min = 0; + } + } else { + $min = $values; + $max = $max; + } + + return mt_rand((int) $min, (int) $max); + } + + if (\is_string($values)) { + if ('' === $values) { + return ''; + } + + $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'); + } + } + } + + if (!twig_test_iterable($values)) { + return $values; + } + + $values = twig_to_array($values); + + if (0 === \count($values)) { + throw new RuntimeError('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 \DateTimeInterface|\DateInterval|string $date A date + * @param string|null $format The target format, null to use the default + * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * + * @return string The formatted date + */ +function twig_date_format_filter(Environment $env, $date, $format = null, $timezone = null) +{ + if (null === $format) { + $formats = $env->getExtension(CoreExtension::class)->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 \DateTimeInterface|string $date A date + * @param string $modifier A modifier string + * + * @return \DateTimeInterface + */ +function twig_date_modify_filter(Environment $env, $date, $modifier) +{ + $date = twig_date_converter($env, $date, false); + + return $date->modify($modifier); +} + +/** + * Returns a formatted string. + * + * @param string|null $format + * @param ...$values + * + * @return string + */ +function twig_sprintf($format, ...$values) +{ + return sprintf($format ?? '', ...$values); +} + +/** + * Converts an input to a \DateTime instance. + * + * {% if date(user.created_at) < date('+2days') %} + * {# do something #} + * {% endif %} + * + * @param \DateTimeInterface|string|null $date A date or null to use the current time + * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * + * @return \DateTimeInterface + */ +function twig_date_converter(Environment $env, $date = null, $timezone = null) +{ + // determine the timezone + if (false !== $timezone) { + if (null === $timezone) { + $timezone = $env->getExtension(CoreExtension::class)->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 \DateTimeInterface) { + $date = clone $date; + if (false !== $timezone) { + $date->setTimezone($timezone); + } + + return $date; + } + + if (null === $date || 'now' === $date) { + if (null === $date) { + $date = 'now'; + } + + return new \DateTime($date, false !== $timezone ? $timezone : $env->getExtension(CoreExtension::class)->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(CoreExtension::class)->getTimezone()); + } + + if (false !== $timezone) { + $date->setTimezone($timezone); + } + + return $date; +} + +/** + * Replaces strings within a string. + * + * @param string|null $str String to replace in + * @param array|\Traversable $from Replace values + * + * @return string + */ +function twig_replace_filter($str, $from) +{ + if (!twig_test_iterable($from)) { + throw new RuntimeError(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 ?? '', twig_to_array($from)); +} + +/** + * Rounds a number. + * + * @param int|float|string|null $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 RuntimeError('The round filter only supports the "common", "ceil", and "floor" methods.'); + } + + $value = (float) $value; + + return $method($value * 10 ** $precision) / 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 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(Environment $env, $number, $decimal = null, $decimalPoint = null, $thousandSep = null) +{ + $defaults = $env->getExtension(CoreExtension::class)->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|null $url A URL or an array of query parameters + * + * @return string The URL encoded value + */ +function twig_urlencode_filter($url) +{ + if (\is_array($url)) { + return http_build_query($url, '', '&', \PHP_QUERY_RFC3986); + } + + return rawurlencode($url ?? ''); +} + +/** + * 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 (!twig_test_iterable($arr1)) { + throw new RuntimeError(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($arr1))); + } + + if (!twig_test_iterable($arr2)) { + throw new RuntimeError(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as second argument.', \gettype($arr2))); + } + + return array_merge(twig_to_array($arr1), twig_to_array($arr2)); +} + +/** + * Slices a variable. + * + * @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(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, null === $length ? -1 : $length), $preserveKeys); + } catch (\OutOfBoundsException $e) { + return []; + } + } + + $item = iterator_to_array($item, $preserveKeys); + } + + if (\is_array($item)) { + return \array_slice($item, $start, $length, $preserveKeys); + } + + return (string) mb_substr((string) $item, $start, $length, $env->getCharset()); +} + +/** + * Returns the first element of the item. + * + * @param mixed $item A variable + * + * @return mixed The first element of the item + */ +function twig_first(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 mixed $item A variable + * + * @return mixed The last element of the item + */ +function twig_last(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 separators between elements are empty strings per default, you can define them with the optional parameters. + * + * {{ [1, 2, 3]|join(', ', ' and ') }} + * {# returns 1, 2 and 3 #} + * + * {{ [1, 2, 3]|join('|') }} + * {# returns 1|2|3 #} + * + * {{ [1, 2, 3]|join }} + * {# returns 123 #} + * + * @param array $value An array + * @param string $glue The separator + * @param string|null $and The separator for the last pair + * + * @return string The concatenated string + */ +function twig_join_filter($value, $glue = '', $and = null) +{ + if (!twig_test_iterable($value)) { + $value = (array) $value; + } + + $value = twig_to_array($value, false); + + if (0 === \count($value)) { + return ''; + } + + if (null === $and || $and === $glue) { + return implode($glue, $value); + } + + if (1 === \count($value)) { + return $value[0]; + } + + return implode($glue, \array_slice($value, 0, -1)).$and.$value[\count($value) - 1]; +} + +/** + * 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 string|null $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(Environment $env, $value, $delimiter, $limit = null) +{ + $value = $value ?? ''; + + if (\strlen($delimiter) > 0) { + return null === $limit ? explode($delimiter, $value) : explode($delimiter, $value, $limit); + } + + if ($limit <= 1) { + return preg_split('/(?getCharset()); + if ($length < $limit) { + return [$value]; + } + + $r = []; + for ($i = 0; $i < $length; $i += $limit) { + $r[] = mb_substr($value, $i, $limit, $env->getCharset()); + } + + return $r; +} + +// The '_default' filter is used internally to avoid using the ternary operator +// which costs a lot for big contexts (before PHP 5.4). So, on average, +// a function call is cheaper. +/** + * @internal + */ +function _twig_default_filter($value, $default = '') +{ + if (twig_test_empty($value)) { + return $default; + } + + return $value; +} + +/** + * Returns the keys for the given array. + * + * It is useful when you want to iterate over the keys of an array: + * + * {% 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(); + } + + $keys = []; + if ($array instanceof \Iterator) { + $array->rewind(); + while ($array->valid()) { + $keys[] = $array->key(); + $array->next(); + } + + return $keys; + } + + foreach ($array as $key => $item) { + $keys[] = $key; + } + + return $keys; + } + + if (!\is_array($array)) { + return []; + } + + return array_keys($array); +} + +/** + * Reverses a variable. + * + * @param array|\Traversable|string|null $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(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); + } + + $string = (string) $item; + + $charset = $env->getCharset(); + + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, 'UTF-8', $charset); + } + + preg_match_all('/./us', $string, $matches); + + $string = implode('', array_reverse($matches[0])); + + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, $charset, 'UTF-8'); + } + + return $string; +} + +/** + * Sorts an array. + * + * @param array|\Traversable $array + * + * @return array + */ +function twig_sort_filter($array, $arrow = null) +{ + if ($array instanceof \Traversable) { + $array = iterator_to_array($array); + } elseif (!\is_array($array)) { + throw new RuntimeError(sprintf('The sort filter only works with arrays or "Traversable", got "%s".', \gettype($array))); + } + + if (null !== $arrow) { + uasort($array, $arrow); + } else { + asort($array); + } + + return $array; +} + +/** + * @internal + */ +function twig_in_filter($value, $compare) +{ + if ($value instanceof Markup) { + $value = (string) $value; + } + if ($compare instanceof Markup) { + $compare = (string) $compare; + } + + if (\is_string($compare)) { + if (\is_string($value) || \is_int($value) || \is_float($value)) { + return '' === $value || false !== strpos($compare, (string) $value); + } + + return false; + } + + if (!is_iterable($compare)) { + return false; + } + + if (\is_object($value) || \is_resource($value)) { + if (!\is_array($compare)) { + foreach ($compare as $item) { + if ($item === $value) { + return true; + } + } + + return false; + } + + return \in_array($value, $compare, true); + } + + foreach ($compare as $item) { + if (0 === twig_compare($value, $item)) { + return true; + } + } + + return false; +} + +/** + * Compares two values using a more strict version of the PHP non-strict comparison operator. + * + * @see https://wiki.php.net/rfc/string_to_number_comparison + * @see https://wiki.php.net/rfc/trailing_whitespace_numerics + * + * @internal + */ +function twig_compare($a, $b) +{ + // int <=> string + if (\is_int($a) && \is_string($b)) { + $bTrim = trim($b, " \t\n\r\v\f"); + if (!is_numeric($bTrim)) { + return (string) $a <=> $b; + } + if ((int) $bTrim == $bTrim) { + return $a <=> (int) $bTrim; + } else { + return (float) $a <=> (float) $bTrim; + } + } + if (\is_string($a) && \is_int($b)) { + $aTrim = trim($a, " \t\n\r\v\f"); + if (!is_numeric($aTrim)) { + return $a <=> (string) $b; + } + if ((int) $aTrim == $aTrim) { + return (int) $aTrim <=> $b; + } else { + return (float) $aTrim <=> (float) $b; + } + } + + // float <=> string + if (\is_float($a) && \is_string($b)) { + if (is_nan($a)) { + return 1; + } + $bTrim = trim($b, " \t\n\r\v\f"); + if (!is_numeric($bTrim)) { + return (string) $a <=> $b; + } + + return $a <=> (float) $bTrim; + } + if (\is_string($a) && \is_float($b)) { + if (is_nan($b)) { + return 1; + } + $aTrim = trim($a, " \t\n\r\v\f"); + if (!is_numeric($aTrim)) { + return $a <=> (string) $b; + } + + return (float) $aTrim <=> $b; + } + + // fallback to <=> + return $a <=> $b; +} + +/** + * Returns a trimmed string. + * + * @param string|null $string + * @param string|null $characterMask + * @param string $side + * + * @return string + * + * @throws RuntimeError 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 RuntimeError('Trimming side must be "left", "right" or "both".'); + } +} + +/** + * Inserts HTML line breaks before all newlines in a string. + * + * @param string|null $string + * + * @return string + */ +function twig_nl2br($string) +{ + return nl2br($string ?? ''); +} + +/** + * Removes whitespaces between HTML tags. + * + * @param string|null $string + * + * @return string + */ +function twig_spaceless($content) +{ + return trim(preg_replace('/>\s+<', $content ?? '')); +} + +/** + * @param string|null $string + * @param string $to + * @param string $from + * + * @return string + */ +function twig_convert_encoding($string, $to, $from) +{ + if (!\function_exists('iconv')) { + throw new RuntimeError('Unable to convert encoding: required function iconv() does not exist. You should install ext-iconv or symfony/polyfill-iconv.'); + } + + return iconv($from, $to, $string ?? ''); +} + +/** + * Returns the length of a variable. + * + * @param mixed $thing A variable + * + * @return int The length of the value + */ +function twig_length_filter(Environment $env, $thing) +{ + if (null === $thing) { + return 0; + } + + if (is_scalar($thing)) { + return mb_strlen($thing, $env->getCharset()); + } + + if ($thing instanceof \Countable || \is_array($thing) || $thing instanceof \SimpleXMLElement) { + return \count($thing); + } + + if ($thing instanceof \Traversable) { + return iterator_count($thing); + } + + if (method_exists($thing, '__toString') && !$thing instanceof \Countable) { + return mb_strlen((string) $thing, $env->getCharset()); + } + + return 1; +} + +/** + * Converts a string to uppercase. + * + * @param string|null $string A string + * + * @return string The uppercased string + */ +function twig_upper_filter(Environment $env, $string) +{ + return mb_strtoupper($string ?? '', $env->getCharset()); +} + +/** + * Converts a string to lowercase. + * + * @param string|null $string A string + * + * @return string The lowercased string + */ +function twig_lower_filter(Environment $env, $string) +{ + return mb_strtolower($string ?? '', $env->getCharset()); +} + +/** + * Strips HTML and PHP tags from a string. + * + * @param string|null $string + * @param string[]|string|null $string + * + * @return string + */ +function twig_striptags($string, $allowable_tags = null) +{ + return strip_tags($string ?? '', $allowable_tags); +} + +/** + * Returns a titlecased string. + * + * @param string|null $string A string + * + * @return string The titlecased string + */ +function twig_title_string_filter(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 string|null $string A string + * + * @return string The capitalized string + */ +function twig_capitalize_string_filter(Environment $env, $string) +{ + $charset = $env->getCharset(); + + return mb_strtoupper(mb_substr($string ?? '', 0, 1, $charset), $charset).mb_strtolower(mb_substr($string ?? '', 1, null, $charset), $charset); +} + +/** + * @internal + */ +function twig_call_macro(Template $template, string $method, array $args, int $lineno, array $context, Source $source) +{ + if (!method_exists($template, $method)) { + $parent = $template; + while ($parent = $parent->getParent($context)) { + if (method_exists($parent, $method)) { + return $parent->$method(...$args); + } + } + + throw new RuntimeError(sprintf('Macro "%s" is not defined in template "%s".', substr($method, \strlen('macro_')), $template->getTemplateName()), $lineno, $source); + } + + return $template->$method(...$args); +} + +/** + * @internal + */ +function twig_ensure_traversable($seq) +{ + if ($seq instanceof \Traversable || \is_array($seq)) { + return $seq; + } + + return []; +} + +/** + * @internal + */ +function twig_to_array($seq, $preserveKeys = true) +{ + if ($seq instanceof \Traversable) { + return iterator_to_array($seq, $preserveKeys); + } + + if (!\is_array($seq)) { + return $seq; + } + + return $preserveKeys ? $seq : array_values($seq); +} + +/** + * 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 ($value instanceof \Traversable) { + return !iterator_count($value); + } + + if (\is_object($value) && method_exists($value, '__toString')) { + return '' === (string) $value; + } + + return '' === $value || false === $value || null === $value || [] === $value; +} + +/** + * Checks if a variable is traversable. + * + * {# evaluates to true if the foo variable is an array or a traversable object #} + * {% if foo is iterable %} + * {# ... #} + * {% 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 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(Environment $env, $context, $template, $variables = [], $withContext = true, $ignoreMissing = false, $sandboxed = false) +{ + $alreadySandboxed = false; + $sandbox = null; + if ($withContext) { + $variables = array_merge($context, $variables); + } + + if ($isSandboxed = $sandboxed && $env->hasExtension(SandboxExtension::class)) { + $sandbox = $env->getExtension(SandboxExtension::class); + if (!$alreadySandboxed = $sandbox->isSandboxed()) { + $sandbox->enableSandbox(); + } + + foreach ((\is_array($template) ? $template : [$template]) as $name) { + // if a Template instance is passed, it might have been instantiated outside of a sandbox, check security + if ($name instanceof TemplateWrapper || $name instanceof Template) { + $name->unwrap()->checkSecurity(); + } + } + } + + try { + $loaded = null; + try { + $loaded = $env->resolveTemplate($template); + } catch (LoaderError $e) { + if (!$ignoreMissing) { + throw $e; + } + } + + return $loaded ? $loaded->render($variables) : ''; + } finally { + if ($isSandboxed && !$alreadySandboxed) { + $sandbox->disableSandbox(); + } + } +} + +/** + * Returns a template content without rendering it. + * + * @param string $name The template name + * @param bool $ignoreMissing Whether to ignore missing templates or not + * + * @return string The template source + */ +function twig_source(Environment $env, $name, $ignoreMissing = false) +{ + $loader = $env->getLoader(); + try { + return $loader->getSourceContext($name)->getCode(); + } catch (LoaderError $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 object|null $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 object|null $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, $preserveKeys = true) +{ + if (!twig_test_iterable($items)) { + throw new RuntimeError(sprintf('The "batch" filter expects an array or "Traversable", got "%s".', \is_object($items) ? \get_class($items) : \gettype($items))); + } + + $size = ceil($size); + + $result = array_chunk(twig_to_array($items, $preserveKeys), $size, $preserveKeys); + + if (null !== $fill && $result) { + $last = \count($result) - 1; + if ($fillCount = $size - \count($result[$last])) { + for ($i = 0; $i < $fillCount; ++$i) { + $result[$last][] = $fill; + } + } + } + + return $result; +} + +/** + * 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 + * @param int $lineno The template line where the attribute was called + * + * @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 RuntimeError if the attribute does not exist and Twig is running in strict mode and $isDefinedTest is false + * + * @internal + */ +function twig_get_attribute(Environment $env, Source $source, $object, $item, array $arguments = [], $type = /* Template::ANY_CALL */ 'any', $isDefinedTest = false, $ignoreStrictCheck = false, $sandboxed = false, int $lineno = -1) +{ + // array + if (/* Template::METHOD_CALL */ 'method' !== $type) { + $arrayItem = \is_bool($item) || \is_float($item) ? (int) $item : $item; + + if (((\is_array($object) || $object instanceof \ArrayObject) && (isset($object[$arrayItem]) || \array_key_exists($arrayItem, (array) $object))) + || ($object instanceof ArrayAccess && isset($object[$arrayItem])) + ) { + if ($isDefinedTest) { + return true; + } + + return $object[$arrayItem]; + } + + if (/* Template::ARRAY_CALL */ 'array' === $type || !\is_object($object)) { + if ($isDefinedTest) { + return false; + } + + if ($ignoreStrictCheck || !$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 (/* Template::ARRAY_CALL */ 'array' === $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 RuntimeError($message, $lineno, $source); + } + } + + if (!\is_object($object)) { + if ($isDefinedTest) { + return false; + } + + if ($ignoreStrictCheck || !$env->isStrictVariables()) { + return; + } + + if (null === $object) { + $message = sprintf('Impossible to invoke a method ("%s") on a null variable.', $item); + } elseif (\is_array($object)) { + $message = sprintf('Impossible to invoke a method ("%s") on an array.', $item); + } else { + $message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); + } + + throw new RuntimeError($message, $lineno, $source); + } + + if ($object instanceof Template) { + throw new RuntimeError('Accessing \Twig\Template attributes is forbidden.', $lineno, $source); + } + + // object property + if (/* Template::METHOD_CALL */ 'method' !== $type) { + if (isset($object->$item) || \array_key_exists((string) $item, (array) $object)) { + if ($isDefinedTest) { + return true; + } + + if ($sandboxed) { + $env->getExtension(SandboxExtension::class)->checkPropertyAllowed($object, $item, $lineno, $source); + } + + return $object->$item; + } + } + + static $cache = []; + + $class = \get_class($object); + + // object method + // precedence: getXxx() > isXxx() > hasXxx() + if (!isset($cache[$class])) { + $methods = get_class_methods($object); + sort($methods); + $lcMethods = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, $methods); + $classCache = []; + foreach ($methods as $i => $method) { + $classCache[$method] = $method; + $classCache[$lcName = $lcMethods[$i]] = $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); + } elseif ('h' === $lcName[0] && 0 === strpos($lcName, 'has')) { + $name = substr($method, 3); + $lcName = substr($lcName, 3); + if (\in_array('is'.$lcName, $lcMethods)) { + continue; + } + } else { + continue; + } + + // skip get() and is() methods (in which case, $name is empty) + if ($name) { + if (!isset($classCache[$name])) { + $classCache[$name] = $method; + } + + if (!isset($classCache[$lcName])) { + $classCache[$lcName] = $method; + } + } + } + $cache[$class] = $classCache; + } + + $call = false; + if (isset($cache[$class][$item])) { + $method = $cache[$class][$item]; + } elseif (isset($cache[$class][$lcItem = strtr($item, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')])) { + $method = $cache[$class][$lcItem]; + } elseif (isset($cache[$class]['__call'])) { + $method = $item; + $call = true; + } else { + if ($isDefinedTest) { + return false; + } + + if ($ignoreStrictCheck || !$env->isStrictVariables()) { + return; + } + + throw new RuntimeError(sprintf('Neither the property "%1$s" nor one of the methods "%1$s()", "get%1$s()"/"is%1$s()"/"has%1$s()" or "__call()" exist and have public access in class "%2$s".', $item, $class), $lineno, $source); + } + + if ($isDefinedTest) { + return true; + } + + if ($sandboxed) { + $env->getExtension(SandboxExtension::class)->checkMethodAllowed($object, $method, $lineno, $source); + } + + // 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 = $object->$method(...$arguments); + } catch (\BadMethodCallException $e) { + if ($call && ($ignoreStrictCheck || !$env->isStrictVariables())) { + return; + } + throw $e; + } + + return $ret; +} + +/** + * Returns the values from a single column in the input array. + * + *
+ *  {% set items = [{ 'fruit' : 'apple'}, {'fruit' : 'orange' }] %}
+ *
+ *  {% set fruits = items|column('fruit') %}
+ *
+ *  {# fruits now contains ['apple', 'orange'] #}
+ * 
+ * + * @param array|Traversable $array An array + * @param mixed $name The column name + * @param mixed $index The column to use as the index/keys for the returned array + * + * @return array The array of values + */ +function twig_array_column($array, $name, $index = null): array +{ + if ($array instanceof Traversable) { + $array = iterator_to_array($array); + } elseif (!\is_array($array)) { + throw new RuntimeError(sprintf('The column filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($array))); + } + + return array_column($array, $name, $index); +} + +function twig_array_filter(Environment $env, $array, $arrow) +{ + if (!twig_test_iterable($array)) { + throw new RuntimeError(sprintf('The "filter" filter expects an array or "Traversable", got "%s".', \is_object($array) ? \get_class($array) : \gettype($array))); + } + + if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { + throw new RuntimeError('The callable passed to "filter" filter must be a Closure in sandbox mode.'); + } + + if (\is_array($array)) { + return array_filter($array, $arrow, \ARRAY_FILTER_USE_BOTH); + } + + // the IteratorIterator wrapping is needed as some internal PHP classes are \Traversable but do not implement \Iterator + return new \CallbackFilterIterator(new \IteratorIterator($array), $arrow); +} + +function twig_array_map(Environment $env, $array, $arrow) +{ + if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { + throw new RuntimeError('The callable passed to the "map" filter must be a Closure in sandbox mode.'); + } + + $r = []; + foreach ($array as $k => $v) { + $r[$k] = $arrow($v, $k); + } + + return $r; +} + +function twig_array_reduce(Environment $env, $array, $arrow, $initial = null) +{ + if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { + throw new RuntimeError('The callable passed to the "reduce" filter must be a Closure in sandbox mode.'); + } + + if (!\is_array($array)) { + if (!$array instanceof \Traversable) { + throw new RuntimeError(sprintf('The "reduce" filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($array))); + } + + $array = iterator_to_array($array); + } + + return array_reduce($array, $arrow, $initial); +} +} diff --git a/data/vendor/twig/twig/src/Extension/DebugExtension.php b/data/vendor/twig/twig/src/Extension/DebugExtension.php new file mode 100644 index 0000000..bfb23d7 --- /dev/null +++ b/data/vendor/twig/twig/src/Extension/DebugExtension.php @@ -0,0 +1,64 @@ + $isDumpOutputHtmlSafe ? ['html'] : [], 'needs_context' => true, 'needs_environment' => true, 'is_variadic' => true]), + ]; + } +} +} + +namespace { +use Twig\Environment; +use Twig\Template; +use Twig\TemplateWrapper; + +function twig_var_dump(Environment $env, $context, ...$vars) +{ + if (!$env->isDebug()) { + return; + } + + ob_start(); + + if (!$vars) { + $vars = []; + foreach ($context as $key => $value) { + if (!$value instanceof Template && !$value instanceof TemplateWrapper) { + $vars[$key] = $value; + } + } + + var_dump($vars); + } else { + var_dump(...$vars); + } + + return ob_get_clean(); +} +} diff --git a/data/vendor/twig/twig/src/Extension/EscaperExtension.php b/data/vendor/twig/twig/src/Extension/EscaperExtension.php new file mode 100644 index 0000000..72795da --- /dev/null +++ b/data/vendor/twig/twig/src/Extension/EscaperExtension.php @@ -0,0 +1,421 @@ +setDefaultStrategy($defaultStrategy); + } + + public function getTokenParsers(): array + { + return [new AutoEscapeTokenParser()]; + } + + public function getNodeVisitors(): array + { + return [new EscaperNodeVisitor()]; + } + + public function getFilters(): array + { + return [ + new TwigFilter('escape', 'twig_escape_filter', ['needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe']), + new TwigFilter('e', 'twig_escape_filter', ['needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe']), + new TwigFilter('raw', 'twig_raw_filter', ['is_safe' => ['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): void + { + if ('name' === $defaultStrategy) { + $defaultStrategy = [FileExtensionEscapingStrategy::class, '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(string $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; + } + + /** + * Defines a new escaper to be used via the escape filter. + * + * @param string $strategy The strategy name that should be used as a strategy in the escape call + * @param callable $callable A valid PHP callable + */ + public function setEscaper($strategy, callable $callable) + { + $this->escapers[$strategy] = $callable; + } + + /** + * Gets all defined escapers. + * + * @return callable[] An array of escapers + */ + public function getEscapers() + { + return $this->escapers; + } + + public function setSafeClasses(array $safeClasses = []) + { + $this->safeClasses = []; + $this->safeLookup = []; + foreach ($safeClasses as $class => $strategies) { + $this->addSafeClass($class, $strategies); + } + } + + public function addSafeClass(string $class, array $strategies) + { + $class = ltrim($class, '\\'); + if (!isset($this->safeClasses[$class])) { + $this->safeClasses[$class] = []; + } + $this->safeClasses[$class] = array_merge($this->safeClasses[$class], $strategies); + + foreach ($strategies as $strategy) { + $this->safeLookup[$strategy][$class] = true; + } + } +} +} + +namespace { +use Twig\Environment; +use Twig\Error\RuntimeError; +use Twig\Extension\EscaperExtension; +use Twig\Markup; +use Twig\Node\Expression\ConstantExpression; +use Twig\Node\Node; + +/** + * Marks a variable as being safe. + * + * @param string $string A PHP variable + */ +function twig_raw_filter($string) +{ + return $string; +} + +/** + * Escapes a string. + * + * @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(Environment $env, $string, $strategy = 'html', $charset = null, $autoescape = false) +{ + if ($autoescape && $string instanceof Markup) { + return $string; + } + + if (!\is_string($string)) { + if (\is_object($string) && method_exists($string, '__toString')) { + if ($autoescape) { + $c = \get_class($string); + $ext = $env->getExtension(EscaperExtension::class); + if (!isset($ext->safeClasses[$c])) { + $ext->safeClasses[$c] = []; + foreach (class_parents($string) + class_implements($string) as $class) { + if (isset($ext->safeClasses[$class])) { + $ext->safeClasses[$c] = array_unique(array_merge($ext->safeClasses[$c], $ext->safeClasses[$class])); + foreach ($ext->safeClasses[$class] as $s) { + $ext->safeLookup[$s][$c] = true; + } + } + } + } + if (isset($ext->safeLookup[$strategy][$c]) || isset($ext->safeLookup['all'][$c])) { + return (string) $string; + } + } + + $string = (string) $string; + } elseif (\in_array($strategy, ['html', 'js', 'css', 'html_attr', 'url'])) { + return $string; + } + } + + if ('' === $string) { + return ''; + } + + if (null === $charset) { + $charset = $env->getCharset(); + } + + switch ($strategy) { + case 'html': + // see https://www.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 = [ + '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 iconv('UTF-8', $charset, $string); + + case 'js': + // escape all non-alphanumeric characters + // into their \x or \uHHHH representations + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, 'UTF-8', $charset); + } + + if (!preg_match('//u', $string)) { + throw new RuntimeError('The string to escape is not a valid UTF-8 string.'); + } + + $string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su', function ($matches) { + $char = $matches[0]; + + /* + * A few characters have short escape sequences in JSON and JavaScript. + * Escape sequences supported only by JavaScript, not JSON, are omitted. + * \" is also supported but omitted, because the resulting string is not HTML safe. + */ + static $shortMap = [ + '\\' => '\\\\', + '/' => '\\/', + "\x08" => '\b', + "\x0C" => '\f', + "\x0A" => '\n', + "\x0D" => '\r', + "\x09" => '\t', + ]; + + if (isset($shortMap[$char])) { + return $shortMap[$char]; + } + + $codepoint = mb_ord($char, 'UTF-8'); + if (0x10000 > $codepoint) { + return sprintf('\u%04X', $codepoint); + } + + // Split characters outside the BMP into surrogate pairs + // https://tools.ietf.org/html/rfc2781.html#section-2.1 + $u = $codepoint - 0x10000; + $high = 0xD800 | ($u >> 10); + $low = 0xDC00 | ($u & 0x3FF); + + return sprintf('\u%04X\u%04X', $high, $low); + }, $string); + + if ('UTF-8' !== $charset) { + $string = iconv('UTF-8', $charset, $string); + } + + return $string; + + case 'css': + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, 'UTF-8', $charset); + } + + if (!preg_match('//u', $string)) { + throw new RuntimeError('The string to escape is not a valid UTF-8 string.'); + } + + $string = preg_replace_callback('#[^a-zA-Z0-9]#Su', function ($matches) { + $char = $matches[0]; + + return sprintf('\\%X ', 1 === \strlen($char) ? \ord($char) : mb_ord($char, 'UTF-8')); + }, $string); + + if ('UTF-8' !== $charset) { + $string = iconv('UTF-8', $charset, $string); + } + + return $string; + + case 'html_attr': + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, 'UTF-8', $charset); + } + + if (!preg_match('//u', $string)) { + throw new RuntimeError('The string to escape is not a valid UTF-8 string.'); + } + + $string = preg_replace_callback('#[^a-zA-Z0-9,\.\-_]#Su', function ($matches) { + /** + * This function is adapted from code coming from Zend Framework. + * + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (https://www.zend.com) + * @license https://framework.zend.com/license/new-bsd New BSD License + */ + $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 && "\t" != $chr && "\n" != $chr && "\r" != $chr) || ($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 (1 === \strlen($chr)) { + /* + * 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 = [ + 34 => '"', /* quotation mark */ + 38 => '&', /* ampersand */ + 60 => '<', /* less-than sign */ + 62 => '>', /* greater-than sign */ + ]; + + if (isset($entityMap[$ord])) { + return $entityMap[$ord]; + } + + return sprintf('&#x%02X;', $ord); + } + + /* + * Per OWASP recommendations, we'll use hex entities for any other + * characters where a named entity does not exist. + */ + return sprintf('&#x%04X;', mb_ord($chr, 'UTF-8')); + }, $string); + + if ('UTF-8' !== $charset) { + $string = iconv('UTF-8', $charset, $string); + } + + return $string; + + case 'url': + return rawurlencode($string); + + default: + static $escapers; + + if (null === $escapers) { + $escapers = $env->getExtension(EscaperExtension::class)->getEscapers(); + } + + if (isset($escapers[$strategy])) { + return $escapers[$strategy]($env, $string, $charset); + } + + $validStrategies = implode(', ', array_merge(['html', 'js', 'url', 'css', 'html_attr'], array_keys($escapers))); + + throw new RuntimeError(sprintf('Invalid escaping strategy "%s" (valid ones: %s).', $strategy, $validStrategies)); + } +} + +/** + * @internal + */ +function twig_escape_filter_is_safe(Node $filterArgs) +{ + foreach ($filterArgs as $arg) { + if ($arg instanceof ConstantExpression) { + return [$arg->getAttribute('value')]; + } + + return []; + } + + return ['html']; +} +} diff --git a/data/vendor/twig/twig/src/Extension/ExtensionInterface.php b/data/vendor/twig/twig/src/Extension/ExtensionInterface.php new file mode 100644 index 0000000..75fa237 --- /dev/null +++ b/data/vendor/twig/twig/src/Extension/ExtensionInterface.php @@ -0,0 +1,68 @@ + + */ +interface ExtensionInterface +{ + /** + * Returns the token parser instances to add to the existing list. + * + * @return TokenParserInterface[] + */ + public function getTokenParsers(); + + /** + * Returns the node visitor instances to add to the existing list. + * + * @return NodeVisitorInterface[] + */ + public function getNodeVisitors(); + + /** + * Returns a list of filters to add to the existing list. + * + * @return TwigFilter[] + */ + public function getFilters(); + + /** + * Returns a list of tests to add to the existing list. + * + * @return TwigTest[] + */ + public function getTests(); + + /** + * Returns a list of functions to add to the existing list. + * + * @return TwigFunction[] + */ + 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(); +} diff --git a/data/vendor/twig/twig/src/Extension/GlobalsInterface.php b/data/vendor/twig/twig/src/Extension/GlobalsInterface.php new file mode 100644 index 0000000..ec0c682 --- /dev/null +++ b/data/vendor/twig/twig/src/Extension/GlobalsInterface.php @@ -0,0 +1,25 @@ + + */ +interface GlobalsInterface +{ + public function getGlobals(): array; +} diff --git a/data/vendor/twig/twig/src/Extension/OptimizerExtension.php b/data/vendor/twig/twig/src/Extension/OptimizerExtension.php new file mode 100644 index 0000000..965bfdb --- /dev/null +++ b/data/vendor/twig/twig/src/Extension/OptimizerExtension.php @@ -0,0 +1,29 @@ +optimizers = $optimizers; + } + + public function getNodeVisitors(): array + { + return [new OptimizerNodeVisitor($this->optimizers)]; + } +} diff --git a/data/vendor/twig/twig/src/Extension/ProfilerExtension.php b/data/vendor/twig/twig/src/Extension/ProfilerExtension.php new file mode 100644 index 0000000..43e4a44 --- /dev/null +++ b/data/vendor/twig/twig/src/Extension/ProfilerExtension.php @@ -0,0 +1,52 @@ +actives[] = $profile; + } + + /** + * @return void + */ + public function enter(Profile $profile) + { + $this->actives[0]->addProfile($profile); + array_unshift($this->actives, $profile); + } + + /** + * @return void + */ + public function leave(Profile $profile) + { + $profile->leave(); + array_shift($this->actives); + + if (1 === \count($this->actives)) { + $this->actives[0]->leave(); + } + } + + public function getNodeVisitors(): array + { + return [new ProfilerNodeVisitor(static::class)]; + } +} diff --git a/data/vendor/twig/twig/src/Extension/RuntimeExtensionInterface.php b/data/vendor/twig/twig/src/Extension/RuntimeExtensionInterface.php new file mode 100644 index 0000000..63bc3b1 --- /dev/null +++ b/data/vendor/twig/twig/src/Extension/RuntimeExtensionInterface.php @@ -0,0 +1,19 @@ + + */ +interface RuntimeExtensionInterface +{ +} diff --git a/data/vendor/twig/twig/src/Extension/SandboxExtension.php b/data/vendor/twig/twig/src/Extension/SandboxExtension.php new file mode 100644 index 0000000..0a28cab --- /dev/null +++ b/data/vendor/twig/twig/src/Extension/SandboxExtension.php @@ -0,0 +1,123 @@ +policy = $policy; + $this->sandboxedGlobally = $sandboxed; + } + + public function getTokenParsers(): array + { + return [new SandboxTokenParser()]; + } + + public function getNodeVisitors(): array + { + return [new SandboxNodeVisitor()]; + } + + public function enableSandbox(): void + { + $this->sandboxed = true; + } + + public function disableSandbox(): void + { + $this->sandboxed = false; + } + + public function isSandboxed(): bool + { + return $this->sandboxedGlobally || $this->sandboxed; + } + + public function isSandboxedGlobally(): bool + { + return $this->sandboxedGlobally; + } + + public function setSecurityPolicy(SecurityPolicyInterface $policy) + { + $this->policy = $policy; + } + + public function getSecurityPolicy(): SecurityPolicyInterface + { + return $this->policy; + } + + public function checkSecurity($tags, $filters, $functions): void + { + if ($this->isSandboxed()) { + $this->policy->checkSecurity($tags, $filters, $functions); + } + } + + public function checkMethodAllowed($obj, $method, int $lineno = -1, Source $source = null): void + { + if ($this->isSandboxed()) { + try { + $this->policy->checkMethodAllowed($obj, $method); + } catch (SecurityNotAllowedMethodError $e) { + $e->setSourceContext($source); + $e->setTemplateLine($lineno); + + throw $e; + } + } + } + + public function checkPropertyAllowed($obj, $method, int $lineno = -1, Source $source = null): void + { + if ($this->isSandboxed()) { + try { + $this->policy->checkPropertyAllowed($obj, $method); + } catch (SecurityNotAllowedPropertyError $e) { + $e->setSourceContext($source); + $e->setTemplateLine($lineno); + + throw $e; + } + } + } + + public function ensureToStringAllowed($obj, int $lineno = -1, Source $source = null) + { + if ($this->isSandboxed() && \is_object($obj) && method_exists($obj, '__toString')) { + try { + $this->policy->checkMethodAllowed($obj, '__toString'); + } catch (SecurityNotAllowedMethodError $e) { + $e->setSourceContext($source); + $e->setTemplateLine($lineno); + + throw $e; + } + } + + return $obj; + } +} diff --git a/data/vendor/twig/twig/src/Extension/StagingExtension.php b/data/vendor/twig/twig/src/Extension/StagingExtension.php new file mode 100644 index 0000000..0ea47f9 --- /dev/null +++ b/data/vendor/twig/twig/src/Extension/StagingExtension.php @@ -0,0 +1,100 @@ + + * + * @internal + */ +final class StagingExtension extends AbstractExtension +{ + private $functions = []; + private $filters = []; + private $visitors = []; + private $tokenParsers = []; + private $tests = []; + + public function addFunction(TwigFunction $function): void + { + if (isset($this->functions[$function->getName()])) { + throw new \LogicException(sprintf('Function "%s" is already registered.', $function->getName())); + } + + $this->functions[$function->getName()] = $function; + } + + public function getFunctions(): array + { + return $this->functions; + } + + public function addFilter(TwigFilter $filter): void + { + if (isset($this->filters[$filter->getName()])) { + throw new \LogicException(sprintf('Filter "%s" is already registered.', $filter->getName())); + } + + $this->filters[$filter->getName()] = $filter; + } + + public function getFilters(): array + { + return $this->filters; + } + + public function addNodeVisitor(NodeVisitorInterface $visitor): void + { + $this->visitors[] = $visitor; + } + + public function getNodeVisitors(): array + { + return $this->visitors; + } + + public function addTokenParser(TokenParserInterface $parser): void + { + if (isset($this->tokenParsers[$parser->getTag()])) { + throw new \LogicException(sprintf('Tag "%s" is already registered.', $parser->getTag())); + } + + $this->tokenParsers[$parser->getTag()] = $parser; + } + + public function getTokenParsers(): array + { + return $this->tokenParsers; + } + + public function addTest(TwigTest $test): void + { + if (isset($this->tests[$test->getName()])) { + throw new \LogicException(sprintf('Test "%s" is already registered.', $test->getName())); + } + + $this->tests[$test->getName()] = $test; + } + + public function getTests(): array + { + return $this->tests; + } +} diff --git a/data/vendor/twig/twig/src/Extension/StringLoaderExtension.php b/data/vendor/twig/twig/src/Extension/StringLoaderExtension.php new file mode 100644 index 0000000..7b45147 --- /dev/null +++ b/data/vendor/twig/twig/src/Extension/StringLoaderExtension.php @@ -0,0 +1,42 @@ + true]), + ]; + } +} +} + +namespace { +use Twig\Environment; +use Twig\TemplateWrapper; + +/** + * Loads a template from a string. + * + * {{ include(template_from_string("Hello {{ name }}")) }} + * + * @param string $template A template as a string or object implementing __toString() + * @param string $name An optional name of the template to be used in error messages + */ +function twig_template_from_string(Environment $env, $template, string $name = null): TemplateWrapper +{ + return $env->createTemplate((string) $template, $name); +} +} diff --git a/data/vendor/twig/twig/src/ExtensionSet.php b/data/vendor/twig/twig/src/ExtensionSet.php new file mode 100644 index 0000000..36e5bbc --- /dev/null +++ b/data/vendor/twig/twig/src/ExtensionSet.php @@ -0,0 +1,463 @@ + + * + * @internal + */ +final class ExtensionSet +{ + private $extensions; + private $initialized = false; + private $runtimeInitialized = false; + private $staging; + private $parsers; + private $visitors; + private $filters; + private $tests; + private $functions; + private $unaryOperators; + private $binaryOperators; + private $globals; + private $functionCallbacks = []; + private $filterCallbacks = []; + private $parserCallbacks = []; + private $lastModified = 0; + + public function __construct() + { + $this->staging = new StagingExtension(); + } + + public function initRuntime() + { + $this->runtimeInitialized = true; + } + + public function hasExtension(string $class): bool + { + return isset($this->extensions[ltrim($class, '\\')]); + } + + public function getExtension(string $class): ExtensionInterface + { + $class = ltrim($class, '\\'); + + if (!isset($this->extensions[$class])) { + throw new RuntimeError(sprintf('The "%s" extension is not enabled.', $class)); + } + + return $this->extensions[$class]; + } + + /** + * @param ExtensionInterface[] $extensions + */ + public function setExtensions(array $extensions): void + { + foreach ($extensions as $extension) { + $this->addExtension($extension); + } + } + + /** + * @return ExtensionInterface[] + */ + public function getExtensions(): array + { + return $this->extensions; + } + + public function getSignature(): string + { + return json_encode(array_keys($this->extensions)); + } + + public function isInitialized(): bool + { + return $this->initialized || $this->runtimeInitialized; + } + + public function getLastModified(): int + { + if (0 !== $this->lastModified) { + return $this->lastModified; + } + + foreach ($this->extensions as $extension) { + $r = new \ReflectionObject($extension); + if (is_file($r->getFileName()) && ($extensionTime = filemtime($r->getFileName())) > $this->lastModified) { + $this->lastModified = $extensionTime; + } + } + + return $this->lastModified; + } + + public function addExtension(ExtensionInterface $extension): void + { + $class = \get_class($extension); + + if ($this->initialized) { + throw new \LogicException(sprintf('Unable to register extension "%s" as extensions have already been initialized.', $class)); + } + + if (isset($this->extensions[$class])) { + throw new \LogicException(sprintf('Unable to register extension "%s" as it is already registered.', $class)); + } + + $this->extensions[$class] = $extension; + } + + public function addFunction(TwigFunction $function): void + { + if ($this->initialized) { + throw new \LogicException(sprintf('Unable to add function "%s" as extensions have already been initialized.', $function->getName())); + } + + $this->staging->addFunction($function); + } + + /** + * @return TwigFunction[] + */ + public function getFunctions(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->functions; + } + + public function getFunction(string $name): ?TwigFunction + { + if (!$this->initialized) { + $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 && preg_match('#^'.$pattern.'$#', $name, $matches)) { + array_shift($matches); + $function->setArguments($matches); + + return $function; + } + } + + foreach ($this->functionCallbacks as $callback) { + if (false !== $function = $callback($name)) { + return $function; + } + } + + return null; + } + + public function registerUndefinedFunctionCallback(callable $callable): void + { + $this->functionCallbacks[] = $callable; + } + + public function addFilter(TwigFilter $filter): void + { + if ($this->initialized) { + throw new \LogicException(sprintf('Unable to add filter "%s" as extensions have already been initialized.', $filter->getName())); + } + + $this->staging->addFilter($filter); + } + + /** + * @return TwigFilter[] + */ + public function getFilters(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->filters; + } + + public function getFilter(string $name): ?TwigFilter + { + if (!$this->initialized) { + $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 && preg_match('#^'.$pattern.'$#', $name, $matches)) { + array_shift($matches); + $filter->setArguments($matches); + + return $filter; + } + } + + foreach ($this->filterCallbacks as $callback) { + if (false !== $filter = $callback($name)) { + return $filter; + } + } + + return null; + } + + public function registerUndefinedFilterCallback(callable $callable): void + { + $this->filterCallbacks[] = $callable; + } + + public function addNodeVisitor(NodeVisitorInterface $visitor): void + { + if ($this->initialized) { + throw new \LogicException('Unable to add a node visitor as extensions have already been initialized.'); + } + + $this->staging->addNodeVisitor($visitor); + } + + /** + * @return NodeVisitorInterface[] + */ + public function getNodeVisitors(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->visitors; + } + + public function addTokenParser(TokenParserInterface $parser): void + { + if ($this->initialized) { + throw new \LogicException('Unable to add a token parser as extensions have already been initialized.'); + } + + $this->staging->addTokenParser($parser); + } + + /** + * @return TokenParserInterface[] + */ + public function getTokenParsers(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->parsers; + } + + public function getTokenParser(string $name): ?TokenParserInterface + { + if (!$this->initialized) { + $this->initExtensions(); + } + + if (isset($this->parsers[$name])) { + return $this->parsers[$name]; + } + + foreach ($this->parserCallbacks as $callback) { + if (false !== $parser = $callback($name)) { + return $parser; + } + } + + return null; + } + + public function registerUndefinedTokenParserCallback(callable $callable): void + { + $this->parserCallbacks[] = $callable; + } + + public function getGlobals(): array + { + if (null !== $this->globals) { + return $this->globals; + } + + $globals = []; + foreach ($this->extensions as $extension) { + if (!$extension instanceof GlobalsInterface) { + continue; + } + + $extGlobals = $extension->getGlobals(); + if (!\is_array($extGlobals)) { + throw new \UnexpectedValueException(sprintf('"%s::getGlobals()" must return an array of globals.', \get_class($extension))); + } + + $globals = array_merge($globals, $extGlobals); + } + + if ($this->initialized) { + $this->globals = $globals; + } + + return $globals; + } + + public function addTest(TwigTest $test): void + { + if ($this->initialized) { + throw new \LogicException(sprintf('Unable to add test "%s" as extensions have already been initialized.', $test->getName())); + } + + $this->staging->addTest($test); + } + + /** + * @return TwigTest[] + */ + public function getTests(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->tests; + } + + public function getTest(string $name): ?TwigTest + { + if (!$this->initialized) { + $this->initExtensions(); + } + + if (isset($this->tests[$name])) { + return $this->tests[$name]; + } + + foreach ($this->tests as $pattern => $test) { + $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); + + if ($count) { + if (preg_match('#^'.$pattern.'$#', $name, $matches)) { + array_shift($matches); + $test->setArguments($matches); + + return $test; + } + } + } + + return null; + } + + public function getUnaryOperators(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->unaryOperators; + } + + public function getBinaryOperators(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->binaryOperators; + } + + private function initExtensions(): void + { + $this->parsers = []; + $this->filters = []; + $this->functions = []; + $this->tests = []; + $this->visitors = []; + $this->unaryOperators = []; + $this->binaryOperators = []; + + 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->initialized = true; + } + + private function initExtension(ExtensionInterface $extension): void + { + // filters + foreach ($extension->getFilters() as $filter) { + $this->filters[$filter->getName()] = $filter; + } + + // functions + foreach ($extension->getFunctions() as $function) { + $this->functions[$function->getName()] = $function; + } + + // tests + foreach ($extension->getTests() as $test) { + $this->tests[$test->getName()] = $test; + } + + // token parsers + foreach ($extension->getTokenParsers() as $parser) { + if (!$parser instanceof TokenParserInterface) { + throw new \LogicException('getTokenParsers() must return an array of \Twig\TokenParser\TokenParserInterface.'); + } + + $this->parsers[$parser->getTag()] = $parser; + } + + // 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]); + } + } +} diff --git a/data/vendor/twig/twig/src/FileExtensionEscapingStrategy.php b/data/vendor/twig/twig/src/FileExtensionEscapingStrategy.php new file mode 100644 index 0000000..65198bb --- /dev/null +++ b/data/vendor/twig/twig/src/FileExtensionEscapingStrategy.php @@ -0,0 +1,60 @@ + + */ +class 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(string $name) + { + if (\in_array(substr($name, -1), ['/', '\\'])) { + 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/data/vendor/twig/twig/src/Lexer.php b/data/vendor/twig/twig/src/Lexer.php new file mode 100644 index 0000000..9ff028c --- /dev/null +++ b/data/vendor/twig/twig/src/Lexer.php @@ -0,0 +1,501 @@ + + */ +class Lexer +{ + private $tokens; + private $code; + private $cursor; + private $lineno; + private $end; + private $state; + private $states; + private $brackets; + private $env; + private $source; + private $options; + private $regexes; + private $position; + private $positions; + private $currentVarBlockLine; + + public const STATE_DATA = 0; + public const STATE_BLOCK = 1; + public const STATE_VAR = 2; + public const STATE_STRING = 3; + public const STATE_INTERPOLATION = 4; + + public const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A'; + public const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?([Ee][\+\-][0-9]+)?/A'; + public const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As'; + public const REGEX_DQ_STRING_DELIM = '/"/A'; + public const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As'; + public const PUNCTUATION = '()[]{}?:.,|'; + + public function __construct(Environment $env, array $options = []) + { + $this->env = $env; + + $this->options = array_merge([ + 'tag_comment' => ['{#', '#}'], + 'tag_block' => ['{%', '%}'], + 'tag_variable' => ['{{', '}}'], + 'whitespace_trim' => '-', + 'whitespace_line_trim' => '~', + 'whitespace_line_chars' => ' \t\0\x0B', + 'interpolation' => ['#{', '}'], + ], $options); + + // when PHP 7.3 is the min version, we will be able to remove the '#' part in preg_quote as it's part of the default + $this->regexes = [ + // }} + 'lex_var' => '{ + \s* + (?:'. + preg_quote($this->options['whitespace_trim'].$this->options['tag_variable'][1], '#').'\s*'. // -}}\s* + '|'. + preg_quote($this->options['whitespace_line_trim'].$this->options['tag_variable'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~}}[ \t\0\x0B]* + '|'. + preg_quote($this->options['tag_variable'][1], '#'). // }} + ') + }Ax', + + // %} + 'lex_block' => '{ + \s* + (?:'. + preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '#').'\s*\n?'. // -%}\s*\n? + '|'. + preg_quote($this->options['whitespace_line_trim'].$this->options['tag_block'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~%}[ \t\0\x0B]* + '|'. + preg_quote($this->options['tag_block'][1], '#').'\n?'. // %}\n? + ') + }Ax', + + // {% endverbatim %} + 'lex_raw_data' => '{'. + preg_quote($this->options['tag_block'][0], '#'). // {% + '('. + $this->options['whitespace_trim']. // - + '|'. + $this->options['whitespace_line_trim']. // ~ + ')?\s*endverbatim\s*'. + '(?:'. + preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '#').'\s*'. // -%} + '|'. + preg_quote($this->options['whitespace_line_trim'].$this->options['tag_block'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~%}[ \t\0\x0B]* + '|'. + preg_quote($this->options['tag_block'][1], '#'). // %} + ') + }sx', + + 'operator' => $this->getOperatorRegex(), + + // #} + 'lex_comment' => '{ + (?:'. + preg_quote($this->options['whitespace_trim'].$this->options['tag_comment'][1], '#').'\s*\n?'. // -#}\s*\n? + '|'. + preg_quote($this->options['whitespace_line_trim'].$this->options['tag_comment'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~#}[ \t\0\x0B]* + '|'. + preg_quote($this->options['tag_comment'][1], '#').'\n?'. // #}\n? + ') + }sx', + + // verbatim %} + 'lex_block_raw' => '{ + \s*verbatim\s* + (?:'. + preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '#').'\s*'. // -%}\s* + '|'. + preg_quote($this->options['whitespace_line_trim'].$this->options['tag_block'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~%}[ \t\0\x0B]* + '|'. + preg_quote($this->options['tag_block'][1], '#'). // %} + ') + }Asx', + + 'lex_block_line' => '{\s*line\s+(\d+)\s*'.preg_quote($this->options['tag_block'][1], '#').'}As', + + // {{ or {% or {# + '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'], '#'). // - + '|'. + preg_quote($this->options['whitespace_line_trim'], '#'). // ~ + ')? + }sx', + 'interpolation_start' => '{'.preg_quote($this->options['interpolation'][0], '#').'\s*}A', + 'interpolation_end' => '{\s*'.preg_quote($this->options['interpolation'][1], '#').'}A', + ]; + } + + public function tokenize(Source $source): TokenStream + { + $this->source = $source; + $this->code = str_replace(["\r\n", "\r"], "\n", $source->getCode()); + $this->cursor = 0; + $this->lineno = 1; + $this->end = \strlen($this->code); + $this->tokens = []; + $this->state = self::STATE_DATA; + $this->states = []; + $this->brackets = []; + $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(/* Token::EOF_TYPE */ -1); + + if (!empty($this->brackets)) { + list($expect, $lineno) = array_pop($this->brackets); + throw new SyntaxError(sprintf('Unclosed "%s".', $expect), $lineno, $this->source); + } + + return new TokenStream($this->tokens, $this->source); + } + + private function lexData(): void + { + // 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(/* Token::TEXT_TYPE */ 0, 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); + + // trim? + if (isset($this->positions[2][$this->position][0])) { + if ($this->options['whitespace_trim'] === $this->positions[2][$this->position][0]) { + // whitespace_trim detected ({%-, {{- or {#-) + $text = rtrim($text); + } elseif ($this->options['whitespace_line_trim'] === $this->positions[2][$this->position][0]) { + // whitespace_line_trim detected ({%~, {{~ or {#~) + // don't trim \r and \n + $text = rtrim($text, " \t\0\x0B"); + } + } + $this->pushToken(/* Token::TEXT_TYPE */ 0, $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, 0, $this->cursor)) { + $this->moveCursor($match[0]); + $this->lexRawData(); + // {% line \d+ %} + } elseif (preg_match($this->regexes['lex_block_line'], $this->code, $match, 0, $this->cursor)) { + $this->moveCursor($match[0]); + $this->lineno = (int) $match[1]; + } else { + $this->pushToken(/* Token::BLOCK_START_TYPE */ 1); + $this->pushState(self::STATE_BLOCK); + $this->currentVarBlockLine = $this->lineno; + } + break; + + case $this->options['tag_variable'][0]: + $this->pushToken(/* Token::VAR_START_TYPE */ 2); + $this->pushState(self::STATE_VAR); + $this->currentVarBlockLine = $this->lineno; + break; + } + } + + private function lexBlock(): void + { + if (empty($this->brackets) && preg_match($this->regexes['lex_block'], $this->code, $match, 0, $this->cursor)) { + $this->pushToken(/* Token::BLOCK_END_TYPE */ 3); + $this->moveCursor($match[0]); + $this->popState(); + } else { + $this->lexExpression(); + } + } + + private function lexVar(): void + { + if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, 0, $this->cursor)) { + $this->pushToken(/* Token::VAR_END_TYPE */ 4); + $this->moveCursor($match[0]); + $this->popState(); + } else { + $this->lexExpression(); + } + } + + private function lexExpression(): void + { + // whitespace + if (preg_match('/\s+/A', $this->code, $match, 0, $this->cursor)) { + $this->moveCursor($match[0]); + + if ($this->cursor >= $this->end) { + throw new SyntaxError(sprintf('Unclosed "%s".', self::STATE_BLOCK === $this->state ? 'block' : 'variable'), $this->currentVarBlockLine, $this->source); + } + } + + // arrow function + if ('=' === $this->code[$this->cursor] && '>' === $this->code[$this->cursor + 1]) { + $this->pushToken(Token::ARROW_TYPE, '=>'); + $this->moveCursor('=>'); + } + // operators + elseif (preg_match($this->regexes['operator'], $this->code, $match, 0, $this->cursor)) { + $this->pushToken(/* Token::OPERATOR_TYPE */ 8, preg_replace('/\s+/', ' ', $match[0])); + $this->moveCursor($match[0]); + } + // names + elseif (preg_match(self::REGEX_NAME, $this->code, $match, 0, $this->cursor)) { + $this->pushToken(/* Token::NAME_TYPE */ 5, $match[0]); + $this->moveCursor($match[0]); + } + // numbers + elseif (preg_match(self::REGEX_NUMBER, $this->code, $match, 0, $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(/* Token::NUMBER_TYPE */ 6, $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[] = [$this->code[$this->cursor], $this->lineno]; + } + // closing bracket + elseif (false !== strpos(')]}', $this->code[$this->cursor])) { + if (empty($this->brackets)) { + throw new SyntaxError(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 SyntaxError(sprintf('Unclosed "%s".', $expect), $lineno, $this->source); + } + } + + $this->pushToken(/* Token::PUNCTUATION_TYPE */ 9, $this->code[$this->cursor]); + ++$this->cursor; + } + // strings + elseif (preg_match(self::REGEX_STRING, $this->code, $match, 0, $this->cursor)) { + $this->pushToken(/* Token::STRING_TYPE */ 7, 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, 0, $this->cursor)) { + $this->brackets[] = ['"', $this->lineno]; + $this->pushState(self::STATE_STRING); + $this->moveCursor($match[0]); + } + // unlexable + else { + throw new SyntaxError(sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); + } + } + + private function lexRawData(): void + { + if (!preg_match($this->regexes['lex_raw_data'], $this->code, $match, \PREG_OFFSET_CAPTURE, $this->cursor)) { + throw new SyntaxError('Unexpected end of file: Unclosed "verbatim" block.', $this->lineno, $this->source); + } + + $text = substr($this->code, $this->cursor, $match[0][1] - $this->cursor); + $this->moveCursor($text.$match[0][0]); + + // trim? + if (isset($match[1][0])) { + if ($this->options['whitespace_trim'] === $match[1][0]) { + // whitespace_trim detected ({%-, {{- or {#-) + $text = rtrim($text); + } else { + // whitespace_line_trim detected ({%~, {{~ or {#~) + // don't trim \r and \n + $text = rtrim($text, " \t\0\x0B"); + } + } + + $this->pushToken(/* Token::TEXT_TYPE */ 0, $text); + } + + private function lexComment(): void + { + if (!preg_match($this->regexes['lex_comment'], $this->code, $match, \PREG_OFFSET_CAPTURE, $this->cursor)) { + throw new SyntaxError('Unclosed comment.', $this->lineno, $this->source); + } + + $this->moveCursor(substr($this->code, $this->cursor, $match[0][1] - $this->cursor).$match[0][0]); + } + + private function lexString(): void + { + if (preg_match($this->regexes['interpolation_start'], $this->code, $match, 0, $this->cursor)) { + $this->brackets[] = [$this->options['interpolation'][0], $this->lineno]; + $this->pushToken(/* Token::INTERPOLATION_START_TYPE */ 10); + $this->moveCursor($match[0]); + $this->pushState(self::STATE_INTERPOLATION); + } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, 0, $this->cursor) && \strlen($match[0]) > 0) { + $this->pushToken(/* Token::STRING_TYPE */ 7, stripcslashes($match[0])); + $this->moveCursor($match[0]); + } elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, 0, $this->cursor)) { + list($expect, $lineno) = array_pop($this->brackets); + if ('"' != $this->code[$this->cursor]) { + throw new SyntaxError(sprintf('Unclosed "%s".', $expect), $lineno, $this->source); + } + + $this->popState(); + ++$this->cursor; + } else { + // unlexable + throw new SyntaxError(sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); + } + } + + private function lexInterpolation(): void + { + $bracket = end($this->brackets); + if ($this->options['interpolation'][0] === $bracket[0] && preg_match($this->regexes['interpolation_end'], $this->code, $match, 0, $this->cursor)) { + array_pop($this->brackets); + $this->pushToken(/* Token::INTERPOLATION_END_TYPE */ 11); + $this->moveCursor($match[0]); + $this->popState(); + } else { + $this->lexExpression(); + } + } + + private function pushToken($type, $value = ''): void + { + // do not push empty text tokens + if (/* Token::TEXT_TYPE */ 0 === $type && '' === $value) { + return; + } + + $this->tokens[] = new Token($type, $value, $this->lineno); + } + + private function moveCursor($text): void + { + $this->cursor += \strlen($text); + $this->lineno += substr_count($text, "\n"); + } + + private function getOperatorRegex(): string + { + $operators = array_merge( + ['='], + array_keys($this->env->getUnaryOperators()), + array_keys($this->env->getBinaryOperators()) + ); + + $operators = array_combine($operators, array_map('strlen', $operators)); + arsort($operators); + + $regex = []; + foreach ($operators as $operator => $length) { + // an operator that ends with a character must be followed by + // a whitespace, a parenthesis, an opening map [ or sequence { + $r = preg_quote($operator, '/'); + if (ctype_alpha($operator[$length - 1])) { + $r .= '(?=[\s()\[{])'; + } + + // an operator that begins with a character must not have a dot or pipe before + if (ctype_alpha($operator[0])) { + $r = '(?states[] = $this->state; + $this->state = $state; + } + + private function popState(): void + { + if (0 === \count($this->states)) { + throw new \LogicException('Cannot pop state without a previous state.'); + } + + $this->state = array_pop($this->states); + } +} diff --git a/data/vendor/twig/twig/src/Loader/ArrayLoader.php b/data/vendor/twig/twig/src/Loader/ArrayLoader.php new file mode 100644 index 0000000..5d726c3 --- /dev/null +++ b/data/vendor/twig/twig/src/Loader/ArrayLoader.php @@ -0,0 +1,77 @@ + + */ +final class ArrayLoader implements LoaderInterface +{ + private $templates = []; + + /** + * @param array $templates An array of templates (keys are the names, and values are the source code) + */ + public function __construct(array $templates = []) + { + $this->templates = $templates; + } + + public function setTemplate(string $name, string $template): void + { + $this->templates[$name] = $template; + } + + public function getSourceContext(string $name): Source + { + if (!isset($this->templates[$name])) { + throw new LoaderError(sprintf('Template "%s" is not defined.', $name)); + } + + return new Source($this->templates[$name], $name); + } + + public function exists(string $name): bool + { + return isset($this->templates[$name]); + } + + public function getCacheKey(string $name): string + { + if (!isset($this->templates[$name])) { + throw new LoaderError(sprintf('Template "%s" is not defined.', $name)); + } + + return $name.':'.$this->templates[$name]; + } + + public function isFresh(string $name, int $time): bool + { + if (!isset($this->templates[$name])) { + throw new LoaderError(sprintf('Template "%s" is not defined.', $name)); + } + + return true; + } +} diff --git a/data/vendor/twig/twig/src/Loader/ChainLoader.php b/data/vendor/twig/twig/src/Loader/ChainLoader.php new file mode 100644 index 0000000..fbf4f3a --- /dev/null +++ b/data/vendor/twig/twig/src/Loader/ChainLoader.php @@ -0,0 +1,119 @@ + + */ +final class ChainLoader implements LoaderInterface +{ + private $hasSourceCache = []; + private $loaders = []; + + /** + * @param LoaderInterface[] $loaders + */ + public function __construct(array $loaders = []) + { + foreach ($loaders as $loader) { + $this->addLoader($loader); + } + } + + public function addLoader(LoaderInterface $loader): void + { + $this->loaders[] = $loader; + $this->hasSourceCache = []; + } + + /** + * @return LoaderInterface[] + */ + public function getLoaders(): array + { + return $this->loaders; + } + + public function getSourceContext(string $name): Source + { + $exceptions = []; + foreach ($this->loaders as $loader) { + if (!$loader->exists($name)) { + continue; + } + + try { + return $loader->getSourceContext($name); + } catch (LoaderError $e) { + $exceptions[] = $e->getMessage(); + } + } + + throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); + } + + public function exists(string $name): bool + { + if (isset($this->hasSourceCache[$name])) { + return $this->hasSourceCache[$name]; + } + + foreach ($this->loaders as $loader) { + if ($loader->exists($name)) { + return $this->hasSourceCache[$name] = true; + } + } + + return $this->hasSourceCache[$name] = false; + } + + public function getCacheKey(string $name): string + { + $exceptions = []; + foreach ($this->loaders as $loader) { + if (!$loader->exists($name)) { + continue; + } + + try { + return $loader->getCacheKey($name); + } catch (LoaderError $e) { + $exceptions[] = \get_class($loader).': '.$e->getMessage(); + } + } + + throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); + } + + public function isFresh(string $name, int $time): bool + { + $exceptions = []; + foreach ($this->loaders as $loader) { + if (!$loader->exists($name)) { + continue; + } + + try { + return $loader->isFresh($name, $time); + } catch (LoaderError $e) { + $exceptions[] = \get_class($loader).': '.$e->getMessage(); + } + } + + throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); + } +} diff --git a/data/vendor/twig/twig/src/Loader/FilesystemLoader.php b/data/vendor/twig/twig/src/Loader/FilesystemLoader.php new file mode 100644 index 0000000..859a898 --- /dev/null +++ b/data/vendor/twig/twig/src/Loader/FilesystemLoader.php @@ -0,0 +1,283 @@ + + */ +class FilesystemLoader implements LoaderInterface +{ + /** Identifier of the main namespace. */ + public const MAIN_NAMESPACE = '__main__'; + + protected $paths = []; + protected $cache = []; + protected $errorCache = []; + + 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 = [], string $rootPath = null) + { + $this->rootPath = (null === $rootPath ? getcwd() : $rootPath).\DIRECTORY_SEPARATOR; + if (null !== $rootPath && false !== ($realPath = realpath($rootPath))) { + $this->rootPath = $realPath.\DIRECTORY_SEPARATOR; + } + + if ($paths) { + $this->setPaths($paths); + } + } + + /** + * Returns the paths to the templates. + */ + public function getPaths(string $namespace = self::MAIN_NAMESPACE): array + { + return $this->paths[$namespace] ?? []; + } + + /** + * Returns the path namespaces. + * + * The main namespace is always defined. + */ + public function getNamespaces(): array + { + return array_keys($this->paths); + } + + /** + * @param string|array $paths A path or an array of paths where to look for templates + */ + public function setPaths($paths, string $namespace = self::MAIN_NAMESPACE): void + { + if (!\is_array($paths)) { + $paths = [$paths]; + } + + $this->paths[$namespace] = []; + foreach ($paths as $path) { + $this->addPath($path, $namespace); + } + } + + /** + * @throws LoaderError + */ + public function addPath(string $path, string $namespace = self::MAIN_NAMESPACE): void + { + // invalidate the cache + $this->cache = $this->errorCache = []; + + $checkPath = $this->isAbsolutePath($path) ? $path : $this->rootPath.$path; + if (!is_dir($checkPath)) { + throw new LoaderError(sprintf('The "%s" directory does not exist ("%s").', $path, $checkPath)); + } + + $this->paths[$namespace][] = rtrim($path, '/\\'); + } + + /** + * @throws LoaderError + */ + public function prependPath(string $path, string $namespace = self::MAIN_NAMESPACE): void + { + // invalidate the cache + $this->cache = $this->errorCache = []; + + $checkPath = $this->isAbsolutePath($path) ? $path : $this->rootPath.$path; + if (!is_dir($checkPath)) { + throw new LoaderError(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 getSourceContext(string $name): Source + { + if (null === $path = $this->findTemplate($name)) { + return new Source('', $name, ''); + } + + return new Source(file_get_contents($path), $name, $path); + } + + public function getCacheKey(string $name): string + { + if (null === $path = $this->findTemplate($name)) { + return ''; + } + $len = \strlen($this->rootPath); + if (0 === strncmp($this->rootPath, $path, $len)) { + return substr($path, $len); + } + + return $path; + } + + /** + * @return bool + */ + public function exists(string $name) + { + $name = $this->normalizeName($name); + + if (isset($this->cache[$name])) { + return true; + } + + return null !== $this->findTemplate($name, false); + } + + public function isFresh(string $name, int $time): bool + { + // false support to be removed in 3.0 + if (null === $path = $this->findTemplate($name)) { + return false; + } + + return filemtime($path) < $time; + } + + /** + * @return string|null + */ + protected function findTemplate(string $name, bool $throw = true) + { + $name = $this->normalizeName($name); + + if (isset($this->cache[$name])) { + return $this->cache[$name]; + } + + if (isset($this->errorCache[$name])) { + if (!$throw) { + return null; + } + + throw new LoaderError($this->errorCache[$name]); + } + + try { + $this->validateName($name); + + list($namespace, $shortname) = $this->parseName($name); + } catch (LoaderError $e) { + if (!$throw) { + return null; + } + + throw $e; + } + + if (!isset($this->paths[$namespace])) { + $this->errorCache[$name] = sprintf('There are no registered paths for namespace "%s".', $namespace); + + if (!$throw) { + return null; + } + + throw new LoaderError($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 null; + } + + throw new LoaderError($this->errorCache[$name]); + } + + private function normalizeName(string $name): string + { + return preg_replace('#/{2,}#', '/', str_replace('\\', '/', $name)); + } + + private function parseName(string $name, string $default = self::MAIN_NAMESPACE): array + { + if (isset($name[0]) && '@' == $name[0]) { + if (false === $pos = strpos($name, '/')) { + throw new LoaderError(sprintf('Malformed namespaced template name "%s" (expecting "@namespace/template_name").', $name)); + } + + $namespace = substr($name, 1, $pos - 1); + $shortname = substr($name, $pos + 1); + + return [$namespace, $shortname]; + } + + return [$default, $name]; + } + + private function validateName(string $name): void + { + if (false !== strpos($name, "\0")) { + throw new LoaderError('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 LoaderError(sprintf('Looks like you try to load a template outside configured directories (%s).', $name)); + } + } + } + + private function isAbsolutePath(string $file): bool + { + return strspn($file, '/\\', 0, 1) + || (\strlen($file) > 3 && ctype_alpha($file[0]) + && ':' === $file[1] + && strspn($file, '/\\', 2, 1) + ) + || null !== parse_url($file, \PHP_URL_SCHEME) + ; + } +} diff --git a/data/vendor/twig/twig/src/Loader/LoaderInterface.php b/data/vendor/twig/twig/src/Loader/LoaderInterface.php new file mode 100644 index 0000000..fec7e85 --- /dev/null +++ b/data/vendor/twig/twig/src/Loader/LoaderInterface.php @@ -0,0 +1,49 @@ + + */ +interface LoaderInterface +{ + /** + * Returns the source context for a given template logical name. + * + * @throws LoaderError When $name is not found + */ + public function getSourceContext(string $name): Source; + + /** + * Gets the cache key to use for the cache for a given template name. + * + * @throws LoaderError When $name is not found + */ + public function getCacheKey(string $name): string; + + /** + * @param int $time Timestamp of the last modification time of the cached template + * + * @throws LoaderError When $name is not found + */ + public function isFresh(string $name, int $time): bool; + + /** + * @return bool + */ + public function exists(string $name); +} diff --git a/data/vendor/twig/twig/src/Markup.php b/data/vendor/twig/twig/src/Markup.php new file mode 100644 index 0000000..1788acc --- /dev/null +++ b/data/vendor/twig/twig/src/Markup.php @@ -0,0 +1,52 @@ + + */ +class Markup implements \Countable, \JsonSerializable +{ + private $content; + private $charset; + + public function __construct($content, $charset) + { + $this->content = (string) $content; + $this->charset = $charset; + } + + public function __toString() + { + return $this->content; + } + + /** + * @return int + */ + #[\ReturnTypeWillChange] + public function count() + { + return mb_strlen($this->content, $this->charset); + } + + /** + * @return mixed + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return $this->content; + } +} diff --git a/data/vendor/twig/twig/src/Node/AutoEscapeNode.php b/data/vendor/twig/twig/src/Node/AutoEscapeNode.php new file mode 100644 index 0000000..cd97041 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/AutoEscapeNode.php @@ -0,0 +1,38 @@ + + */ +class AutoEscapeNode extends Node +{ + public function __construct($value, Node $body, int $lineno, string $tag = 'autoescape') + { + parent::__construct(['body' => $body], ['value' => $value], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler->subcompile($this->getNode('body')); + } +} diff --git a/data/vendor/twig/twig/src/Node/BlockNode.php b/data/vendor/twig/twig/src/Node/BlockNode.php new file mode 100644 index 0000000..0632ba7 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/BlockNode.php @@ -0,0 +1,44 @@ + + */ +class BlockNode extends Node +{ + public function __construct(string $name, Node $body, int $lineno, string $tag = null) + { + parent::__construct(['body' => $body], ['name' => $name], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write(sprintf("public function block_%s(\$context, array \$blocks = [])\n", $this->getAttribute('name')), "{\n") + ->indent() + ->write("\$macros = \$this->macros;\n") + ; + + $compiler + ->subcompile($this->getNode('body')) + ->outdent() + ->write("}\n\n") + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/BlockReferenceNode.php b/data/vendor/twig/twig/src/Node/BlockReferenceNode.php new file mode 100644 index 0000000..cc8af5b --- /dev/null +++ b/data/vendor/twig/twig/src/Node/BlockReferenceNode.php @@ -0,0 +1,36 @@ + + */ +class BlockReferenceNode extends Node implements NodeOutputInterface +{ + public function __construct(string $name, int $lineno, string $tag = null) + { + parent::__construct([], ['name' => $name], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write(sprintf("\$this->displayBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name'))) + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/BodyNode.php b/data/vendor/twig/twig/src/Node/BodyNode.php new file mode 100644 index 0000000..041cbf6 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/BodyNode.php @@ -0,0 +1,21 @@ + + */ +class BodyNode extends Node +{ +} diff --git a/data/vendor/twig/twig/src/Node/CheckSecurityCallNode.php b/data/vendor/twig/twig/src/Node/CheckSecurityCallNode.php new file mode 100644 index 0000000..a78a38d --- /dev/null +++ b/data/vendor/twig/twig/src/Node/CheckSecurityCallNode.php @@ -0,0 +1,28 @@ + + */ +class CheckSecurityCallNode extends Node +{ + public function compile(Compiler $compiler) + { + $compiler + ->write("\$this->sandbox = \$this->env->getExtension('\Twig\Extension\SandboxExtension');\n") + ->write("\$this->checkSecurity();\n") + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/CheckSecurityNode.php b/data/vendor/twig/twig/src/Node/CheckSecurityNode.php new file mode 100644 index 0000000..4727327 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/CheckSecurityNode.php @@ -0,0 +1,88 @@ + + */ +class CheckSecurityNode extends Node +{ + private $usedFilters; + private $usedTags; + private $usedFunctions; + + public function __construct(array $usedFilters, array $usedTags, array $usedFunctions) + { + $this->usedFilters = $usedFilters; + $this->usedTags = $usedTags; + $this->usedFunctions = $usedFunctions; + + parent::__construct(); + } + + public function compile(Compiler $compiler): void + { + $tags = $filters = $functions = []; + foreach (['tags', 'filters', 'functions'] as $type) { + foreach ($this->{'used'.ucfirst($type)} as $name => $node) { + if ($node instanceof Node) { + ${$type}[$name] = $node->getTemplateLine(); + } else { + ${$type}[$node] = null; + } + } + } + + $compiler + ->write("\n") + ->write("public function checkSecurity()\n") + ->write("{\n") + ->indent() + ->write('static $tags = ')->repr(array_filter($tags))->raw(";\n") + ->write('static $filters = ')->repr(array_filter($filters))->raw(";\n") + ->write('static $functions = ')->repr(array_filter($functions))->raw(";\n\n") + ->write("try {\n") + ->indent() + ->write("\$this->sandbox->checkSecurity(\n") + ->indent() + ->write(!$tags ? "[],\n" : "['".implode("', '", array_keys($tags))."'],\n") + ->write(!$filters ? "[],\n" : "['".implode("', '", array_keys($filters))."'],\n") + ->write(!$functions ? "[]\n" : "['".implode("', '", array_keys($functions))."']\n") + ->outdent() + ->write(");\n") + ->outdent() + ->write("} catch (SecurityError \$e) {\n") + ->indent() + ->write("\$e->setSourceContext(\$this->source);\n\n") + ->write("if (\$e instanceof SecurityNotAllowedTagError && isset(\$tags[\$e->getTagName()])) {\n") + ->indent() + ->write("\$e->setTemplateLine(\$tags[\$e->getTagName()]);\n") + ->outdent() + ->write("} elseif (\$e instanceof SecurityNotAllowedFilterError && isset(\$filters[\$e->getFilterName()])) {\n") + ->indent() + ->write("\$e->setTemplateLine(\$filters[\$e->getFilterName()]);\n") + ->outdent() + ->write("} elseif (\$e instanceof 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") + ->outdent() + ->write("}\n") + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/CheckToStringNode.php b/data/vendor/twig/twig/src/Node/CheckToStringNode.php new file mode 100644 index 0000000..c7a9d69 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/CheckToStringNode.php @@ -0,0 +1,45 @@ + + */ +class CheckToStringNode extends AbstractExpression +{ + public function __construct(AbstractExpression $expr) + { + parent::__construct(['expr' => $expr], [], $expr->getTemplateLine(), $expr->getNodeTag()); + } + + public function compile(Compiler $compiler): void + { + $expr = $this->getNode('expr'); + $compiler + ->raw('$this->sandbox->ensureToStringAllowed(') + ->subcompile($expr) + ->raw(', ') + ->repr($expr->getTemplateLine()) + ->raw(', $this->source)') + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/DeprecatedNode.php b/data/vendor/twig/twig/src/Node/DeprecatedNode.php new file mode 100644 index 0000000..5ff4430 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/DeprecatedNode.php @@ -0,0 +1,53 @@ + + */ +class DeprecatedNode extends Node +{ + public function __construct(AbstractExpression $expr, int $lineno, string $tag = null) + { + parent::__construct(['expr' => $expr], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler->addDebugInfo($this); + + $expr = $this->getNode('expr'); + + if ($expr instanceof ConstantExpression) { + $compiler->write('@trigger_error(') + ->subcompile($expr); + } else { + $varName = $compiler->getVarName(); + $compiler->write(sprintf('$%s = ', $varName)) + ->subcompile($expr) + ->raw(";\n") + ->write(sprintf('@trigger_error($%s', $varName)); + } + + $compiler + ->raw('.') + ->string(sprintf(' ("%s" at line %d).', $this->getTemplateName(), $this->getTemplateLine())) + ->raw(", E_USER_DEPRECATED);\n") + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/DoNode.php b/data/vendor/twig/twig/src/Node/DoNode.php new file mode 100644 index 0000000..f7783d1 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/DoNode.php @@ -0,0 +1,38 @@ + + */ +class DoNode extends Node +{ + public function __construct(AbstractExpression $expr, int $lineno, string $tag = null) + { + parent::__construct(['expr' => $expr], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write('') + ->subcompile($this->getNode('expr')) + ->raw(";\n") + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/EmbedNode.php b/data/vendor/twig/twig/src/Node/EmbedNode.php new file mode 100644 index 0000000..903c3f6 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/EmbedNode.php @@ -0,0 +1,48 @@ + + */ +class EmbedNode extends IncludeNode +{ + // 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(string $name, int $index, ?AbstractExpression $variables, bool $only, bool $ignoreMissing, int $lineno, string $tag = null) + { + parent::__construct(new ConstantExpression('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag); + + $this->setAttribute('name', $name); + $this->setAttribute('index', $index); + } + + protected function addGetTemplate(Compiler $compiler): void + { + $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/data/vendor/twig/twig/src/Node/Expression/AbstractExpression.php b/data/vendor/twig/twig/src/Node/Expression/AbstractExpression.php new file mode 100644 index 0000000..42da055 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/AbstractExpression.php @@ -0,0 +1,24 @@ + + */ +abstract class AbstractExpression extends Node +{ +} diff --git a/data/vendor/twig/twig/src/Node/Expression/ArrayExpression.php b/data/vendor/twig/twig/src/Node/Expression/ArrayExpression.php new file mode 100644 index 0000000..0e25fe4 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/ArrayExpression.php @@ -0,0 +1,85 @@ +index = -1; + foreach ($this->getKeyValuePairs() as $pair) { + if ($pair['key'] instanceof ConstantExpression && ctype_digit((string) $pair['key']->getAttribute('value')) && $pair['key']->getAttribute('value') > $this->index) { + $this->index = $pair['key']->getAttribute('value'); + } + } + } + + public function getKeyValuePairs(): array + { + $pairs = []; + foreach (array_chunk($this->nodes, 2) as $pair) { + $pairs[] = [ + 'key' => $pair[0], + 'value' => $pair[1], + ]; + } + + return $pairs; + } + + public function hasElement(AbstractExpression $key): bool + { + 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(AbstractExpression $value, AbstractExpression $key = null): void + { + if (null === $key) { + $key = new ConstantExpression(++$this->index, $value->getTemplateLine()); + } + + array_push($this->nodes, $key, $value); + } + + public function compile(Compiler $compiler): void + { + $compiler->raw('['); + $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/data/vendor/twig/twig/src/Node/Expression/ArrowFunctionExpression.php b/data/vendor/twig/twig/src/Node/Expression/ArrowFunctionExpression.php new file mode 100644 index 0000000..eaad03c --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/ArrowFunctionExpression.php @@ -0,0 +1,64 @@ + + */ +class ArrowFunctionExpression extends AbstractExpression +{ + public function __construct(AbstractExpression $expr, Node $names, $lineno, $tag = null) + { + parent::__construct(['expr' => $expr, 'names' => $names], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->raw('function (') + ; + foreach ($this->getNode('names') as $i => $name) { + if ($i) { + $compiler->raw(', '); + } + + $compiler + ->raw('$__') + ->raw($name->getAttribute('name')) + ->raw('__') + ; + } + $compiler + ->raw(') use ($context, $macros) { ') + ; + foreach ($this->getNode('names') as $name) { + $compiler + ->raw('$context["') + ->raw($name->getAttribute('name')) + ->raw('"] = $__') + ->raw($name->getAttribute('name')) + ->raw('__; ') + ; + } + $compiler + ->raw('return ') + ->subcompile($this->getNode('expr')) + ->raw('; }') + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php b/data/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php new file mode 100644 index 0000000..7dd1bc4 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php @@ -0,0 +1,27 @@ +raw('$context[') + ->string($this->getAttribute('name')) + ->raw(']') + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php new file mode 100644 index 0000000..c424e5c --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php @@ -0,0 +1,42 @@ + $left, 'right' => $right], [], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->raw('(') + ->subcompile($this->getNode('left')) + ->raw(' ') + ; + $this->operator($compiler); + $compiler + ->raw(' ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + abstract public function operator(Compiler $compiler): Compiler; +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/AddBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/AddBinary.php new file mode 100644 index 0000000..ee4307e --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/AddBinary.php @@ -0,0 +1,23 @@ +raw('+'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/AndBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/AndBinary.php new file mode 100644 index 0000000..5f2380d --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/AndBinary.php @@ -0,0 +1,23 @@ +raw('&&'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php new file mode 100644 index 0000000..db7d6d6 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php @@ -0,0 +1,23 @@ +raw('&'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php new file mode 100644 index 0000000..ce803dd --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php @@ -0,0 +1,23 @@ +raw('|'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php new file mode 100644 index 0000000..5c29785 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php @@ -0,0 +1,23 @@ +raw('^'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/ConcatBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/ConcatBinary.php new file mode 100644 index 0000000..f825ab8 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/ConcatBinary.php @@ -0,0 +1,23 @@ +raw('.'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/DivBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/DivBinary.php new file mode 100644 index 0000000..e3817d1 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/DivBinary.php @@ -0,0 +1,23 @@ +raw('/'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php new file mode 100644 index 0000000..c3516b8 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php @@ -0,0 +1,35 @@ +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(Compiler $compiler): Compiler + { + return $compiler->raw(''); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/EqualBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/EqualBinary.php new file mode 100644 index 0000000..6b48549 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/EqualBinary.php @@ -0,0 +1,39 @@ += 80000) { + parent::compile($compiler); + + return; + } + + $compiler + ->raw('(0 === twig_compare(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('=='); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php new file mode 100644 index 0000000..d7e7980 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php @@ -0,0 +1,29 @@ +raw('(int) floor('); + parent::compile($compiler); + $compiler->raw(')'); + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('/'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/GreaterBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/GreaterBinary.php new file mode 100644 index 0000000..e1dd067 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/GreaterBinary.php @@ -0,0 +1,39 @@ += 80000) { + parent::compile($compiler); + + return; + } + + $compiler + ->raw('(1 === twig_compare(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('>'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php new file mode 100644 index 0000000..df9bfcf --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php @@ -0,0 +1,39 @@ += 80000) { + parent::compile($compiler); + + return; + } + + $compiler + ->raw('(0 <= twig_compare(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('>='); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/InBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/InBinary.php new file mode 100644 index 0000000..6dbfa97 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/InBinary.php @@ -0,0 +1,33 @@ +raw('twig_in_filter(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('in'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/LessBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/LessBinary.php new file mode 100644 index 0000000..598e629 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/LessBinary.php @@ -0,0 +1,39 @@ += 80000) { + parent::compile($compiler); + + return; + } + + $compiler + ->raw('(-1 === twig_compare(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('<'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php new file mode 100644 index 0000000..e3c4af5 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php @@ -0,0 +1,39 @@ += 80000) { + parent::compile($compiler); + + return; + } + + $compiler + ->raw('(0 >= twig_compare(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('<='); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php new file mode 100644 index 0000000..bc97292 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php @@ -0,0 +1,33 @@ +raw('preg_match(') + ->subcompile($this->getNode('right')) + ->raw(', ') + ->subcompile($this->getNode('left')) + ->raw(')') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw(''); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/ModBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/ModBinary.php new file mode 100644 index 0000000..271b45c --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/ModBinary.php @@ -0,0 +1,23 @@ +raw('%'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/MulBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/MulBinary.php new file mode 100644 index 0000000..6d4c1e0 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/MulBinary.php @@ -0,0 +1,23 @@ +raw('*'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php new file mode 100644 index 0000000..db47a28 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php @@ -0,0 +1,39 @@ += 80000) { + parent::compile($compiler); + + return; + } + + $compiler + ->raw('(0 !== twig_compare(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('!='); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/NotInBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/NotInBinary.php new file mode 100644 index 0000000..fcba6cc --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/NotInBinary.php @@ -0,0 +1,33 @@ +raw('!twig_in_filter(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('not in'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/OrBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/OrBinary.php new file mode 100644 index 0000000..21f87c9 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/OrBinary.php @@ -0,0 +1,23 @@ +raw('||'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/PowerBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/PowerBinary.php new file mode 100644 index 0000000..c9f4c66 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/PowerBinary.php @@ -0,0 +1,22 @@ +raw('**'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/RangeBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/RangeBinary.php new file mode 100644 index 0000000..55982c8 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/RangeBinary.php @@ -0,0 +1,33 @@ +raw('range(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('..'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/SpaceshipBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/SpaceshipBinary.php new file mode 100644 index 0000000..ae5a4a4 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/SpaceshipBinary.php @@ -0,0 +1,22 @@ +raw('<=>'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php new file mode 100644 index 0000000..d0df1c4 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php @@ -0,0 +1,35 @@ +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(Compiler $compiler): Compiler + { + return $compiler->raw(''); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Binary/SubBinary.php b/data/vendor/twig/twig/src/Node/Expression/Binary/SubBinary.php new file mode 100644 index 0000000..eeb87fa --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Binary/SubBinary.php @@ -0,0 +1,23 @@ +raw('-'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php b/data/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php new file mode 100644 index 0000000..b1e2a8f --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php @@ -0,0 +1,86 @@ + + */ +class BlockReferenceExpression extends AbstractExpression +{ + public function __construct(Node $name, ?Node $template, int $lineno, string $tag = null) + { + $nodes = ['name' => $name]; + if (null !== $template) { + $nodes['template'] = $template; + } + + parent::__construct($nodes, ['is_defined_test' => false, 'output' => false], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + 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(Compiler $compiler, string $method): Compiler + { + 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)); + + return $this->compileBlockArguments($compiler); + } + + private function compileBlockArguments(Compiler $compiler): Compiler + { + $compiler + ->raw('(') + ->subcompile($this->getNode('name')) + ->raw(', $context'); + + if (!$this->hasNode('template')) { + $compiler->raw(', $blocks'); + } + + return $compiler->raw(')'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/CallExpression.php b/data/vendor/twig/twig/src/Node/Expression/CallExpression.php new file mode 100644 index 0000000..fdf92a8 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/CallExpression.php @@ -0,0 +1,320 @@ +getAttribute('callable'); + + $closingParenthesis = false; + $isArray = false; + 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 ExtensionInterface) { + $class = \get_class($callable[0]); + if (!$compiler->getEnvironment()->hasExtension($class)) { + // Compile a non-optimized call to trigger a \Twig\Error\RuntimeError, which cannot be a compile-time error + $compiler->raw(sprintf('$this->env->getExtension(\'%s\')', $class)); + } else { + $compiler->raw(sprintf('$this->extensions[\'%s\']', ltrim($class, '\\'))); + } + + $compiler->raw(sprintf('->%s', $callable[1])); + } else { + $closingParenthesis = true; + $isArray = true; + $compiler->raw(sprintf('call_user_func_array($this->env->get%s(\'%s\')->getCallable(), ', ucfirst($this->getAttribute('type')), $this->getAttribute('name'))); + } + } + + $this->compileArguments($compiler, $isArray); + + if ($closingParenthesis) { + $compiler->raw(')'); + } + } + + protected function compileArguments(Compiler $compiler, $isArray = false): void + { + $compiler->raw($isArray ? '[' : '('); + + $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->getAttribute('callable'); + $arguments = $this->getArguments($callable, $this->getNode('arguments')); + foreach ($arguments as $node) { + if (!$first) { + $compiler->raw(', '); + } + $compiler->subcompile($node); + $first = false; + } + } + + $compiler->raw($isArray ? ']' : ')'); + } + + protected function getArguments($callable, $arguments) + { + $callType = $this->getAttribute('type'); + $callName = $this->getAttribute('name'); + + $parameters = []; + $named = false; + foreach ($arguments as $name => $node) { + if (!\is_int($name)) { + $named = true; + $name = $this->normalizeName($name); + } elseif ($named) { + throw new SyntaxError(sprintf('Positional arguments cannot be used after named arguments for %s "%s".', $callType, $callName), $this->getTemplateLine(), $this->getSourceContext()); + } + + $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); + } + + list($callableParameters, $isPhpVariadic) = $this->getCallableParameters($callable, $isVariadic); + $arguments = []; + $names = []; + $missingArguments = []; + $optionalArguments = []; + $pos = 0; + foreach ($callableParameters as $callableParameter) { + $name = $this->normalizeName($callableParameter->name); + if (\PHP_VERSION_ID >= 80000 && 'range' === $callable) { + if ('start' === $name) { + $name = 'low'; + } elseif ('end' === $name) { + $name = 'high'; + } + } + + $names[] = $name; + + if (\array_key_exists($name, $parameters)) { + if (\array_key_exists($pos, $parameters)) { + throw new SyntaxError(sprintf('Argument "%s" is defined twice for %s "%s".', $name, $callType, $callName), $this->getTemplateLine(), $this->getSourceContext()); + } + + if (\count($missingArguments)) { + throw new SyntaxError(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) + ), $this->getTemplateLine(), $this->getSourceContext()); + } + + $arguments = array_merge($arguments, $optionalArguments); + $arguments[] = $parameters[$name]; + unset($parameters[$name]); + $optionalArguments = []; + } elseif (\array_key_exists($pos, $parameters)) { + $arguments = array_merge($arguments, $optionalArguments); + $arguments[] = $parameters[$pos]; + unset($parameters[$pos]); + $optionalArguments = []; + ++$pos; + } elseif ($callableParameter->isDefaultValueAvailable()) { + $optionalArguments[] = new ConstantExpression($callableParameter->getDefaultValue(), -1); + } elseif ($callableParameter->isOptional()) { + if (empty($parameters)) { + break; + } else { + $missingArguments[] = $name; + } + } else { + throw new SyntaxError(sprintf('Value for argument "%s" is required for %s "%s".', $name, $callType, $callName), $this->getTemplateLine(), $this->getSourceContext()); + } + } + + if ($isVariadic) { + $arbitraryArguments = $isPhpVariadic ? new VariadicExpression([], -1) : new ArrayExpression([], -1); + foreach ($parameters as $key => $value) { + if (\is_int($key)) { + $arbitraryArguments->addElement($value); + } else { + $arbitraryArguments->addElement($value, new ConstantExpression($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 Node) { + $unknownParameter = $parameter; + break; + } + } + + throw new SyntaxError( + sprintf( + 'Unknown argument%s "%s" for %s "%s(%s)".', + \count($parameters) > 1 ? 's' : '', implode('", "', array_keys($parameters)), $callType, $callName, implode(', ', $names) + ), + $unknownParameter ? $unknownParameter->getTemplateLine() : $this->getTemplateLine(), + $unknownParameter ? $unknownParameter->getSourceContext() : $this->getSourceContext() + ); + } + + return $arguments; + } + + protected function normalizeName(string $name): string + { + return strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'], ['\\1_\\2', '\\1_\\2'], $name)); + } + + private function getCallableParameters($callable, bool $isVariadic): array + { + list($r) = $this->reflectCallable($callable); + if (null === $r) { + return [[], false]; + } + + $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); + } + } + $isPhpVariadic = false; + if ($isVariadic) { + $argument = end($parameters); + $isArray = $argument && $argument->hasType() && 'array' === $argument->getType()->getName(); + if ($isArray && $argument->isDefaultValueAvailable() && [] === $argument->getDefaultValue()) { + array_pop($parameters); + } elseif ($argument && $argument->isVariadic()) { + array_pop($parameters); + $isPhpVariadic = true; + } 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 = []".', $callableName, $this->getAttribute('type'), $this->getAttribute('name'))); + } + } + + return [$parameters, $isPhpVariadic]; + } + + private function reflectCallable($callable) + { + if (null !== $this->reflector) { + return $this->reflector; + } + + if (\is_array($callable)) { + if (!method_exists($callable[0], $callable[1])) { + // __call() + return [null, []]; + } + $r = new \ReflectionMethod($callable[0], $callable[1]); + } elseif (\is_object($callable) && !$callable instanceof \Closure) { + $r = new \ReflectionObject($callable); + $r = $r->getMethod('__invoke'); + $callable = [$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 [null, []]; + } + $r = new \ReflectionMethod($callable); + $callable = [$class, $method]; + } else { + $r = new \ReflectionFunction($callable); + } + + return $this->reflector = [$r, $callable]; + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/ConditionalExpression.php b/data/vendor/twig/twig/src/Node/Expression/ConditionalExpression.php new file mode 100644 index 0000000..2c7bd0a --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/ConditionalExpression.php @@ -0,0 +1,36 @@ + $expr1, 'expr2' => $expr2, 'expr3' => $expr3], [], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->raw('((') + ->subcompile($this->getNode('expr1')) + ->raw(') ? (') + ->subcompile($this->getNode('expr2')) + ->raw(') : (') + ->subcompile($this->getNode('expr3')) + ->raw('))') + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/ConstantExpression.php b/data/vendor/twig/twig/src/Node/Expression/ConstantExpression.php new file mode 100644 index 0000000..7ddbcc6 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/ConstantExpression.php @@ -0,0 +1,28 @@ + $value], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler->repr($this->getAttribute('value')); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php b/data/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php new file mode 100644 index 0000000..6a572d4 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php @@ -0,0 +1,52 @@ + + */ +class DefaultFilter extends FilterExpression +{ + public function __construct(Node $node, ConstantExpression $filterName, Node $arguments, int $lineno, string $tag = null) + { + $default = new FilterExpression($node, new ConstantExpression('default', $node->getTemplateLine()), $arguments, $node->getTemplateLine()); + + if ('default' === $filterName->getAttribute('value') && ($node instanceof NameExpression || $node instanceof GetAttrExpression)) { + $test = new DefinedTest(clone $node, 'defined', new Node(), $node->getTemplateLine()); + $false = \count($arguments) ? $arguments->getNode(0) : new ConstantExpression('', $node->getTemplateLine()); + + $node = new ConditionalExpression($test, $default, $false, $node->getTemplateLine()); + } else { + $node = $default; + } + + parent::__construct($node, $filterName, $arguments, $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler->subcompile($this->getNode('node')); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/FilterExpression.php b/data/vendor/twig/twig/src/Node/Expression/FilterExpression.php new file mode 100644 index 0000000..0fc1588 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/FilterExpression.php @@ -0,0 +1,40 @@ + $node, 'filter' => $filterName, 'arguments' => $arguments], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $name = $this->getNode('filter')->getAttribute('value'); + $filter = $compiler->getEnvironment()->getFilter($name); + + $this->setAttribute('name', $name); + $this->setAttribute('type', 'filter'); + $this->setAttribute('needs_environment', $filter->needsEnvironment()); + $this->setAttribute('needs_context', $filter->needsContext()); + $this->setAttribute('arguments', $filter->getArguments()); + $this->setAttribute('callable', $filter->getCallable()); + $this->setAttribute('is_variadic', $filter->isVariadic()); + + $this->compileCallable($compiler); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/FunctionExpression.php b/data/vendor/twig/twig/src/Node/Expression/FunctionExpression.php new file mode 100644 index 0000000..7126977 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/FunctionExpression.php @@ -0,0 +1,43 @@ + $arguments], ['name' => $name, 'is_defined_test' => false], $lineno); + } + + public function compile(Compiler $compiler) + { + $name = $this->getAttribute('name'); + $function = $compiler->getEnvironment()->getFunction($name); + + $this->setAttribute('name', $name); + $this->setAttribute('type', 'function'); + $this->setAttribute('needs_environment', $function->needsEnvironment()); + $this->setAttribute('needs_context', $function->needsContext()); + $this->setAttribute('arguments', $function->getArguments()); + $callable = $function->getCallable(); + if ('constant' === $name && $this->getAttribute('is_defined_test')) { + $callable = 'twig_constant_is_defined'; + } + $this->setAttribute('callable', $callable); + $this->setAttribute('is_variadic', $function->isVariadic()); + + $this->compileCallable($compiler); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php b/data/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php new file mode 100644 index 0000000..e6a75ce --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php @@ -0,0 +1,87 @@ + $node, 'attribute' => $attribute]; + if (null !== $arguments) { + $nodes['arguments'] = $arguments; + } + + parent::__construct($nodes, ['type' => $type, 'is_defined_test' => false, 'ignore_strict_check' => false, 'optimizable' => true], $lineno); + } + + public function compile(Compiler $compiler): void + { + $env = $compiler->getEnvironment(); + + // optimize array calls + if ( + $this->getAttribute('optimizable') + && (!$env->isStrictVariables() || $this->getAttribute('ignore_strict_check')) + && !$this->getAttribute('is_defined_test') + && Template::ARRAY_CALL === $this->getAttribute('type') + ) { + $var = '$'.$compiler->getVarName(); + $compiler + ->raw('(('.$var.' = ') + ->subcompile($this->getNode('node')) + ->raw(') && is_array(') + ->raw($var) + ->raw(') || ') + ->raw($var) + ->raw(' instanceof ArrayAccess ? (') + ->raw($var) + ->raw('[') + ->subcompile($this->getNode('attribute')) + ->raw('] ?? null) : null)') + ; + + return; + } + + $compiler->raw('twig_get_attribute($this->env, $this->source, '); + + if ($this->getAttribute('ignore_strict_check')) { + $this->getNode('node')->setAttribute('ignore_strict_check', true); + } + + $compiler + ->subcompile($this->getNode('node')) + ->raw(', ') + ->subcompile($this->getNode('attribute')) + ; + + if ($this->hasNode('arguments')) { + $compiler->raw(', ')->subcompile($this->getNode('arguments')); + } else { + $compiler->raw(', []'); + } + + $compiler->raw(', ') + ->repr($this->getAttribute('type')) + ->raw(', ')->repr($this->getAttribute('is_defined_test')) + ->raw(', ')->repr($this->getAttribute('ignore_strict_check')) + ->raw(', ')->repr($env->hasExtension(SandboxExtension::class)) + ->raw(', ')->repr($this->getNode('node')->getTemplateLine()) + ->raw(')') + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/InlinePrint.php b/data/vendor/twig/twig/src/Node/Expression/InlinePrint.php new file mode 100644 index 0000000..1ad4751 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/InlinePrint.php @@ -0,0 +1,35 @@ + $node], [], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->raw('print (') + ->subcompile($this->getNode('node')) + ->raw(')') + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php b/data/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php new file mode 100644 index 0000000..d5ec0b6 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php @@ -0,0 +1,62 @@ + $node, 'arguments' => $arguments], ['method' => $method, 'safe' => false, 'is_defined_test' => false], $lineno); + + if ($node instanceof NameExpression) { + $node->setAttribute('always_defined', true); + } + } + + public function compile(Compiler $compiler): void + { + if ($this->getAttribute('is_defined_test')) { + $compiler + ->raw('method_exists($macros[') + ->repr($this->getNode('node')->getAttribute('name')) + ->raw('], ') + ->repr($this->getAttribute('method')) + ->raw(')') + ; + + return; + } + + $compiler + ->raw('twig_call_macro($macros[') + ->repr($this->getNode('node')->getAttribute('name')) + ->raw('], ') + ->repr($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('], ') + ->repr($this->getTemplateLine()) + ->raw(', $context, $this->getSourceContext())'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/NameExpression.php b/data/vendor/twig/twig/src/Node/Expression/NameExpression.php new file mode 100644 index 0000000..c3563f0 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/NameExpression.php @@ -0,0 +1,97 @@ + '$this->getTemplateName()', + '_context' => '$context', + '_charset' => '$this->env->getCharset()', + ]; + + public function __construct(string $name, int $lineno) + { + parent::__construct([], ['name' => $name, 'is_defined_test' => false, 'ignore_strict_check' => false, 'always_defined' => false], $lineno); + } + + public function compile(Compiler $compiler): void + { + $name = $this->getAttribute('name'); + + $compiler->addDebugInfo($this); + + if ($this->getAttribute('is_defined_test')) { + if ($this->isSpecial()) { + $compiler->repr(true); + } elseif (\PHP_VERSION_ID >= 70400) { + $compiler + ->raw('array_key_exists(') + ->string($name) + ->raw(', $context)') + ; + } else { + $compiler + ->raw('(isset($context[') + ->string($name) + ->raw(']) || array_key_exists(') + ->string($name) + ->raw(', $context))') + ; + } + } elseif ($this->isSpecial()) { + $compiler->raw($this->specialVars[$name]); + } elseif ($this->getAttribute('always_defined')) { + $compiler + ->raw('$context[') + ->string($name) + ->raw(']') + ; + } else { + if ($this->getAttribute('ignore_strict_check') || !$compiler->getEnvironment()->isStrictVariables()) { + $compiler + ->raw('($context[') + ->string($name) + ->raw('] ?? null)') + ; + } else { + $compiler + ->raw('(isset($context[') + ->string($name) + ->raw(']) || array_key_exists(') + ->string($name) + ->raw(', $context) ? $context[') + ->string($name) + ->raw('] : (function () { throw new RuntimeError(\'Variable ') + ->string($name) + ->raw(' does not exist.\', ') + ->repr($this->lineno) + ->raw(', $this->source); })()') + ->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/data/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php b/data/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php new file mode 100644 index 0000000..a72bc4f --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php @@ -0,0 +1,60 @@ +getTemplateLine()); + // for "block()", we don't need the null test as the return value is always a string + if (!$left instanceof BlockReferenceExpression) { + $test = new AndBinary( + $test, + new NotUnary(new NullTest($left, 'null', new Node(), $left->getTemplateLine()), $left->getTemplateLine()), + $left->getTemplateLine() + ); + } + + parent::__construct($test, $left, $right, $lineno); + } + + public function compile(Compiler $compiler): void + { + /* + * 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 ($this->getNode('expr2') instanceof NameExpression) { + $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/data/vendor/twig/twig/src/Node/Expression/ParentExpression.php b/data/vendor/twig/twig/src/Node/Expression/ParentExpression.php new file mode 100644 index 0000000..2549197 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/ParentExpression.php @@ -0,0 +1,46 @@ + + */ +class ParentExpression extends AbstractExpression +{ + public function __construct(string $name, int $lineno, string $tag = null) + { + parent::__construct([], ['output' => false, 'name' => $name], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + 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/data/vendor/twig/twig/src/Node/Expression/TempNameExpression.php b/data/vendor/twig/twig/src/Node/Expression/TempNameExpression.php new file mode 100644 index 0000000..004c704 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/TempNameExpression.php @@ -0,0 +1,31 @@ + $name], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->raw('$_') + ->raw($this->getAttribute('name')) + ->raw('_') + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Test/ConstantTest.php b/data/vendor/twig/twig/src/Node/Expression/Test/ConstantTest.php new file mode 100644 index 0000000..57e9319 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Test/ConstantTest.php @@ -0,0 +1,49 @@ + + */ +class ConstantTest extends TestExpression +{ + public function compile(Compiler $compiler): void + { + $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/data/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php b/data/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php new file mode 100644 index 0000000..3953bbb --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php @@ -0,0 +1,74 @@ + + */ +class DefinedTest extends TestExpression +{ + public function __construct(Node $node, string $name, ?Node $arguments, int $lineno) + { + if ($node instanceof NameExpression) { + $node->setAttribute('is_defined_test', true); + } elseif ($node instanceof GetAttrExpression) { + $node->setAttribute('is_defined_test', true); + $this->changeIgnoreStrictCheck($node); + } elseif ($node instanceof BlockReferenceExpression) { + $node->setAttribute('is_defined_test', true); + } elseif ($node instanceof FunctionExpression && 'constant' === $node->getAttribute('name')) { + $node->setAttribute('is_defined_test', true); + } elseif ($node instanceof ConstantExpression || $node instanceof ArrayExpression) { + $node = new ConstantExpression(true, $node->getTemplateLine()); + } elseif ($node instanceof MethodCallExpression) { + $node->setAttribute('is_defined_test', true); + } else { + throw new SyntaxError('The "defined" test only works with simple variables.', $lineno); + } + + parent::__construct($node, $name, $arguments, $lineno); + } + + private function changeIgnoreStrictCheck(GetAttrExpression $node) + { + $node->setAttribute('optimizable', false); + $node->setAttribute('ignore_strict_check', true); + + if ($node->getNode('node') instanceof GetAttrExpression) { + $this->changeIgnoreStrictCheck($node->getNode('node')); + } + } + + public function compile(Compiler $compiler): void + { + $compiler->subcompile($this->getNode('node')); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php b/data/vendor/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php new file mode 100644 index 0000000..4cb3ee0 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php @@ -0,0 +1,36 @@ + + */ +class DivisiblebyTest extends TestExpression +{ + public function compile(Compiler $compiler): void + { + $compiler + ->raw('(0 == ') + ->subcompile($this->getNode('node')) + ->raw(' % ') + ->subcompile($this->getNode('arguments')->getNode(0)) + ->raw(')') + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Test/EvenTest.php b/data/vendor/twig/twig/src/Node/Expression/Test/EvenTest.php new file mode 100644 index 0000000..a0e3ed6 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Test/EvenTest.php @@ -0,0 +1,35 @@ + + */ +class EvenTest extends TestExpression +{ + public function compile(Compiler $compiler): void + { + $compiler + ->raw('(') + ->subcompile($this->getNode('node')) + ->raw(' % 2 == 0') + ->raw(')') + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Test/NullTest.php b/data/vendor/twig/twig/src/Node/Expression/Test/NullTest.php new file mode 100644 index 0000000..45b54ae --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Test/NullTest.php @@ -0,0 +1,34 @@ + + */ +class NullTest extends TestExpression +{ + public function compile(Compiler $compiler): void + { + $compiler + ->raw('(null === ') + ->subcompile($this->getNode('node')) + ->raw(')') + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Test/OddTest.php b/data/vendor/twig/twig/src/Node/Expression/Test/OddTest.php new file mode 100644 index 0000000..d56c711 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Test/OddTest.php @@ -0,0 +1,35 @@ + + */ +class OddTest extends TestExpression +{ + public function compile(Compiler $compiler): void + { + $compiler + ->raw('(') + ->subcompile($this->getNode('node')) + ->raw(' % 2 != 0') + ->raw(')') + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Test/SameasTest.php b/data/vendor/twig/twig/src/Node/Expression/Test/SameasTest.php new file mode 100644 index 0000000..c96d2bc --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Test/SameasTest.php @@ -0,0 +1,34 @@ + + */ +class SameasTest extends TestExpression +{ + public function compile(Compiler $compiler): void + { + $compiler + ->raw('(') + ->subcompile($this->getNode('node')) + ->raw(' === ') + ->subcompile($this->getNode('arguments')->getNode(0)) + ->raw(')') + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/TestExpression.php b/data/vendor/twig/twig/src/Node/Expression/TestExpression.php new file mode 100644 index 0000000..e518bd8 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/TestExpression.php @@ -0,0 +1,42 @@ + $node]; + if (null !== $arguments) { + $nodes['arguments'] = $arguments; + } + + parent::__construct($nodes, ['name' => $name], $lineno); + } + + public function compile(Compiler $compiler): void + { + $name = $this->getAttribute('name'); + $test = $compiler->getEnvironment()->getTest($name); + + $this->setAttribute('name', $name); + $this->setAttribute('type', 'test'); + $this->setAttribute('arguments', $test->getArguments()); + $this->setAttribute('callable', $test->getCallable()); + $this->setAttribute('is_variadic', $test->isVariadic()); + + $this->compileCallable($compiler); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php b/data/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php new file mode 100644 index 0000000..e31e3f8 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php @@ -0,0 +1,34 @@ + $node], [], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler->raw(' '); + $this->operator($compiler); + $compiler->subcompile($this->getNode('node')); + } + + abstract public function operator(Compiler $compiler): Compiler; +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Unary/NegUnary.php b/data/vendor/twig/twig/src/Node/Expression/Unary/NegUnary.php new file mode 100644 index 0000000..dc2f235 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Unary/NegUnary.php @@ -0,0 +1,23 @@ +raw('-'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Unary/NotUnary.php b/data/vendor/twig/twig/src/Node/Expression/Unary/NotUnary.php new file mode 100644 index 0000000..55c11ba --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Unary/NotUnary.php @@ -0,0 +1,23 @@ +raw('!'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/Unary/PosUnary.php b/data/vendor/twig/twig/src/Node/Expression/Unary/PosUnary.php new file mode 100644 index 0000000..4b0a062 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/Unary/PosUnary.php @@ -0,0 +1,23 @@ +raw('+'); + } +} diff --git a/data/vendor/twig/twig/src/Node/Expression/VariadicExpression.php b/data/vendor/twig/twig/src/Node/Expression/VariadicExpression.php new file mode 100644 index 0000000..a1bdb48 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Expression/VariadicExpression.php @@ -0,0 +1,24 @@ +raw('...'); + + parent::compile($compiler); + } +} diff --git a/data/vendor/twig/twig/src/Node/FlushNode.php b/data/vendor/twig/twig/src/Node/FlushNode.php new file mode 100644 index 0000000..fa50a88 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/FlushNode.php @@ -0,0 +1,35 @@ + + */ +class FlushNode extends Node +{ + public function __construct(int $lineno, string $tag) + { + parent::__construct([], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write("flush();\n") + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/ForLoopNode.php b/data/vendor/twig/twig/src/Node/ForLoopNode.php new file mode 100644 index 0000000..d5ce845 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/ForLoopNode.php @@ -0,0 +1,49 @@ + + */ +class ForLoopNode extends Node +{ + public function __construct(int $lineno, string $tag = null) + { + parent::__construct([], ['with_loop' => false, 'ifexpr' => false, 'else' => false], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + 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") + ->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/data/vendor/twig/twig/src/Node/ForNode.php b/data/vendor/twig/twig/src/Node/ForNode.php new file mode 100644 index 0000000..04addfb --- /dev/null +++ b/data/vendor/twig/twig/src/Node/ForNode.php @@ -0,0 +1,107 @@ + + */ +class ForNode extends Node +{ + private $loop; + + public function __construct(AssignNameExpression $keyTarget, AssignNameExpression $valueTarget, AbstractExpression $seq, ?Node $ifexpr, Node $body, ?Node $else, int $lineno, string $tag = null) + { + $body = new Node([$body, $this->loop = new ForLoopNode($lineno, $tag)]); + + $nodes = ['key_target' => $keyTarget, 'value_target' => $valueTarget, 'seq' => $seq, 'body' => $body]; + if (null !== $else) { + $nodes['else'] = $else; + } + + parent::__construct($nodes, ['with_loop' => true], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $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'] = [\n") + ->write(" 'parent' => \$context['_parent'],\n") + ->write(" 'index0' => 0,\n") + ->write(" 'index' => 1,\n") + ->write(" 'first' => true,\n") + ->write("];\n") + ->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')); + + $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/data/vendor/twig/twig/src/Node/IfNode.php b/data/vendor/twig/twig/src/Node/IfNode.php new file mode 100644 index 0000000..5fa2008 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/IfNode.php @@ -0,0 +1,70 @@ + + */ +class IfNode extends Node +{ + public function __construct(Node $tests, ?Node $else, int $lineno, string $tag = null) + { + $nodes = ['tests' => $tests]; + if (null !== $else) { + $nodes['else'] = $else; + } + + parent::__construct($nodes, [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $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/data/vendor/twig/twig/src/Node/ImportNode.php b/data/vendor/twig/twig/src/Node/ImportNode.php new file mode 100644 index 0000000..5378d79 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/ImportNode.php @@ -0,0 +1,63 @@ + + */ +class ImportNode extends Node +{ + public function __construct(AbstractExpression $expr, AbstractExpression $var, int $lineno, string $tag = null, bool $global = true) + { + parent::__construct(['expr' => $expr, 'var' => $var], ['global' => $global], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write('$macros[') + ->repr($this->getNode('var')->getAttribute('name')) + ->raw('] = ') + ; + + if ($this->getAttribute('global')) { + $compiler + ->raw('$this->macros[') + ->repr($this->getNode('var')->getAttribute('name')) + ->raw('] = ') + ; + } + + if ($this->getNode('expr') instanceof NameExpression && '_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(')->unwrap()') + ; + } + + $compiler->raw(";\n"); + } +} diff --git a/data/vendor/twig/twig/src/Node/IncludeNode.php b/data/vendor/twig/twig/src/Node/IncludeNode.php new file mode 100644 index 0000000..d540d6b --- /dev/null +++ b/data/vendor/twig/twig/src/Node/IncludeNode.php @@ -0,0 +1,106 @@ + + */ +class IncludeNode extends Node implements NodeOutputInterface +{ + public function __construct(AbstractExpression $expr, ?AbstractExpression $variables, bool $only, bool $ignoreMissing, int $lineno, string $tag = null) + { + $nodes = ['expr' => $expr]; + if (null !== $variables) { + $nodes['variables'] = $variables; + } + + parent::__construct($nodes, ['only' => $only, 'ignore_missing' => $ignoreMissing], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler->addDebugInfo($this); + + if ($this->getAttribute('ignore_missing')) { + $template = $compiler->getVarName(); + + $compiler + ->write(sprintf("$%s = null;\n", $template)) + ->write("try {\n") + ->indent() + ->write(sprintf('$%s = ', $template)) + ; + + $this->addGetTemplate($compiler); + + $compiler + ->raw(";\n") + ->outdent() + ->write("} catch (LoaderError \$e) {\n") + ->indent() + ->write("// ignore missing template\n") + ->outdent() + ->write("}\n") + ->write(sprintf("if ($%s) {\n", $template)) + ->indent() + ->write(sprintf('$%s->display(', $template)) + ; + $this->addTemplateArguments($compiler); + $compiler + ->raw(");\n") + ->outdent() + ->write("}\n") + ; + } else { + $this->addGetTemplate($compiler); + $compiler->raw('->display('); + $this->addTemplateArguments($compiler); + $compiler->raw(");\n"); + } + } + + protected function addGetTemplate(Compiler $compiler) + { + $compiler + ->write('$this->loadTemplate(') + ->subcompile($this->getNode('expr')) + ->raw(', ') + ->repr($this->getTemplateName()) + ->raw(', ') + ->repr($this->getTemplateLine()) + ->raw(')') + ; + } + + protected function addTemplateArguments(Compiler $compiler) + { + if (!$this->hasNode('variables')) { + $compiler->raw(false === $this->getAttribute('only') ? '$context' : '[]'); + } elseif (false === $this->getAttribute('only')) { + $compiler + ->raw('twig_array_merge($context, ') + ->subcompile($this->getNode('variables')) + ->raw(')') + ; + } else { + $compiler->raw('twig_to_array('); + $compiler->subcompile($this->getNode('variables')); + $compiler->raw(')'); + } + } +} diff --git a/data/vendor/twig/twig/src/Node/MacroNode.php b/data/vendor/twig/twig/src/Node/MacroNode.php new file mode 100644 index 0000000..7f1b24d --- /dev/null +++ b/data/vendor/twig/twig/src/Node/MacroNode.php @@ -0,0 +1,113 @@ + + */ +class MacroNode extends Node +{ + public const VARARGS_NAME = 'varargs'; + + public function __construct(string $name, Node $body, Node $arguments, int $lineno, string $tag = null) + { + foreach ($arguments as $argumentName => $argument) { + if (self::VARARGS_NAME === $argumentName) { + throw new SyntaxError(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(), $argument->getSourceContext()); + } + } + + parent::__construct(['body' => $body, 'arguments' => $arguments], ['name' => $name], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write(sprintf('public function macro_%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 ($count) { + $compiler->raw(', '); + } + + $compiler + ->raw('...$__varargs__') + ->raw(")\n") + ->write("{\n") + ->indent() + ->write("\$macros = \$this->macros;\n") + ->write("\$context = \$this->env->mergeGlobals([\n") + ->indent() + ; + + foreach ($this->getNode('arguments') as $name => $default) { + $compiler + ->write('') + ->string($name) + ->raw(' => $__'.$name.'__') + ->raw(",\n") + ; + } + + $compiler + ->write('') + ->string(self::VARARGS_NAME) + ->raw(' => ') + ; + + $compiler + ->raw("\$__varargs__,\n") + ->outdent() + ->write("]);\n\n") + ->write("\$blocks = [];\n\n") + ; + if ($compiler->getEnvironment()->isDebug()) { + $compiler->write("ob_start();\n"); + } else { + $compiler->write("ob_start(function () { return ''; });\n"); + } + $compiler + ->write("try {\n") + ->indent() + ->subcompile($this->getNode('body')) + ->raw("\n") + ->write("return ('' === \$tmp = ob_get_contents()) ? '' : new Markup(\$tmp, \$this->env->getCharset());\n") + ->outdent() + ->write("} finally {\n") + ->indent() + ->write("ob_end_clean();\n") + ->outdent() + ->write("}\n") + ->outdent() + ->write("}\n\n") + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/ModuleNode.php b/data/vendor/twig/twig/src/Node/ModuleNode.php new file mode 100644 index 0000000..e972b6b --- /dev/null +++ b/data/vendor/twig/twig/src/Node/ModuleNode.php @@ -0,0 +1,464 @@ + + */ +final class ModuleNode extends Node +{ + public function __construct(Node $body, ?AbstractExpression $parent, Node $blocks, Node $macros, Node $traits, $embeddedTemplates, Source $source) + { + $nodes = [ + 'body' => $body, + 'blocks' => $blocks, + 'macros' => $macros, + 'traits' => $traits, + 'display_start' => new Node(), + 'display_end' => new Node(), + 'constructor_start' => new Node(), + 'constructor_end' => new Node(), + 'class_end' => new 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, [ + 'index' => null, + 'embedded_templates' => $embeddedTemplates, + ], 1); + + // populate the template name of all node children + $this->setSourceContext($source); + } + + public function setIndex($index) + { + $this->setAttribute('index', $index); + } + + public function compile(Compiler $compiler): void + { + $this->compileTemplate($compiler); + + foreach ($this->getAttribute('embedded_templates') as $template) { + $compiler->subcompile($template); + } + } + + protected function compileTemplate(Compiler $compiler) + { + if (!$this->getAttribute('index')) { + $compiler->write('compileClassHeader($compiler); + + $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->compileGetSourceContext($compiler); + + $this->compileClassFooter($compiler); + } + + protected function compileGetParent(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 ConstantExpression) { + $compiler->subcompile($parent); + } else { + $compiler + ->raw('$this->loadTemplate(') + ->subcompile($parent) + ->raw(', ') + ->repr($this->getSourceContext()->getName()) + ->raw(', ') + ->repr($parent->getTemplateLine()) + ->raw(')') + ; + } + + $compiler + ->raw(";\n") + ->outdent() + ->write("}\n\n") + ; + } + + protected function compileClassHeader(Compiler $compiler) + { + $compiler + ->write("\n\n") + ; + if (!$this->getAttribute('index')) { + $compiler + ->write("use Twig\Environment;\n") + ->write("use Twig\Error\LoaderError;\n") + ->write("use Twig\Error\RuntimeError;\n") + ->write("use Twig\Extension\SandboxExtension;\n") + ->write("use Twig\Markup;\n") + ->write("use Twig\Sandbox\SecurityError;\n") + ->write("use Twig\Sandbox\SecurityNotAllowedTagError;\n") + ->write("use Twig\Sandbox\SecurityNotAllowedFilterError;\n") + ->write("use Twig\Sandbox\SecurityNotAllowedFunctionError;\n") + ->write("use Twig\Source;\n") + ->write("use Twig\Template;\n\n") + ; + } + $compiler + // if the template name contains */, add a blank to avoid a PHP parse error + ->write('/* '.str_replace('*/', '* /', $this->getSourceContext()->getName())." */\n") + ->write('class '.$compiler->getEnvironment()->getTemplateClass($this->getSourceContext()->getName(), $this->getAttribute('index'))) + ->raw(" extends Template\n") + ->write("{\n") + ->indent() + ->write("private \$source;\n") + ->write("private \$macros = [];\n\n") + ; + } + + protected function compileConstructor(Compiler $compiler) + { + $compiler + ->write("public function __construct(Environment \$env)\n", "{\n") + ->indent() + ->subcompile($this->getNode('constructor_start')) + ->write("parent::__construct(\$env);\n\n") + ->write("\$this->source = \$this->getSourceContext();\n\n") + ; + + // parent + if (!$this->hasNode('parent')) { + $compiler->write("\$this->parent = false;\n\n"); + } + + $countTraits = \count($this->getNode('traits')); + if ($countTraits) { + // traits + foreach ($this->getNode('traits') as $i => $trait) { + $node = $trait->getNode('template'); + + $compiler + ->addDebugInfo($node) + ->write(sprintf('$_trait_%s = $this->loadTemplate(', $i)) + ->subcompile($node) + ->raw(', ') + ->repr($node->getTemplateName()) + ->raw(', ') + ->repr($node->getTemplateLine()) + ->raw(");\n") + ->write(sprintf("if (!\$_trait_%s->isTraitable()) {\n", $i)) + ->indent() + ->write("throw new RuntimeError('Template \"'.") + ->subcompile($trait->getNode('template')) + ->raw(".'\" cannot be used as a trait.', ") + ->repr($node->getTemplateLine()) + ->raw(", \$this->source);\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 RuntimeError('Block ") + ->string($key) + ->raw(' is not defined in trait ') + ->subcompile($trait->getNode('template')) + ->raw(".', ") + ->repr($node->getTemplateLine()) + ->raw(", \$this->source);\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("[\n") + ; + } else { + $compiler + ->write("\$this->blocks = [\n") + ; + } + + // blocks + $compiler + ->indent() + ; + + foreach ($this->getNode('blocks') as $name => $node) { + $compiler + ->write(sprintf("'%s' => [\$this, 'block_%s'],\n", $name, $name)) + ; + } + + if ($countTraits) { + $compiler + ->outdent() + ->write("]\n") + ->outdent() + ->write(");\n") + ; + } else { + $compiler + ->outdent() + ->write("];\n") + ; + } + + $compiler + ->subcompile($this->getNode('constructor_end')) + ->outdent() + ->write("}\n\n") + ; + } + + protected function compileDisplay(Compiler $compiler) + { + $compiler + ->write("protected function doDisplay(array \$context, array \$blocks = [])\n", "{\n") + ->indent() + ->write("\$macros = \$this->macros;\n") + ->subcompile($this->getNode('display_start')) + ->subcompile($this->getNode('body')) + ; + + if ($this->hasNode('parent')) { + $parent = $this->getNode('parent'); + + $compiler->addDebugInfo($parent); + if ($parent instanceof ConstantExpression) { + $compiler + ->write('$this->parent = $this->loadTemplate(') + ->subcompile($parent) + ->raw(', ') + ->repr($this->getSourceContext()->getName()) + ->raw(', ') + ->repr($parent->getTemplateLine()) + ->raw(");\n") + ; + $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(Compiler $compiler) + { + $compiler + ->subcompile($this->getNode('class_end')) + ->outdent() + ->write("}\n") + ; + } + + protected function compileMacros(Compiler $compiler) + { + $compiler->subcompile($this->getNode('macros')); + } + + protected function compileGetTemplateName(Compiler $compiler) + { + $compiler + ->write("public function getTemplateName()\n", "{\n") + ->indent() + ->write('return ') + ->repr($this->getSourceContext()->getName()) + ->raw(";\n") + ->outdent() + ->write("}\n\n") + ; + } + + protected function compileIsTraitable(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 BodyNode) { + $nodes = $this->getNode('body')->getNode(0); + } else { + $nodes = $this->getNode('body'); + } + + if (!\count($nodes)) { + $nodes = new Node([$nodes]); + } + + foreach ($nodes as $node) { + if (!\count($node)) { + continue; + } + + if ($node instanceof TextNode && ctype_space($node->getAttribute('data'))) { + continue; + } + + if ($node instanceof BlockReferenceNode) { + 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(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 compileGetSourceContext(Compiler $compiler) + { + $compiler + ->write("public function getSourceContext()\n", "{\n") + ->indent() + ->write('return new Source(') + ->string($compiler->getEnvironment()->isDebug() ? $this->getSourceContext()->getCode() : '') + ->raw(', ') + ->string($this->getSourceContext()->getName()) + ->raw(', ') + ->string($this->getSourceContext()->getPath()) + ->raw(");\n") + ->outdent() + ->write("}\n") + ; + } + + protected function compileLoadTemplate(Compiler $compiler, $node, $var) + { + if ($node instanceof ConstantExpression) { + $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/data/vendor/twig/twig/src/Node/Node.php b/data/vendor/twig/twig/src/Node/Node.php new file mode 100644 index 0000000..c0558b9 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/Node.php @@ -0,0 +1,179 @@ + + */ +class Node implements \Countable, \IteratorAggregate +{ + protected $nodes; + protected $attributes; + protected $lineno; + protected $tag; + + private $name; + private $sourceContext; + + /** + * @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 $attributes = [], int $lineno = 0, string $tag = null) + { + foreach ($nodes as $name => $node) { + if (!$node instanceof self) { + throw new \InvalidArgumentException(sprintf('Using "%s" for the value of node "%s" of "%s" is not supported. You must pass a \Twig\Node\Node instance.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, static::class)); + } + } + $this->nodes = $nodes; + $this->attributes = $attributes; + $this->lineno = $lineno; + $this->tag = $tag; + } + + public function __toString() + { + $attributes = []; + foreach ($this->attributes as $name => $value) { + $attributes[] = sprintf('%s: %s', $name, str_replace("\n", '', var_export($value, true))); + } + + $repr = [static::class.'('.implode(', ', $attributes)]; + + if (\count($this->nodes)) { + foreach ($this->nodes as $name => $node) { + $len = \strlen($name) + 4; + $noderepr = []; + 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); + } + + /** + * @return void + */ + public function compile(Compiler $compiler) + { + foreach ($this->nodes as $node) { + $node->compile($compiler); + } + } + + public function getTemplateLine(): int + { + return $this->lineno; + } + + public function getNodeTag(): ?string + { + return $this->tag; + } + + public function hasAttribute(string $name): bool + { + return \array_key_exists($name, $this->attributes); + } + + public function getAttribute(string $name) + { + if (!\array_key_exists($name, $this->attributes)) { + throw new \LogicException(sprintf('Attribute "%s" does not exist for Node "%s".', $name, static::class)); + } + + return $this->attributes[$name]; + } + + public function setAttribute(string $name, $value): void + { + $this->attributes[$name] = $value; + } + + public function removeAttribute(string $name): void + { + unset($this->attributes[$name]); + } + + public function hasNode(string $name): bool + { + return isset($this->nodes[$name]); + } + + public function getNode(string $name): self + { + if (!isset($this->nodes[$name])) { + throw new \LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, static::class)); + } + + return $this->nodes[$name]; + } + + public function setNode(string $name, self $node): void + { + $this->nodes[$name] = $node; + } + + public function removeNode(string $name): void + { + unset($this->nodes[$name]); + } + + /** + * @return int + */ + #[\ReturnTypeWillChange] + public function count() + { + return \count($this->nodes); + } + + public function getIterator(): \Traversable + { + return new \ArrayIterator($this->nodes); + } + + public function getTemplateName(): ?string + { + return $this->sourceContext ? $this->sourceContext->getName() : null; + } + + public function setSourceContext(Source $source): void + { + $this->sourceContext = $source; + foreach ($this->nodes as $node) { + $node->setSourceContext($source); + } + } + + public function getSourceContext(): ?Source + { + return $this->sourceContext; + } +} diff --git a/data/vendor/twig/twig/src/Node/NodeCaptureInterface.php b/data/vendor/twig/twig/src/Node/NodeCaptureInterface.php new file mode 100644 index 0000000..9fb6a0c --- /dev/null +++ b/data/vendor/twig/twig/src/Node/NodeCaptureInterface.php @@ -0,0 +1,21 @@ + + */ +interface NodeCaptureInterface +{ +} diff --git a/data/vendor/twig/twig/src/Node/NodeOutputInterface.php b/data/vendor/twig/twig/src/Node/NodeOutputInterface.php new file mode 100644 index 0000000..5e35b40 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/NodeOutputInterface.php @@ -0,0 +1,21 @@ + + */ +interface NodeOutputInterface +{ +} diff --git a/data/vendor/twig/twig/src/Node/PrintNode.php b/data/vendor/twig/twig/src/Node/PrintNode.php new file mode 100644 index 0000000..60386d2 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/PrintNode.php @@ -0,0 +1,39 @@ + + */ +class PrintNode extends Node implements NodeOutputInterface +{ + public function __construct(AbstractExpression $expr, int $lineno, string $tag = null) + { + parent::__construct(['expr' => $expr], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write('echo ') + ->subcompile($this->getNode('expr')) + ->raw(";\n") + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/SandboxNode.php b/data/vendor/twig/twig/src/Node/SandboxNode.php new file mode 100644 index 0000000..4d5666b --- /dev/null +++ b/data/vendor/twig/twig/src/Node/SandboxNode.php @@ -0,0 +1,52 @@ + + */ +class SandboxNode extends Node +{ + public function __construct(Node $body, int $lineno, string $tag = null) + { + parent::__construct(['body' => $body], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write("if (!\$alreadySandboxed = \$this->sandbox->isSandboxed()) {\n") + ->indent() + ->write("\$this->sandbox->enableSandbox();\n") + ->outdent() + ->write("}\n") + ->write("try {\n") + ->indent() + ->subcompile($this->getNode('body')) + ->outdent() + ->write("} finally {\n") + ->indent() + ->write("if (!\$alreadySandboxed) {\n") + ->indent() + ->write("\$this->sandbox->disableSandbox();\n") + ->outdent() + ->write("}\n") + ->outdent() + ->write("}\n") + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/SetNode.php b/data/vendor/twig/twig/src/Node/SetNode.php new file mode 100644 index 0000000..96b6bd8 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/SetNode.php @@ -0,0 +1,105 @@ + + */ +class SetNode extends Node implements NodeCaptureInterface +{ + public function __construct(bool $capture, Node $names, Node $values, int $lineno, string $tag = null) + { + parent::__construct(['names' => $names, 'values' => $values], ['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 TextNode) { + $this->setNode('values', new ConstantExpression($values->getAttribute('data'), $values->getTemplateLine())); + $this->setAttribute('capture', false); + } + } + } + + public function compile(Compiler $compiler): void + { + $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')) { + if ($compiler->getEnvironment()->isDebug()) { + $compiler->write("ob_start();\n"); + } else { + $compiler->write("ob_start(function () { return ''; });\n"); + } + $compiler + ->subcompile($this->getNode('values')) + ; + } + + $compiler->subcompile($this->getNode('names'), false); + + if ($this->getAttribute('capture')) { + $compiler->raw(" = ('' === \$tmp = ob_get_clean()) ? '' : new Markup(\$tmp, \$this->env->getCharset())"); + } + } + + if (!$this->getAttribute('capture')) { + $compiler->raw(' = '); + + if (\count($this->getNode('names')) > 1) { + $compiler->write('['); + 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 Markup(\$tmp, \$this->env->getCharset())") + ; + } else { + $compiler->subcompile($this->getNode('values')); + } + } + } + + $compiler->raw(";\n"); + } +} diff --git a/data/vendor/twig/twig/src/Node/TextNode.php b/data/vendor/twig/twig/src/Node/TextNode.php new file mode 100644 index 0000000..d74ebe6 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/TextNode.php @@ -0,0 +1,38 @@ + + */ +class TextNode extends Node implements NodeOutputInterface +{ + public function __construct(string $data, int $lineno) + { + parent::__construct([], ['data' => $data], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write('echo ') + ->string($this->getAttribute('data')) + ->raw(";\n") + ; + } +} diff --git a/data/vendor/twig/twig/src/Node/WithNode.php b/data/vendor/twig/twig/src/Node/WithNode.php new file mode 100644 index 0000000..56a3344 --- /dev/null +++ b/data/vendor/twig/twig/src/Node/WithNode.php @@ -0,0 +1,70 @@ + + */ +class WithNode extends Node +{ + public function __construct(Node $body, ?Node $variables, bool $only, int $lineno, string $tag = null) + { + $nodes = ['body' => $body]; + if (null !== $variables) { + $nodes['variables'] = $variables; + } + + parent::__construct($nodes, ['only' => $only], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler->addDebugInfo($this); + + $parentContextName = $compiler->getVarName(); + + $compiler->write(sprintf("\$%s = \$context;\n", $parentContextName)); + + if ($this->hasNode('variables')) { + $node = $this->getNode('variables'); + $varsName = $compiler->getVarName(); + $compiler + ->write(sprintf('$%s = ', $varsName)) + ->subcompile($node) + ->raw(";\n") + ->write(sprintf("if (!twig_test_iterable(\$%s)) {\n", $varsName)) + ->indent() + ->write("throw new RuntimeError('Variables passed to the \"with\" tag must be a hash.', ") + ->repr($node->getTemplateLine()) + ->raw(", \$this->getSourceContext());\n") + ->outdent() + ->write("}\n") + ->write(sprintf("\$%s = twig_to_array(\$%s);\n", $varsName, $varsName)) + ; + + if ($this->getAttribute('only')) { + $compiler->write("\$context = [];\n"); + } + + $compiler->write(sprintf("\$context = \$this->env->mergeGlobals(array_merge(\$context, \$%s));\n", $varsName)); + } + + $compiler + ->subcompile($this->getNode('body')) + ->write(sprintf("\$context = \$%s;\n", $parentContextName)) + ; + } +} diff --git a/data/vendor/twig/twig/src/NodeTraverser.php b/data/vendor/twig/twig/src/NodeTraverser.php new file mode 100644 index 0000000..47a2d5c --- /dev/null +++ b/data/vendor/twig/twig/src/NodeTraverser.php @@ -0,0 +1,76 @@ + + */ +final class NodeTraverser +{ + private $env; + private $visitors = []; + + /** + * @param NodeVisitorInterface[] $visitors + */ + public function __construct(Environment $env, array $visitors = []) + { + $this->env = $env; + foreach ($visitors as $visitor) { + $this->addVisitor($visitor); + } + } + + public function addVisitor(NodeVisitorInterface $visitor): void + { + $this->visitors[$visitor->getPriority()][] = $visitor; + } + + /** + * Traverses a node and calls the registered visitors. + */ + public function traverse(Node $node): Node + { + ksort($this->visitors); + foreach ($this->visitors as $visitors) { + foreach ($visitors as $visitor) { + $node = $this->traverseForVisitor($visitor, $node); + } + } + + return $node; + } + + private function traverseForVisitor(NodeVisitorInterface $visitor, Node $node): ?Node + { + $node = $visitor->enterNode($node, $this->env); + + foreach ($node as $k => $n) { + if (null !== $m = $this->traverseForVisitor($visitor, $n)) { + if ($m !== $n) { + $node->setNode($k, $m); + } + } else { + $node->removeNode($k); + } + } + + return $visitor->leaveNode($node, $this->env); + } +} diff --git a/data/vendor/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php b/data/vendor/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php new file mode 100644 index 0000000..d7036ae --- /dev/null +++ b/data/vendor/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php @@ -0,0 +1,49 @@ + + */ +abstract class AbstractNodeVisitor implements NodeVisitorInterface +{ + final public function enterNode(Node $node, Environment $env): Node + { + return $this->doEnterNode($node, $env); + } + + final public function leaveNode(Node $node, Environment $env): ?Node + { + return $this->doLeaveNode($node, $env); + } + + /** + * Called before child nodes are visited. + * + * @return Node The modified node + */ + abstract protected function doEnterNode(Node $node, Environment $env); + + /** + * Called after child nodes are visited. + * + * @return Node|null The modified node or null if the node must be removed + */ + abstract protected function doLeaveNode(Node $node, Environment $env); +} diff --git a/data/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php b/data/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php new file mode 100644 index 0000000..fe56ea3 --- /dev/null +++ b/data/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php @@ -0,0 +1,208 @@ + + * + * @internal + */ +final class EscaperNodeVisitor implements NodeVisitorInterface +{ + private $statusStack = []; + private $blocks = []; + private $safeAnalysis; + private $traverser; + private $defaultStrategy = false; + private $safeVars = []; + + public function __construct() + { + $this->safeAnalysis = new SafeAnalysisNodeVisitor(); + } + + public function enterNode(Node $node, Environment $env): Node + { + if ($node instanceof ModuleNode) { + if ($env->hasExtension(EscaperExtension::class) && $defaultStrategy = $env->getExtension(EscaperExtension::class)->getDefaultStrategy($node->getTemplateName())) { + $this->defaultStrategy = $defaultStrategy; + } + $this->safeVars = []; + $this->blocks = []; + } elseif ($node instanceof AutoEscapeNode) { + $this->statusStack[] = $node->getAttribute('value'); + } elseif ($node instanceof BlockNode) { + $this->statusStack[] = isset($this->blocks[$node->getAttribute('name')]) ? $this->blocks[$node->getAttribute('name')] : $this->needEscaping($env); + } elseif ($node instanceof ImportNode) { + $this->safeVars[] = $node->getNode('var')->getAttribute('name'); + } + + return $node; + } + + public function leaveNode(Node $node, Environment $env): ?Node + { + if ($node instanceof ModuleNode) { + $this->defaultStrategy = false; + $this->safeVars = []; + $this->blocks = []; + } elseif ($node instanceof FilterExpression) { + return $this->preEscapeFilterNode($node, $env); + } elseif ($node instanceof PrintNode && false !== $type = $this->needEscaping($env)) { + $expression = $node->getNode('expr'); + if ($expression instanceof ConditionalExpression && $this->shouldUnwrapConditional($expression, $env, $type)) { + return new DoNode($this->unwrapConditional($expression, $env, $type), $expression->getTemplateLine()); + } + + return $this->escapePrintNode($node, $env, $type); + } + + if ($node instanceof AutoEscapeNode || $node instanceof BlockNode) { + array_pop($this->statusStack); + } elseif ($node instanceof BlockReferenceNode) { + $this->blocks[$node->getAttribute('name')] = $this->needEscaping($env); + } + + return $node; + } + + private function shouldUnwrapConditional(ConditionalExpression $expression, Environment $env, string $type): bool + { + $expr2Safe = $this->isSafeFor($type, $expression->getNode('expr2'), $env); + $expr3Safe = $this->isSafeFor($type, $expression->getNode('expr3'), $env); + + return $expr2Safe !== $expr3Safe; + } + + private function unwrapConditional(ConditionalExpression $expression, Environment $env, string $type): ConditionalExpression + { + // convert "echo a ? b : c" to "a ? echo b : echo c" recursively + $expr2 = $expression->getNode('expr2'); + if ($expr2 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr2, $env, $type)) { + $expr2 = $this->unwrapConditional($expr2, $env, $type); + } else { + $expr2 = $this->escapeInlinePrintNode(new InlinePrint($expr2, $expr2->getTemplateLine()), $env, $type); + } + $expr3 = $expression->getNode('expr3'); + if ($expr3 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr3, $env, $type)) { + $expr3 = $this->unwrapConditional($expr3, $env, $type); + } else { + $expr3 = $this->escapeInlinePrintNode(new InlinePrint($expr3, $expr3->getTemplateLine()), $env, $type); + } + + return new ConditionalExpression($expression->getNode('expr1'), $expr2, $expr3, $expression->getTemplateLine()); + } + + private function escapeInlinePrintNode(InlinePrint $node, Environment $env, string $type): Node + { + $expression = $node->getNode('node'); + + if ($this->isSafeFor($type, $expression, $env)) { + return $node; + } + + return new InlinePrint($this->getEscaperFilter($type, $expression), $node->getTemplateLine()); + } + + private function escapePrintNode(PrintNode $node, Environment $env, string $type): Node + { + 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()); + } + + private function preEscapeFilterNode(FilterExpression $filter, Environment $env): FilterExpression + { + $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; + } + + private function isSafeFor(string $type, Node $expression, Environment $env): bool + { + $safe = $this->safeAnalysis->getSafe($expression); + + if (null === $safe) { + if (null === $this->traverser) { + $this->traverser = new NodeTraverser($env, [$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); + } + + private function needEscaping(Environment $env) + { + if (\count($this->statusStack)) { + return $this->statusStack[\count($this->statusStack) - 1]; + } + + return $this->defaultStrategy ? $this->defaultStrategy : false; + } + + private function getEscaperFilter(string $type, Node $node): FilterExpression + { + $line = $node->getTemplateLine(); + $name = new ConstantExpression('escape', $line); + $args = new Node([new ConstantExpression($type, $line), new ConstantExpression(null, $line), new ConstantExpression(true, $line)]); + + return new FilterExpression($node, $name, $args, $line); + } + + public function getPriority(): int + { + return 0; + } +} diff --git a/data/vendor/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php b/data/vendor/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php new file mode 100644 index 0000000..af477e6 --- /dev/null +++ b/data/vendor/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php @@ -0,0 +1,74 @@ + + * + * @internal + */ +final class MacroAutoImportNodeVisitor implements NodeVisitorInterface +{ + private $inAModule = false; + private $hasMacroCalls = false; + + public function enterNode(Node $node, Environment $env): Node + { + if ($node instanceof ModuleNode) { + $this->inAModule = true; + $this->hasMacroCalls = false; + } + + return $node; + } + + public function leaveNode(Node $node, Environment $env): Node + { + if ($node instanceof ModuleNode) { + $this->inAModule = false; + if ($this->hasMacroCalls) { + $node->getNode('constructor_end')->setNode('_auto_macro_import', new ImportNode(new NameExpression('_self', 0), new AssignNameExpression('_self', 0), 0, 'import', true)); + } + } elseif ($this->inAModule) { + if ( + $node instanceof GetAttrExpression && + $node->getNode('node') instanceof NameExpression && + '_self' === $node->getNode('node')->getAttribute('name') && + $node->getNode('attribute') instanceof ConstantExpression + ) { + $this->hasMacroCalls = true; + + $name = $node->getNode('attribute')->getAttribute('value'); + $node = new MethodCallExpression($node->getNode('node'), 'macro_'.$name, $node->getNode('arguments'), $node->getTemplateLine()); + $node->setAttribute('safe', true); + } + } + + return $node; + } + + public function getPriority(): int + { + // we must be ran before auto-escaping + return -10; + } +} diff --git a/data/vendor/twig/twig/src/NodeVisitor/NodeVisitorInterface.php b/data/vendor/twig/twig/src/NodeVisitor/NodeVisitorInterface.php new file mode 100644 index 0000000..59e836d --- /dev/null +++ b/data/vendor/twig/twig/src/NodeVisitor/NodeVisitorInterface.php @@ -0,0 +1,46 @@ + + */ +interface NodeVisitorInterface +{ + /** + * Called before child nodes are visited. + * + * @return Node The modified node + */ + public function enterNode(Node $node, Environment $env): Node; + + /** + * Called after child nodes are visited. + * + * @return Node|null The modified node or null if the node must be removed + */ + public function leaveNode(Node $node, Environment $env): ?Node; + + /** + * 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/data/vendor/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php b/data/vendor/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php new file mode 100644 index 0000000..7ac75e4 --- /dev/null +++ b/data/vendor/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php @@ -0,0 +1,217 @@ + + * + * @internal + */ +final class OptimizerNodeVisitor implements NodeVisitorInterface +{ + public const OPTIMIZE_ALL = -1; + public const OPTIMIZE_NONE = 0; + public const OPTIMIZE_FOR = 2; + public const OPTIMIZE_RAW_FILTER = 4; + + private $loops = []; + private $loopsTargets = []; + private $optimizers; + + /** + * @param int $optimizers The optimizer mode + */ + public function __construct(int $optimizers = -1) + { + if ($optimizers > (self::OPTIMIZE_FOR | self::OPTIMIZE_RAW_FILTER)) { + throw new \InvalidArgumentException(sprintf('Optimizer mode "%s" is not valid.', $optimizers)); + } + + $this->optimizers = $optimizers; + } + + public function enterNode(Node $node, Environment $env): Node + { + if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) { + $this->enterOptimizeFor($node, $env); + } + + return $node; + } + + public function leaveNode(Node $node, Environment $env): ?Node + { + 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); + + return $node; + } + + /** + * Optimizes print nodes. + * + * It replaces: + * + * * "echo $this->render(Parent)Block()" with "$this->display(Parent)Block()" + */ + private function optimizePrintNode(Node $node, Environment $env): Node + { + if (!$node instanceof PrintNode) { + return $node; + } + + $exprNode = $node->getNode('expr'); + if ( + $exprNode instanceof BlockReferenceExpression || + $exprNode instanceof ParentExpression + ) { + $exprNode->setAttribute('output', true); + + return $exprNode; + } + + return $node; + } + + /** + * Removes "raw" filters. + */ + private function optimizeRawFilter(Node $node, Environment $env): Node + { + if ($node instanceof FilterExpression && 'raw' == $node->getNode('filter')->getAttribute('value')) { + return $node->getNode('node'); + } + + return $node; + } + + /** + * Optimizes "for" tag by removing the "loop" variable creation whenever possible. + */ + private function enterOptimizeFor(Node $node, Environment $env): void + { + if ($node instanceof ForNode) { + // 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 NameExpression && 'loop' === $node->getAttribute('name')) { + $node->setAttribute('always_defined', true); + $this->addLoopToCurrent(); + } + + // optimize access to loop targets + elseif ($node instanceof NameExpression && \in_array($node->getAttribute('name'), $this->loopsTargets)) { + $node->setAttribute('always_defined', true); + } + + // block reference + elseif ($node instanceof BlockReferenceNode || $node instanceof BlockReferenceExpression) { + $this->addLoopToCurrent(); + } + + // include without the only attribute + elseif ($node instanceof IncludeNode && !$node->getAttribute('only')) { + $this->addLoopToAll(); + } + + // include function without the with_context=false parameter + elseif ($node instanceof FunctionExpression + && '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 GetAttrExpression + && (!$node->getNode('attribute') instanceof ConstantExpression + || 'parent' === $node->getNode('attribute')->getAttribute('value') + ) + && (true === $this->loops[0]->getAttribute('with_loop') + || ($node->getNode('node') instanceof NameExpression + && 'loop' === $node->getNode('node')->getAttribute('name') + ) + ) + ) { + $this->addLoopToAll(); + } + } + + /** + * Optimizes "for" tag by removing the "loop" variable creation whenever possible. + */ + private function leaveOptimizeFor(Node $node, Environment $env): void + { + if ($node instanceof ForNode) { + array_shift($this->loops); + array_shift($this->loopsTargets); + array_shift($this->loopsTargets); + } + } + + private function addLoopToCurrent(): void + { + $this->loops[0]->setAttribute('with_loop', true); + } + + private function addLoopToAll(): void + { + foreach ($this->loops as $loop) { + $loop->setAttribute('with_loop', true); + } + } + + public function getPriority(): int + { + return 255; + } +} diff --git a/data/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php b/data/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php new file mode 100644 index 0000000..90d6f2e --- /dev/null +++ b/data/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php @@ -0,0 +1,160 @@ +safeVars = $safeVars; + } + + public function getSafe(Node $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']; + } + } + + private function setSafe(Node $node, array $safe): void + { + $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][] = [ + 'key' => $node, + 'value' => $safe, + ]; + } + + public function enterNode(Node $node, Environment $env): Node + { + return $node; + } + + public function leaveNode(Node $node, Environment $env): ?Node + { + if ($node instanceof ConstantExpression) { + // constants are marked safe for all + $this->setSafe($node, ['all']); + } elseif ($node instanceof BlockReferenceExpression) { + // blocks are safe by definition + $this->setSafe($node, ['all']); + } elseif ($node instanceof ParentExpression) { + // parent block is safe by definition + $this->setSafe($node, ['all']); + } elseif ($node instanceof ConditionalExpression) { + // 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 FilterExpression) { + // filter expression is safe when the filter is safe + $name = $node->getNode('filter')->getAttribute('value'); + $args = $node->getNode('arguments'); + if ($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, []); + } + } elseif ($node instanceof FunctionExpression) { + // function expression is safe when the function is safe + $name = $node->getAttribute('name'); + $args = $node->getNode('arguments'); + if ($function = $env->getFunction($name)) { + $this->setSafe($node, $function->getSafe($args)); + } else { + $this->setSafe($node, []); + } + } elseif ($node instanceof MethodCallExpression) { + if ($node->getAttribute('safe')) { + $this->setSafe($node, ['all']); + } else { + $this->setSafe($node, []); + } + } elseif ($node instanceof GetAttrExpression && $node->getNode('node') instanceof NameExpression) { + $name = $node->getNode('node')->getAttribute('name'); + if (\in_array($name, $this->safeVars)) { + $this->setSafe($node, ['all']); + } else { + $this->setSafe($node, []); + } + } else { + $this->setSafe($node, []); + } + + return $node; + } + + private function intersectSafe(array $a = null, array $b = null): array + { + if (null === $a || null === $b) { + return []; + } + + if (\in_array('all', $a)) { + return $b; + } + + if (\in_array('all', $b)) { + return $a; + } + + return array_intersect($a, $b); + } + + public function getPriority(): int + { + return 0; + } +} diff --git a/data/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php b/data/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php new file mode 100644 index 0000000..1446cee --- /dev/null +++ b/data/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php @@ -0,0 +1,136 @@ + + * + * @internal + */ +final class SandboxNodeVisitor implements NodeVisitorInterface +{ + private $inAModule = false; + private $tags; + private $filters; + private $functions; + private $needsToStringWrap = false; + + public function enterNode(Node $node, Environment $env): Node + { + if ($node instanceof ModuleNode) { + $this->inAModule = true; + $this->tags = []; + $this->filters = []; + $this->functions = []; + + 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 FilterExpression && !isset($this->filters[$node->getNode('filter')->getAttribute('value')])) { + $this->filters[$node->getNode('filter')->getAttribute('value')] = $node; + } + + // look for functions + if ($node instanceof FunctionExpression && !isset($this->functions[$node->getAttribute('name')])) { + $this->functions[$node->getAttribute('name')] = $node; + } + + // the .. operator is equivalent to the range() function + if ($node instanceof RangeBinary && !isset($this->functions['range'])) { + $this->functions['range'] = $node; + } + + if ($node instanceof PrintNode) { + $this->needsToStringWrap = true; + $this->wrapNode($node, 'expr'); + } + + if ($node instanceof SetNode && !$node->getAttribute('capture')) { + $this->needsToStringWrap = true; + } + + // wrap outer nodes that can implicitly call __toString() + if ($this->needsToStringWrap) { + if ($node instanceof ConcatBinary) { + $this->wrapNode($node, 'left'); + $this->wrapNode($node, 'right'); + } + if ($node instanceof FilterExpression) { + $this->wrapNode($node, 'node'); + $this->wrapArrayNode($node, 'arguments'); + } + if ($node instanceof FunctionExpression) { + $this->wrapArrayNode($node, 'arguments'); + } + } + } + + return $node; + } + + public function leaveNode(Node $node, Environment $env): ?Node + { + if ($node instanceof ModuleNode) { + $this->inAModule = false; + + $node->setNode('constructor_end', new Node([new CheckSecurityCallNode(), $node->getNode('constructor_end')])); + $node->setNode('class_end', new Node([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('class_end')])); + } elseif ($this->inAModule) { + if ($node instanceof PrintNode || $node instanceof SetNode) { + $this->needsToStringWrap = false; + } + } + + return $node; + } + + private function wrapNode(Node $node, string $name): void + { + $expr = $node->getNode($name); + if ($expr instanceof NameExpression || $expr instanceof GetAttrExpression) { + $node->setNode($name, new CheckToStringNode($expr)); + } + } + + private function wrapArrayNode(Node $node, string $name): void + { + $args = $node->getNode($name); + foreach ($args as $name => $_) { + $this->wrapNode($args, $name); + } + } + + public function getPriority(): int + { + return 0; + } +} diff --git a/data/vendor/twig/twig/src/Parser.php b/data/vendor/twig/twig/src/Parser.php new file mode 100644 index 0000000..d0e77b3 --- /dev/null +++ b/data/vendor/twig/twig/src/Parser.php @@ -0,0 +1,349 @@ + + */ +class Parser +{ + private $stack = []; + private $stream; + private $parent; + private $visitors; + private $expressionParser; + private $blocks; + private $blockStack; + private $macros; + private $env; + private $importedSymbols; + private $traits; + private $embeddedTemplates = []; + private $varNameSalt = 0; + + public function __construct(Environment $env) + { + $this->env = $env; + } + + public function getVarName(): string + { + return sprintf('__internal_parse_%d', $this->varNameSalt++); + } + + public function parse(TokenStream $stream, $test = null, bool $dropNeedle = false): ModuleNode + { + $vars = get_object_vars($this); + unset($vars['stack'], $vars['env'], $vars['handlers'], $vars['visitors'], $vars['expressionParser'], $vars['reservedMacroNames']); + $this->stack[] = $vars; + + // node visitors + if (null === $this->visitors) { + $this->visitors = $this->env->getNodeVisitors(); + } + + if (null === $this->expressionParser) { + $this->expressionParser = new ExpressionParser($this, $this->env); + } + + $this->stream = $stream; + $this->parent = null; + $this->blocks = []; + $this->macros = []; + $this->traits = []; + $this->blockStack = []; + $this->importedSymbols = [[]]; + $this->embeddedTemplates = []; + $this->varNameSalt = 0; + + try { + $body = $this->subparse($test, $dropNeedle); + + if (null !== $this->parent && null === $body = $this->filterBodyNodes($body)) { + $body = new Node(); + } + } catch (SyntaxError $e) { + if (!$e->getSourceContext()) { + $e->setSourceContext($this->stream->getSourceContext()); + } + + if (!$e->getTemplateLine()) { + $e->setTemplateLine($this->stream->getCurrent()->getLine()); + } + + throw $e; + } + + $node = new ModuleNode(new BodyNode([$body]), $this->parent, new Node($this->blocks), new Node($this->macros), new Node($this->traits), $this->embeddedTemplates, $stream->getSourceContext()); + + $traverser = new 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, bool $dropNeedle = false): Node + { + $lineno = $this->getCurrentToken()->getLine(); + $rv = []; + while (!$this->stream->isEOF()) { + switch ($this->getCurrentToken()->getType()) { + case /* Token::TEXT_TYPE */ 0: + $token = $this->stream->next(); + $rv[] = new TextNode($token->getValue(), $token->getLine()); + break; + + case /* Token::VAR_START_TYPE */ 2: + $token = $this->stream->next(); + $expr = $this->expressionParser->parseExpression(); + $this->stream->expect(/* Token::VAR_END_TYPE */ 4); + $rv[] = new PrintNode($expr, $token->getLine()); + break; + + case /* Token::BLOCK_START_TYPE */ 1: + $this->stream->next(); + $token = $this->getCurrentToken(); + + if (/* Token::NAME_TYPE */ 5 !== $token->getType()) { + throw new SyntaxError('A block must start with a tag name.', $token->getLine(), $this->stream->getSourceContext()); + } + + if (null !== $test && $test($token)) { + if ($dropNeedle) { + $this->stream->next(); + } + + if (1 === \count($rv)) { + return $rv[0]; + } + + return new Node($rv, [], $lineno); + } + + if (!$subparser = $this->env->getTokenParser($token->getValue())) { + if (null !== $test) { + $e = new SyntaxError(sprintf('Unexpected "%s" tag', $token->getValue()), $token->getLine(), $this->stream->getSourceContext()); + + if (\is_array($test) && isset($test[0]) && $test[0] instanceof TokenParserInterface) { + $e->appendMessage(sprintf(' (expecting closing tag for the "%s" tag defined near line %s).', $test[0]->getTag(), $lineno)); + } + } else { + $e = new SyntaxError(sprintf('Unknown "%s" tag.', $token->getValue()), $token->getLine(), $this->stream->getSourceContext()); + $e->addSuggestions($token->getValue(), array_keys($this->env->getTokenParsers())); + } + + throw $e; + } + + $this->stream->next(); + + $subparser->setParser($this); + $node = $subparser->parse($token); + if (null !== $node) { + $rv[] = $node; + } + break; + + default: + throw new SyntaxError('Lexer or parser ended up in unsupported state.', $this->getCurrentToken()->getLine(), $this->stream->getSourceContext()); + } + } + + if (1 === \count($rv)) { + return $rv[0]; + } + + return new Node($rv, [], $lineno); + } + + public function getBlockStack(): array + { + return $this->blockStack; + } + + public function peekBlockStack() + { + return $this->blockStack[\count($this->blockStack) - 1] ?? null; + } + + public function popBlockStack(): void + { + array_pop($this->blockStack); + } + + public function pushBlockStack($name): void + { + $this->blockStack[] = $name; + } + + public function hasBlock(string $name): bool + { + return isset($this->blocks[$name]); + } + + public function getBlock(string $name): Node + { + return $this->blocks[$name]; + } + + public function setBlock(string $name, BlockNode $value): void + { + $this->blocks[$name] = new BodyNode([$value], [], $value->getTemplateLine()); + } + + public function hasMacro(string $name): bool + { + return isset($this->macros[$name]); + } + + public function setMacro(string $name, MacroNode $node): void + { + $this->macros[$name] = $node; + } + + public function addTrait($trait): void + { + $this->traits[] = $trait; + } + + public function hasTraits(): bool + { + return \count($this->traits) > 0; + } + + public function embedTemplate(ModuleNode $template) + { + $template->setIndex(mt_rand()); + + $this->embeddedTemplates[] = $template; + } + + public function addImportedSymbol(string $type, string $alias, string $name = null, AbstractExpression $node = null): void + { + $this->importedSymbols[0][$type][$alias] = ['name' => $name, 'node' => $node]; + } + + public function getImportedSymbol(string $type, string $alias) + { + // if the symbol does not exist in the current scope (0), try in the main/global scope (last index) + return $this->importedSymbols[0][$type][$alias] ?? ($this->importedSymbols[\count($this->importedSymbols) - 1][$type][$alias] ?? null); + } + + public function isMainScope(): bool + { + return 1 === \count($this->importedSymbols); + } + + public function pushLocalScope(): void + { + array_unshift($this->importedSymbols, []); + } + + public function popLocalScope(): void + { + array_shift($this->importedSymbols); + } + + public function getExpressionParser(): ExpressionParser + { + return $this->expressionParser; + } + + public function getParent(): ?Node + { + return $this->parent; + } + + public function setParent(?Node $parent): void + { + $this->parent = $parent; + } + + public function getStream(): TokenStream + { + return $this->stream; + } + + public function getCurrentToken(): Token + { + return $this->stream->getCurrent(); + } + + private function filterBodyNodes(Node $node, bool $nested = false): ?Node + { + // check that the body does not contain non-empty output nodes + if ( + ($node instanceof TextNode && !ctype_space($node->getAttribute('data'))) + || + (!$node instanceof TextNode && !$node instanceof BlockReferenceNode && $node instanceof NodeOutputInterface) + ) { + if (false !== strpos((string) $node, \chr(0xEF).\chr(0xBB).\chr(0xBF))) { + $t = substr($node->getAttribute('data'), 3); + if ('' === $t || ctype_space($t)) { + // bypass empty nodes starting with a BOM + return null; + } + } + + throw new SyntaxError('A template that extends another one cannot include content outside Twig blocks. Did you forget to put the content inside a {% block %} tag?', $node->getTemplateLine(), $this->stream->getSourceContext()); + } + + // bypass nodes that "capture" the output + if ($node instanceof NodeCaptureInterface) { + // a "block" tag in such a node will serve as a block definition AND be displayed in place as well + return $node; + } + + // "block" tags that are not captured (see above) are only used for defining + // the content of the block. In such a case, nesting it does not work as + // expected as the definition is not part of the default template code flow. + if ($nested && $node instanceof BlockReferenceNode) { + throw new SyntaxError('A block definition cannot be nested under non-capturing nodes.', $node->getTemplateLine(), $this->stream->getSourceContext()); + } + + if ($node instanceof NodeOutputInterface) { + return null; + } + + // here, $nested means "being at the root level of a child template" + // we need to discard the wrapping "Node" for the "body" node + $nested = $nested || Node::class !== \get_class($node); + foreach ($node as $k => $n) { + if (null !== $n && null === $this->filterBodyNodes($n, $nested)) { + $node->removeNode($k); + } + } + + return $node; + } +} diff --git a/data/vendor/twig/twig/src/Profiler/Dumper/BaseDumper.php b/data/vendor/twig/twig/src/Profiler/Dumper/BaseDumper.php new file mode 100644 index 0000000..4da43e4 --- /dev/null +++ b/data/vendor/twig/twig/src/Profiler/Dumper/BaseDumper.php @@ -0,0 +1,63 @@ + + */ +abstract class BaseDumper +{ + private $root; + + public function dump(Profile $profile): string + { + return $this->dumpProfile($profile); + } + + abstract protected function formatTemplate(Profile $profile, $prefix): string; + + abstract protected function formatNonTemplate(Profile $profile, $prefix): string; + + abstract protected function formatTime(Profile $profile, $percent): string; + + private function dumpProfile(Profile $profile, $prefix = '', $sibling = false): string + { + 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/data/vendor/twig/twig/src/Profiler/Dumper/BlackfireDumper.php b/data/vendor/twig/twig/src/Profiler/Dumper/BlackfireDumper.php new file mode 100644 index 0000000..03abe0f --- /dev/null +++ b/data/vendor/twig/twig/src/Profiler/Dumper/BlackfireDumper.php @@ -0,0 +1,72 @@ + + */ +final class BlackfireDumper +{ + public function dump(Profile $profile): string + { + $data = []; + $this->dumpProfile('main()', $profile, $data); + $this->dumpChildren('main()', $profile, $data); + + $start = sprintf('%f', microtime(true)); + $str = << $values) { + $str .= "$name//{$values['ct']} {$values['wt']} {$values['mu']} {$values['pmu']}\n"; + } + + return $str; + } + + private function dumpChildren(string $parent, 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(string $edge, Profile $profile, &$data) + { + if (isset($data[$edge])) { + ++$data[$edge]['ct']; + $data[$edge]['wt'] += floor($profile->getDuration() * 1000000); + $data[$edge]['mu'] += $profile->getMemoryUsage(); + $data[$edge]['pmu'] += $profile->getPeakMemoryUsage(); + } else { + $data[$edge] = [ + 'ct' => 1, + 'wt' => floor($profile->getDuration() * 1000000), + 'mu' => $profile->getMemoryUsage(), + 'pmu' => $profile->getPeakMemoryUsage(), + ]; + } + } +} diff --git a/data/vendor/twig/twig/src/Profiler/Dumper/HtmlDumper.php b/data/vendor/twig/twig/src/Profiler/Dumper/HtmlDumper.php new file mode 100644 index 0000000..1f2433b --- /dev/null +++ b/data/vendor/twig/twig/src/Profiler/Dumper/HtmlDumper.php @@ -0,0 +1,47 @@ + + */ +final class HtmlDumper extends BaseDumper +{ + private static $colors = [ + 'block' => '#dfd', + 'macro' => '#ddf', + 'template' => '#ffd', + 'big' => '#d44', + ]; + + public function dump(Profile $profile): string + { + return '
'.parent::dump($profile).'
'; + } + + protected function formatTemplate(Profile $profile, $prefix): string + { + return sprintf('%s└ %s', $prefix, self::$colors['template'], $profile->getTemplate()); + } + + protected function formatNonTemplate(Profile $profile, $prefix): string + { + 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(Profile $profile, $percent): string + { + return sprintf('%.2fms/%.0f%%', $percent > 20 ? self::$colors['big'] : 'auto', $profile->getDuration() * 1000, $percent); + } +} diff --git a/data/vendor/twig/twig/src/Profiler/Dumper/TextDumper.php b/data/vendor/twig/twig/src/Profiler/Dumper/TextDumper.php new file mode 100644 index 0000000..31561c4 --- /dev/null +++ b/data/vendor/twig/twig/src/Profiler/Dumper/TextDumper.php @@ -0,0 +1,35 @@ + + */ +final class TextDumper extends BaseDumper +{ + protected function formatTemplate(Profile $profile, $prefix): string + { + return sprintf('%s└ %s', $prefix, $profile->getTemplate()); + } + + protected function formatNonTemplate(Profile $profile, $prefix): string + { + return sprintf('%s└ %s::%s(%s)', $prefix, $profile->getTemplate(), $profile->getType(), $profile->getName()); + } + + protected function formatTime(Profile $profile, $percent): string + { + return sprintf('%.2fms/%.0f%%', $profile->getDuration() * 1000, $percent); + } +} diff --git a/data/vendor/twig/twig/src/Profiler/Node/EnterProfileNode.php b/data/vendor/twig/twig/src/Profiler/Node/EnterProfileNode.php new file mode 100644 index 0000000..1494baf --- /dev/null +++ b/data/vendor/twig/twig/src/Profiler/Node/EnterProfileNode.php @@ -0,0 +1,42 @@ + + */ +class EnterProfileNode extends Node +{ + public function __construct(string $extensionName, string $type, string $name, string $varName) + { + parent::__construct([], ['extension_name' => $extensionName, 'name' => $name, 'type' => $type, 'var_name' => $varName]); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->write(sprintf('$%s = $this->extensions[', $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/data/vendor/twig/twig/src/Profiler/Node/LeaveProfileNode.php b/data/vendor/twig/twig/src/Profiler/Node/LeaveProfileNode.php new file mode 100644 index 0000000..94cebba --- /dev/null +++ b/data/vendor/twig/twig/src/Profiler/Node/LeaveProfileNode.php @@ -0,0 +1,36 @@ + + */ +class LeaveProfileNode extends Node +{ + public function __construct(string $varName) + { + parent::__construct([], ['var_name' => $varName]); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->write("\n") + ->write(sprintf("\$%s->leave(\$%s);\n\n", $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof')) + ; + } +} diff --git a/data/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php b/data/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php new file mode 100644 index 0000000..91abee8 --- /dev/null +++ b/data/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php @@ -0,0 +1,70 @@ + + */ +final class ProfilerNodeVisitor implements NodeVisitorInterface +{ + private $extensionName; + private $varName; + + public function __construct(string $extensionName) + { + $this->extensionName = $extensionName; + $this->varName = sprintf('__internal_%s', hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $extensionName)); + } + + public function enterNode(Node $node, Environment $env): Node + { + return $node; + } + + public function leaveNode(Node $node, Environment $env): ?Node + { + if ($node instanceof ModuleNode) { + $node->setNode('display_start', new Node([new EnterProfileNode($this->extensionName, Profile::TEMPLATE, $node->getTemplateName(), $this->varName), $node->getNode('display_start')])); + $node->setNode('display_end', new Node([new LeaveProfileNode($this->varName), $node->getNode('display_end')])); + } elseif ($node instanceof BlockNode) { + $node->setNode('body', new BodyNode([ + new EnterProfileNode($this->extensionName, Profile::BLOCK, $node->getAttribute('name'), $this->varName), + $node->getNode('body'), + new LeaveProfileNode($this->varName), + ])); + } elseif ($node instanceof MacroNode) { + $node->setNode('body', new BodyNode([ + new EnterProfileNode($this->extensionName, Profile::MACRO, $node->getAttribute('name'), $this->varName), + $node->getNode('body'), + new LeaveProfileNode($this->varName), + ])); + } + + return $node; + } + + public function getPriority(): int + { + return 0; + } +} diff --git a/data/vendor/twig/twig/src/Profiler/Profile.php b/data/vendor/twig/twig/src/Profiler/Profile.php new file mode 100644 index 0000000..252ca9b --- /dev/null +++ b/data/vendor/twig/twig/src/Profiler/Profile.php @@ -0,0 +1,181 @@ + + */ +final class Profile implements \IteratorAggregate, \Serializable +{ + public const ROOT = 'ROOT'; + public const BLOCK = 'block'; + public const TEMPLATE = 'template'; + public const MACRO = 'macro'; + + private $template; + private $name; + private $type; + private $starts = []; + private $ends = []; + private $profiles = []; + + public function __construct(string $template = 'main', string $type = self::ROOT, string $name = 'main') + { + $this->template = $template; + $this->type = $type; + $this->name = 0 === strpos($name, '__internal_') ? 'INTERNAL' : $name; + $this->enter(); + } + + public function getTemplate(): string + { + return $this->template; + } + + public function getType(): string + { + return $this->type; + } + + public function getName(): string + { + return $this->name; + } + + public function isRoot(): bool + { + return self::ROOT === $this->type; + } + + public function isTemplate(): bool + { + return self::TEMPLATE === $this->type; + } + + public function isBlock(): bool + { + return self::BLOCK === $this->type; + } + + public function isMacro(): bool + { + return self::MACRO === $this->type; + } + + /** + * @return Profile[] + */ + public function getProfiles(): array + { + return $this->profiles; + } + + public function addProfile(self $profile): void + { + $this->profiles[] = $profile; + } + + /** + * Returns the duration in microseconds. + */ + public function getDuration(): float + { + 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. + */ + public function getMemoryUsage(): int + { + return isset($this->ends['mu']) && isset($this->starts['mu']) ? $this->ends['mu'] - $this->starts['mu'] : 0; + } + + /** + * Returns the peak memory usage in bytes. + */ + public function getPeakMemoryUsage(): int + { + return isset($this->ends['pmu']) && isset($this->starts['pmu']) ? $this->ends['pmu'] - $this->starts['pmu'] : 0; + } + + /** + * Starts the profiling. + */ + public function enter(): void + { + $this->starts = [ + 'wt' => microtime(true), + 'mu' => memory_get_usage(), + 'pmu' => memory_get_peak_usage(), + ]; + } + + /** + * Stops the profiling. + */ + public function leave(): void + { + $this->ends = [ + 'wt' => microtime(true), + 'mu' => memory_get_usage(), + 'pmu' => memory_get_peak_usage(), + ]; + } + + public function reset(): void + { + $this->starts = $this->ends = $this->profiles = []; + $this->enter(); + } + + public function getIterator(): \Traversable + { + return new \ArrayIterator($this->profiles); + } + + public function serialize(): string + { + return serialize($this->__serialize()); + } + + public function unserialize($data): void + { + $this->__unserialize(unserialize($data)); + } + + /** + * @internal + */ + public function __serialize(): array + { + return [$this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles]; + } + + /** + * @internal + */ + public function __unserialize(array $data): void + { + list($this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles) = $data; + } +} diff --git a/data/vendor/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php b/data/vendor/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php new file mode 100644 index 0000000..b360d7b --- /dev/null +++ b/data/vendor/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php @@ -0,0 +1,37 @@ + + * @author Robin Chalas + */ +class ContainerRuntimeLoader implements RuntimeLoaderInterface +{ + private $container; + + public function __construct(ContainerInterface $container) + { + $this->container = $container; + } + + public function load(string $class) + { + return $this->container->has($class) ? $this->container->get($class) : null; + } +} diff --git a/data/vendor/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php b/data/vendor/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php new file mode 100644 index 0000000..1306483 --- /dev/null +++ b/data/vendor/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php @@ -0,0 +1,41 @@ + + */ +class FactoryRuntimeLoader implements RuntimeLoaderInterface +{ + private $map; + + /** + * @param array $map An array where keys are class names and values factory callables + */ + public function __construct(array $map = []) + { + $this->map = $map; + } + + public function load(string $class) + { + if (!isset($this->map[$class])) { + return null; + } + + $runtimeFactory = $this->map[$class]; + + return $runtimeFactory(); + } +} diff --git a/data/vendor/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php b/data/vendor/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php new file mode 100644 index 0000000..9e5b204 --- /dev/null +++ b/data/vendor/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php @@ -0,0 +1,27 @@ + + */ +interface RuntimeLoaderInterface +{ + /** + * Creates the runtime implementation of a Twig element (filter/function/test). + * + * @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(string $class); +} diff --git a/data/vendor/twig/twig/src/Sandbox/SecurityError.php b/data/vendor/twig/twig/src/Sandbox/SecurityError.php new file mode 100644 index 0000000..30a404f --- /dev/null +++ b/data/vendor/twig/twig/src/Sandbox/SecurityError.php @@ -0,0 +1,23 @@ + + */ +class SecurityError extends Error +{ +} diff --git a/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php b/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php new file mode 100644 index 0000000..02d3063 --- /dev/null +++ b/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php @@ -0,0 +1,33 @@ + + */ +final class SecurityNotAllowedFilterError extends SecurityError +{ + private $filterName; + + public function __construct(string $message, string $functionName) + { + parent::__construct($message); + $this->filterName = $functionName; + } + + public function getFilterName(): string + { + return $this->filterName; + } +} diff --git a/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php b/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php new file mode 100644 index 0000000..4f76dc6 --- /dev/null +++ b/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php @@ -0,0 +1,33 @@ + + */ +final class SecurityNotAllowedFunctionError extends SecurityError +{ + private $functionName; + + public function __construct(string $message, string $functionName) + { + parent::__construct($message); + $this->functionName = $functionName; + } + + public function getFunctionName(): string + { + return $this->functionName; + } +} diff --git a/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php b/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php new file mode 100644 index 0000000..8df9d0b --- /dev/null +++ b/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php @@ -0,0 +1,40 @@ + + */ +final class SecurityNotAllowedMethodError extends SecurityError +{ + private $className; + private $methodName; + + public function __construct(string $message, string $className, string $methodName) + { + parent::__construct($message); + $this->className = $className; + $this->methodName = $methodName; + } + + public function getClassName(): string + { + return $this->className; + } + + public function getMethodName() + { + return $this->methodName; + } +} diff --git a/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php b/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php new file mode 100644 index 0000000..42ec4f3 --- /dev/null +++ b/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php @@ -0,0 +1,40 @@ + + */ +final class SecurityNotAllowedPropertyError extends SecurityError +{ + private $className; + private $propertyName; + + public function __construct(string $message, string $className, string $propertyName) + { + parent::__construct($message); + $this->className = $className; + $this->propertyName = $propertyName; + } + + public function getClassName(): string + { + return $this->className; + } + + public function getPropertyName() + { + return $this->propertyName; + } +} diff --git a/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php b/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php new file mode 100644 index 0000000..4522150 --- /dev/null +++ b/data/vendor/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php @@ -0,0 +1,33 @@ + + */ +final class SecurityNotAllowedTagError extends SecurityError +{ + private $tagName; + + public function __construct(string $message, string $tagName) + { + parent::__construct($message); + $this->tagName = $tagName; + } + + public function getTagName(): string + { + return $this->tagName; + } +} diff --git a/data/vendor/twig/twig/src/Sandbox/SecurityPolicy.php b/data/vendor/twig/twig/src/Sandbox/SecurityPolicy.php new file mode 100644 index 0000000..2fc0d01 --- /dev/null +++ b/data/vendor/twig/twig/src/Sandbox/SecurityPolicy.php @@ -0,0 +1,126 @@ + + */ +final class SecurityPolicy implements SecurityPolicyInterface +{ + private $allowedTags; + private $allowedFilters; + private $allowedMethods; + private $allowedProperties; + private $allowedFunctions; + + public function __construct(array $allowedTags = [], array $allowedFilters = [], array $allowedMethods = [], array $allowedProperties = [], array $allowedFunctions = []) + { + $this->allowedTags = $allowedTags; + $this->allowedFilters = $allowedFilters; + $this->setAllowedMethods($allowedMethods); + $this->allowedProperties = $allowedProperties; + $this->allowedFunctions = $allowedFunctions; + } + + public function setAllowedTags(array $tags): void + { + $this->allowedTags = $tags; + } + + public function setAllowedFilters(array $filters): void + { + $this->allowedFilters = $filters; + } + + public function setAllowedMethods(array $methods): void + { + $this->allowedMethods = []; + foreach ($methods as $class => $m) { + $this->allowedMethods[$class] = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, \is_array($m) ? $m : [$m]); + } + } + + public function setAllowedProperties(array $properties): void + { + $this->allowedProperties = $properties; + } + + public function setAllowedFunctions(array $functions): void + { + $this->allowedFunctions = $functions; + } + + public function checkSecurity($tags, $filters, $functions): void + { + foreach ($tags as $tag) { + if (!\in_array($tag, $this->allowedTags)) { + throw new SecurityNotAllowedTagError(sprintf('Tag "%s" is not allowed.', $tag), $tag); + } + } + + foreach ($filters as $filter) { + if (!\in_array($filter, $this->allowedFilters)) { + throw new SecurityNotAllowedFilterError(sprintf('Filter "%s" is not allowed.', $filter), $filter); + } + } + + foreach ($functions as $function) { + if (!\in_array($function, $this->allowedFunctions)) { + throw new SecurityNotAllowedFunctionError(sprintf('Function "%s" is not allowed.', $function), $function); + } + } + } + + public function checkMethodAllowed($obj, $method): void + { + if ($obj instanceof Template || $obj instanceof Markup) { + return; + } + + $allowed = false; + $method = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); + foreach ($this->allowedMethods as $class => $methods) { + if ($obj instanceof $class) { + $allowed = \in_array($method, $methods); + + break; + } + } + + if (!$allowed) { + $class = \get_class($obj); + throw new SecurityNotAllowedMethodError(sprintf('Calling "%s" method on a "%s" object is not allowed.', $method, $class), $class, $method); + } + } + + public function checkPropertyAllowed($obj, $property): void + { + $allowed = false; + foreach ($this->allowedProperties as $class => $properties) { + if ($obj instanceof $class) { + $allowed = \in_array($property, \is_array($properties) ? $properties : [$properties]); + + break; + } + } + + if (!$allowed) { + $class = \get_class($obj); + throw new SecurityNotAllowedPropertyError(sprintf('Calling "%s" property on a "%s" object is not allowed.', $property, $class), $class, $property); + } + } +} diff --git a/data/vendor/twig/twig/src/Sandbox/SecurityPolicyInterface.php b/data/vendor/twig/twig/src/Sandbox/SecurityPolicyInterface.php new file mode 100644 index 0000000..4cb479d --- /dev/null +++ b/data/vendor/twig/twig/src/Sandbox/SecurityPolicyInterface.php @@ -0,0 +1,35 @@ + + */ +interface SecurityPolicyInterface +{ + /** + * @throws SecurityError + */ + public function checkSecurity($tags, $filters, $functions): void; + + /** + * @throws SecurityNotAllowedMethodError + */ + public function checkMethodAllowed($obj, $method): void; + + /** + * @throws SecurityNotAllowedPropertyError + */ + public function checkPropertyAllowed($obj, $method): void; +} diff --git a/data/vendor/twig/twig/src/Source.php b/data/vendor/twig/twig/src/Source.php new file mode 100644 index 0000000..3cb0240 --- /dev/null +++ b/data/vendor/twig/twig/src/Source.php @@ -0,0 +1,51 @@ + + */ +final class 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(string $code, string $name, string $path = '') + { + $this->code = $code; + $this->name = $name; + $this->path = $path; + } + + public function getCode(): string + { + return $this->code; + } + + public function getName(): string + { + return $this->name; + } + + public function getPath(): string + { + return $this->path; + } +} diff --git a/data/vendor/twig/twig/src/Template.php b/data/vendor/twig/twig/src/Template.php new file mode 100644 index 0000000..e04bd04 --- /dev/null +++ b/data/vendor/twig/twig/src/Template.php @@ -0,0 +1,422 @@ +load() + * instead, which returns an instance of \Twig\TemplateWrapper. + * + * @author Fabien Potencier + * + * @internal + */ +abstract class Template +{ + public const ANY_CALL = 'any'; + public const ARRAY_CALL = 'array'; + public const METHOD_CALL = 'method'; + + protected $parent; + protected $parents = []; + protected $env; + protected $blocks = []; + protected $traits = []; + protected $extensions = []; + protected $sandbox; + + public function __construct(Environment $env) + { + $this->env = $env; + $this->extensions = $env->getExtensions(); + } + + /** + * Returns the template name. + * + * @return string The template name + */ + abstract public function getTemplateName(); + + /** + * Returns debug information about the template. + * + * @return array Debug information + */ + abstract public function getDebugInfo(); + + /** + * Returns information about the original template source code. + * + * @return Source + */ + abstract public function getSourceContext(); + + /** + * Returns the parent template. + * + * This method is for internal use only and should never be called + * directly. + * + * @return Template|TemplateWrapper|false The parent template or false if there is no parent + */ + 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 || $parent instanceof TemplateWrapper) { + return $this->parents[$parent->getSourceContext()->getName()] = $parent; + } + + if (!isset($this->parents[$parent])) { + $this->parents[$parent] = $this->loadTemplate($parent); + } + } catch (LoaderError $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 + */ + public function displayParentBlock($name, array $context, array $blocks = []) + { + 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 RuntimeError(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 + */ + public function displayBlock($name, array $context, array $blocks = [], $useBlocks = true, self $templateContext = null) + { + 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 (Error $e) { + if (!$e->getSourceContext()) { + $e->setSourceContext($template->getSourceContext()); + } + + // this is mostly useful for \Twig\Error\LoaderError exceptions + // see \Twig\Error\LoaderError + if (-1 === $e->getTemplateLine()) { + $e->guess(); + } + + throw $e; + } catch (\Exception $e) { + $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e); + $e->guess(); + + throw $e; + } + } elseif (false !== $parent = $this->getParent($context)) { + $parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false, $templateContext ?? $this); + } elseif (isset($blocks[$name])) { + throw new RuntimeError(sprintf('Block "%s" should not call parent() in "%s" as the block does not exist in the parent template "%s".', $name, $blocks[$name][0]->getTemplateName(), $this->getTemplateName()), -1, $blocks[$name][0]->getSourceContext()); + } else { + throw new RuntimeError(sprintf('Block "%s" on template "%s" does not exist.', $name, $this->getTemplateName()), -1, ($templateContext ?? $this)->getSourceContext()); + } + } + + /** + * 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 + */ + public function renderParentBlock($name, array $context, array $blocks = []) + { + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + $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 + */ + public function renderBlock($name, array $context, array $blocks = [], $useBlocks = true) + { + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + $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 + */ + public function hasBlock($name, array $context, array $blocks = []) + { + 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 + */ + public function getBlockNames(array $context, array $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); + } + + /** + * @return Template|TemplateWrapper + */ + protected function loadTemplate($template, $templateName = null, $line = null, $index = null) + { + try { + if (\is_array($template)) { + return $this->env->resolveTemplate($template); + } + + if ($template instanceof self || $template instanceof TemplateWrapper) { + return $template; + } + + if ($template === $this->getTemplateName()) { + $class = static::class; + if (false !== $pos = strrpos($class, '___', -1)) { + $class = substr($class, 0, $pos); + } + } else { + $class = $this->env->getTemplateClass($template); + } + + return $this->env->loadTemplate($class, $template, $index); + } catch (Error $e) { + if (!$e->getSourceContext()) { + $e->setSourceContext($templateName ? new Source('', $templateName) : $this->getSourceContext()); + } + + if ($e->getTemplateLine() > 0) { + throw $e; + } + + if (!$line) { + $e->guess(); + } else { + $e->setTemplateLine($line); + } + + throw $e; + } + } + + /** + * @internal + * + * @return Template + */ + public function unwrap() + { + return $this; + } + + /** + * Returns all blocks. + * + * This method is for internal use only and should never be called + * directly. + * + * @return array An array of blocks + */ + public function getBlocks() + { + return $this->blocks; + } + + public function display(array $context, array $blocks = []) + { + $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks)); + } + + public function render(array $context) + { + $level = ob_get_level(); + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + try { + $this->display($context); + } catch (\Throwable $e) { + while (ob_get_level() > $level) { + ob_end_clean(); + } + + throw $e; + } + + return ob_get_clean(); + } + + protected function displayWithErrorHandling(array $context, array $blocks = []) + { + try { + $this->doDisplay($context, $blocks); + } catch (Error $e) { + if (!$e->getSourceContext()) { + $e->setSourceContext($this->getSourceContext()); + } + + // this is mostly useful for \Twig\Error\LoaderError exceptions + // see \Twig\Error\LoaderError + if (-1 === $e->getTemplateLine()) { + $e->guess(); + } + + throw $e; + } catch (\Exception $e) { + $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e); + $e->guess(); + + throw $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 = []); +} diff --git a/data/vendor/twig/twig/src/TemplateWrapper.php b/data/vendor/twig/twig/src/TemplateWrapper.php new file mode 100644 index 0000000..c9c6b07 --- /dev/null +++ b/data/vendor/twig/twig/src/TemplateWrapper.php @@ -0,0 +1,109 @@ + + */ +final class 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(Environment $env, Template $template) + { + $this->env = $env; + $this->template = $template; + } + + public function render(array $context = []): string + { + // using func_get_args() allows to not expose the blocks argument + // as it should only be used by internal code + return $this->template->render($context, \func_get_args()[1] ?? []); + } + + public function display(array $context = []) + { + // using func_get_args() allows to not expose the blocks argument + // as it should only be used by internal code + $this->template->display($context, \func_get_args()[1] ?? []); + } + + public function hasBlock(string $name, array $context = []): bool + { + return $this->template->hasBlock($name, $context); + } + + /** + * @return string[] An array of defined template block names + */ + public function getBlockNames(array $context = []): array + { + return $this->template->getBlockNames($context); + } + + public function renderBlock(string $name, array $context = []): string + { + $context = $this->env->mergeGlobals($context); + $level = ob_get_level(); + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + try { + $this->template->displayBlock($name, $context); + } catch (\Throwable $e) { + while (ob_get_level() > $level) { + ob_end_clean(); + } + + throw $e; + } + + return ob_get_clean(); + } + + public function displayBlock(string $name, array $context = []) + { + $this->template->displayBlock($name, $this->env->mergeGlobals($context)); + } + + public function getSourceContext(): Source + { + return $this->template->getSourceContext(); + } + + public function getTemplateName(): string + { + return $this->template->getTemplateName(); + } + + /** + * @internal + * + * @return Template + */ + public function unwrap() + { + return $this->template; + } +} diff --git a/data/vendor/twig/twig/src/Test/IntegrationTestCase.php b/data/vendor/twig/twig/src/Test/IntegrationTestCase.php new file mode 100644 index 0000000..307302b --- /dev/null +++ b/data/vendor/twig/twig/src/Test/IntegrationTestCase.php @@ -0,0 +1,265 @@ + + * @author Karma Dordrak + */ +abstract class IntegrationTestCase extends TestCase +{ + /** + * @return string + */ + abstract protected function getFixturesDir(); + + /** + * @return RuntimeLoaderInterface[] + */ + protected function getRuntimeLoaders() + { + return []; + } + + /** + * @return ExtensionInterface[] + */ + protected function getExtensions() + { + return []; + } + + /** + * @return TwigFilter[] + */ + protected function getTwigFilters() + { + return []; + } + + /** + * @return TwigFunction[] + */ + protected function getTwigFunctions() + { + return []; + } + + /** + * @return TwigTest[] + */ + protected function getTwigTests() + { + return []; + } + + /** + * @dataProvider getTests + */ + public function testIntegration($file, $message, $condition, $templates, $exception, $outputs, $deprecation = '') + { + $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs, $deprecation); + } + + /** + * @dataProvider getLegacyTests + * @group legacy + */ + public function testLegacyIntegration($file, $message, $condition, $templates, $exception, $outputs, $deprecation = '') + { + $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs, $deprecation); + } + + public function getTests($name, $legacyTests = false) + { + $fixturesDir = realpath($this->getFixturesDir()); + $tests = []; + + 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*(?:--DEPRECATION--\s*(.*?))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)\s*(?:--DATA--\s*(.*))?\s*--EXCEPTION--\s*(.*)/sx', $test, $match)) { + $message = $match[1]; + $condition = $match[2]; + $deprecation = $match[3]; + $templates = self::parseTemplates($match[4]); + $exception = $match[6]; + $outputs = [[null, $match[5], null, '']]; + } elseif (preg_match('/--TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*(?:--DEPRECATION--\s*(.*?))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)--DATA--.*?--EXPECT--.*/s', $test, $match)) { + $message = $match[1]; + $condition = $match[2]; + $deprecation = $match[3]; + $templates = self::parseTemplates($match[4]); + $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[] = [str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs, $deprecation]; + } + + if ($legacyTests && empty($tests)) { + // add a dummy test to avoid a PHPUnit message + return [['not', '-', '', [], '', []]]; + } + + return $tests; + } + + public function getLegacyTests() + { + return $this->getTests('testLegacyIntegration', true); + } + + protected function doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs, $deprecation = '') + { + if (!$outputs) { + $this->markTestSkipped('no tests to run'); + } + + if ($condition) { + eval('$ret = '.$condition.';'); + if (!$ret) { + $this->markTestSkipped($condition); + } + } + + $loader = new ArrayLoader($templates); + + foreach ($outputs as $i => $match) { + $config = array_merge([ + 'cache' => false, + 'strict_variables' => true, + ], $match[2] ? eval($match[2].';') : []); + $twig = new Environment($loader, $config); + $twig->addGlobal('global', 'global'); + foreach ($this->getRuntimeLoaders() as $runtimeLoader) { + $twig->addRuntimeLoader($runtimeLoader); + } + + 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 + $p = new \ReflectionProperty($twig, 'templateClassPrefix'); + $p->setAccessible(true); + $p->setValue($twig, '__TwigTemplate_'.hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', uniqid(mt_rand(), true), false).'_'); + + $deprecations = []; + try { + $prevHandler = set_error_handler(function ($type, $msg, $file, $line, $context = []) use (&$deprecations, &$prevHandler) { + if (\E_USER_DEPRECATED === $type) { + $deprecations[] = $msg; + + return true; + } + + return $prevHandler ? $prevHandler($type, $msg, $file, $line, $context) : false; + }); + + $template = $twig->load('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, 'Exception message must end with a dot or a question mark.'); + + return; + } + + throw new Error(sprintf('%s: %s', \get_class($e), $e->getMessage()), -1, null, $e); + } finally { + restore_error_handler(); + } + + $this->assertSame($deprecation, implode("\n", $deprecations)); + + 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 Error(sprintf('%s: %s', \get_class($e), $e->getMessage()), -1, null, $e); + + $output = trim(sprintf('%s: %s', \get_class($e), $e->getMessage())); + } + + if (false !== $exception) { + list($class) = explode(':', $exception); + $constraintClass = class_exists('PHPUnit\Framework\Constraint\Exception') ? 'PHPUnit\Framework\Constraint\Exception' : 'PHPUnit_Framework_Constraint_Exception'; + $this->assertThat(null, new $constraintClass($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"; + echo $twig->compile($twig->parse($twig->tokenize($twig->getLoader()->getSourceContext($name)))); + } + } + $this->assertEquals($expected, $output, $message.' (in '.$file.')'); + } + } + + protected static function parseTemplates($test) + { + $templates = []; + preg_match_all('/--TEMPLATE(?:\((.*?)\))?--(.*?)(?=\-\-TEMPLATE|$)/s', $test, $matches, \PREG_SET_ORDER); + foreach ($matches as $match) { + $templates[($match[1] ?: 'index.twig')] = $match[2]; + } + + return $templates; + } +} diff --git a/data/vendor/twig/twig/src/Test/NodeTestCase.php b/data/vendor/twig/twig/src/Test/NodeTestCase.php new file mode 100644 index 0000000..3b8b2c8 --- /dev/null +++ b/data/vendor/twig/twig/src/Test/NodeTestCase.php @@ -0,0 +1,65 @@ +assertNodeCompilation($source, $node, $environment, $isPattern); + } + + public function assertNodeCompilation($source, Node $node, 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(Environment $environment = null) + { + return new Compiler(null === $environment ? $this->getEnvironment() : $environment); + } + + protected function getEnvironment() + { + return new Environment(new ArrayLoader([])); + } + + protected function getVariableGetter($name, $line = false) + { + $line = $line > 0 ? "// line $line\n" : ''; + + return sprintf('%s($context["%s"] ?? null)', $line, $name); + } + + protected function getAttributeGetter() + { + return 'twig_get_attribute($this->env, $this->source, '; + } +} diff --git a/data/vendor/twig/twig/src/Token.php b/data/vendor/twig/twig/src/Token.php new file mode 100644 index 0000000..53a6caf --- /dev/null +++ b/data/vendor/twig/twig/src/Token.php @@ -0,0 +1,178 @@ + + */ +final class Token +{ + private $value; + private $type; + private $lineno; + + public const EOF_TYPE = -1; + public const TEXT_TYPE = 0; + public const BLOCK_START_TYPE = 1; + public const VAR_START_TYPE = 2; + public const BLOCK_END_TYPE = 3; + public const VAR_END_TYPE = 4; + public const NAME_TYPE = 5; + public const NUMBER_TYPE = 6; + public const STRING_TYPE = 7; + public const OPERATOR_TYPE = 8; + public const PUNCTUATION_TYPE = 9; + public const INTERPOLATION_START_TYPE = 10; + public const INTERPOLATION_END_TYPE = 11; + public const ARROW_TYPE = 12; + + public function __construct(int $type, $value, int $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|string|int $type The type to test + * @param array|string|null $values The token value + */ + public function test($type, $values = null): bool + { + 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 + ); + } + + public function getLine(): int + { + return $this->lineno; + } + + public function getType(): int + { + return $this->type; + } + + public function getValue() + { + return $this->value; + } + + public static function typeToString(int $type, bool $short = false): string + { + 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; + case self::ARROW_TYPE: + $name = 'ARROW_TYPE'; + break; + default: + throw new \LogicException(sprintf('Token of type "%s" does not exist.', $type)); + } + + return $short ? $name : 'Twig\Token::'.$name; + } + + public static function typeToEnglish(int $type): string + { + 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'; + case self::ARROW_TYPE: + return 'arrow function'; + default: + throw new \LogicException(sprintf('Token of type "%s" does not exist.', $type)); + } + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/AbstractTokenParser.php b/data/vendor/twig/twig/src/TokenParser/AbstractTokenParser.php new file mode 100644 index 0000000..720ea67 --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/AbstractTokenParser.php @@ -0,0 +1,32 @@ + + */ +abstract class AbstractTokenParser implements TokenParserInterface +{ + /** + * @var Parser + */ + protected $parser; + + public function setParser(Parser $parser): void + { + $this->parser = $parser; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php b/data/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php new file mode 100644 index 0000000..4dbf304 --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php @@ -0,0 +1,60 @@ +getLine(); + $name = $this->parser->getVarName(); + + $ref = new TempNameExpression($name, $lineno); + $ref->setAttribute('always_defined', true); + + $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag()); + + $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); + $body = $this->parser->subparse([$this, 'decideApplyEnd'], true); + $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); + + return new Node([ + new SetNode(true, $ref, $body, $lineno, $this->getTag()), + new PrintNode($filter, $lineno, $this->getTag()), + ]); + } + + public function decideApplyEnd(Token $token): bool + { + return $token->test('endapply'); + } + + public function getTag(): string + { + return 'apply'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/AutoEscapeTokenParser.php b/data/vendor/twig/twig/src/TokenParser/AutoEscapeTokenParser.php new file mode 100644 index 0000000..b674bea --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/AutoEscapeTokenParser.php @@ -0,0 +1,58 @@ +getLine(); + $stream = $this->parser->getStream(); + + if ($stream->test(/* Token::BLOCK_END_TYPE */ 3)) { + $value = 'html'; + } else { + $expr = $this->parser->getExpressionParser()->parseExpression(); + if (!$expr instanceof ConstantExpression) { + throw new SyntaxError('An escaping strategy must be a string or false.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + $value = $expr->getAttribute('value'); + } + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + return new AutoEscapeNode($value, $body, $lineno, $this->getTag()); + } + + public function decideBlockEnd(Token $token): bool + { + return $token->test('endautoescape'); + } + + public function getTag(): string + { + return 'autoescape'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/BlockTokenParser.php b/data/vendor/twig/twig/src/TokenParser/BlockTokenParser.php new file mode 100644 index 0000000..5878131 --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/BlockTokenParser.php @@ -0,0 +1,78 @@ + + * {% block title %}{% endblock %} - My Webpage + * {% endblock %} + * + * @internal + */ +final class BlockTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $lineno = $token->getLine(); + $stream = $this->parser->getStream(); + $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + if ($this->parser->hasBlock($name)) { + throw new SyntaxError(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 BlockNode($name, new Node([]), $lineno)); + $this->parser->pushLocalScope(); + $this->parser->pushBlockStack($name); + + if ($stream->nextIf(/* Token::BLOCK_END_TYPE */ 3)) { + $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); + if ($token = $stream->nextIf(/* Token::NAME_TYPE */ 5)) { + $value = $token->getValue(); + + if ($value != $name) { + throw new SyntaxError(sprintf('Expected endblock for block "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + } + } else { + $body = new Node([ + new PrintNode($this->parser->getExpressionParser()->parseExpression(), $lineno), + ]); + } + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + $block->setNode('body', $body); + $this->parser->popBlockStack(); + $this->parser->popLocalScope(); + + return new BlockReferenceNode($name, $lineno, $this->getTag()); + } + + public function decideBlockEnd(Token $token): bool + { + return $token->test('endblock'); + } + + public function getTag(): string + { + return 'block'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/DeprecatedTokenParser.php b/data/vendor/twig/twig/src/TokenParser/DeprecatedTokenParser.php new file mode 100644 index 0000000..31416c7 --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/DeprecatedTokenParser.php @@ -0,0 +1,43 @@ + + * + * @internal + */ +final class DeprecatedTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $expr = $this->parser->getExpressionParser()->parseExpression(); + + $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); + + return new DeprecatedNode($expr, $token->getLine(), $this->getTag()); + } + + public function getTag(): string + { + return 'deprecated'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/DoTokenParser.php b/data/vendor/twig/twig/src/TokenParser/DoTokenParser.php new file mode 100644 index 0000000..32c8f12 --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/DoTokenParser.php @@ -0,0 +1,38 @@ +parser->getExpressionParser()->parseExpression(); + + $this->parser->getStream()->expect(/* Token::BLOCK_END_TYPE */ 3); + + return new DoNode($expr, $token->getLine(), $this->getTag()); + } + + public function getTag(): string + { + return 'do'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/EmbedTokenParser.php b/data/vendor/twig/twig/src/TokenParser/EmbedTokenParser.php new file mode 100644 index 0000000..64b4f29 --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/EmbedTokenParser.php @@ -0,0 +1,73 @@ +parser->getStream(); + + $parent = $this->parser->getExpressionParser()->parseExpression(); + + list($variables, $only, $ignoreMissing) = $this->parseArguments(); + + $parentToken = $fakeParentToken = new Token(/* Token::STRING_TYPE */ 7, '__parent__', $token->getLine()); + if ($parent instanceof ConstantExpression) { + $parentToken = new Token(/* Token::STRING_TYPE */ 7, $parent->getAttribute('value'), $token->getLine()); + } elseif ($parent instanceof NameExpression) { + $parentToken = new Token(/* Token::NAME_TYPE */ 5, $parent->getAttribute('name'), $token->getLine()); + } + + // inject a fake parent to make the parent() function work + $stream->injectTokens([ + new Token(/* Token::BLOCK_START_TYPE */ 1, '', $token->getLine()), + new Token(/* Token::NAME_TYPE */ 5, 'extends', $token->getLine()), + $parentToken, + new Token(/* Token::BLOCK_END_TYPE */ 3, '', $token->getLine()), + ]); + + $module = $this->parser->parse($stream, [$this, 'decideBlockEnd'], true); + + // override the parent with the correct one + if ($fakeParentToken === $parentToken) { + $module->setNode('parent', $parent); + } + + $this->parser->embedTemplate($module); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + return new EmbedNode($module->getTemplateName(), $module->getAttribute('index'), $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); + } + + public function decideBlockEnd(Token $token): bool + { + return $token->test('endembed'); + } + + public function getTag(): string + { + return 'embed'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php b/data/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php new file mode 100644 index 0000000..0ca46dd --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php @@ -0,0 +1,52 @@ +parser->getStream(); + + if ($this->parser->peekBlockStack()) { + throw new SyntaxError('Cannot use "extend" in a block.', $token->getLine(), $stream->getSourceContext()); + } elseif (!$this->parser->isMainScope()) { + throw new SyntaxError('Cannot use "extend" in a macro.', $token->getLine(), $stream->getSourceContext()); + } + + if (null !== $this->parser->getParent()) { + throw new SyntaxError('Multiple extends tags are forbidden.', $token->getLine(), $stream->getSourceContext()); + } + $this->parser->setParent($this->parser->getExpressionParser()->parseExpression()); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + return new Node(); + } + + public function getTag(): string + { + return 'extends'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/FlushTokenParser.php b/data/vendor/twig/twig/src/TokenParser/FlushTokenParser.php new file mode 100644 index 0000000..02c74aa --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/FlushTokenParser.php @@ -0,0 +1,38 @@ +parser->getStream()->expect(/* Token::BLOCK_END_TYPE */ 3); + + return new FlushNode($token->getLine(), $this->getTag()); + } + + public function getTag(): string + { + return 'flush'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/ForTokenParser.php b/data/vendor/twig/twig/src/TokenParser/ForTokenParser.php new file mode 100644 index 0000000..bac8ba2 --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/ForTokenParser.php @@ -0,0 +1,78 @@ + + * {% for user in users %} + *
  • {{ user.username|e }}
  • + * {% endfor %} + * + * + * @internal + */ +final class ForTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $lineno = $token->getLine(); + $stream = $this->parser->getStream(); + $targets = $this->parser->getExpressionParser()->parseAssignmentExpression(); + $stream->expect(/* Token::OPERATOR_TYPE */ 8, 'in'); + $seq = $this->parser->getExpressionParser()->parseExpression(); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $body = $this->parser->subparse([$this, 'decideForFork']); + if ('else' == $stream->next()->getValue()) { + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $else = $this->parser->subparse([$this, 'decideForEnd'], true); + } else { + $else = null; + } + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + if (\count($targets) > 1) { + $keyTarget = $targets->getNode(0); + $keyTarget = new AssignNameExpression($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine()); + $valueTarget = $targets->getNode(1); + } else { + $keyTarget = new AssignNameExpression('_key', $lineno); + $valueTarget = $targets->getNode(0); + } + $valueTarget = new AssignNameExpression($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine()); + + return new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, $lineno, $this->getTag()); + } + + public function decideForFork(Token $token): bool + { + return $token->test(['else', 'endfor']); + } + + public function decideForEnd(Token $token): bool + { + return $token->test('endfor'); + } + + public function getTag(): string + { + return 'for'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/FromTokenParser.php b/data/vendor/twig/twig/src/TokenParser/FromTokenParser.php new file mode 100644 index 0000000..35098c2 --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/FromTokenParser.php @@ -0,0 +1,66 @@ +parser->getExpressionParser()->parseExpression(); + $stream = $this->parser->getStream(); + $stream->expect(/* Token::NAME_TYPE */ 5, 'import'); + + $targets = []; + do { + $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + + $alias = $name; + if ($stream->nextIf('as')) { + $alias = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + } + + $targets[$name] = $alias; + + if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + break; + } + } while (true); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + $var = new AssignNameExpression($this->parser->getVarName(), $token->getLine()); + $node = new ImportNode($macro, $var, $token->getLine(), $this->getTag(), $this->parser->isMainScope()); + + foreach ($targets as $name => $alias) { + $this->parser->addImportedSymbol('function', $alias, 'macro_'.$name, $var); + } + + return $node; + } + + public function getTag(): string + { + return 'from'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/IfTokenParser.php b/data/vendor/twig/twig/src/TokenParser/IfTokenParser.php new file mode 100644 index 0000000..c0fe6df --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/IfTokenParser.php @@ -0,0 +1,89 @@ + + * {% for user in users %} + *
  • {{ user.username|e }}
  • + * {% endfor %} + * + * {% endif %} + * + * @internal + */ +final class IfTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $lineno = $token->getLine(); + $expr = $this->parser->getExpressionParser()->parseExpression(); + $stream = $this->parser->getStream(); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $body = $this->parser->subparse([$this, 'decideIfFork']); + $tests = [$expr, $body]; + $else = null; + + $end = false; + while (!$end) { + switch ($stream->next()->getValue()) { + case 'else': + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $else = $this->parser->subparse([$this, 'decideIfEnd']); + break; + + case 'elseif': + $expr = $this->parser->getExpressionParser()->parseExpression(); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $body = $this->parser->subparse([$this, 'decideIfFork']); + $tests[] = $expr; + $tests[] = $body; + break; + + case 'endif': + $end = true; + break; + + default: + throw new SyntaxError(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(/* Token::BLOCK_END_TYPE */ 3); + + return new IfNode(new Node($tests), $else, $lineno, $this->getTag()); + } + + public function decideIfFork(Token $token): bool + { + return $token->test(['elseif', 'else', 'endif']); + } + + public function decideIfEnd(Token $token): bool + { + return $token->test(['endif']); + } + + public function getTag(): string + { + return 'if'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/ImportTokenParser.php b/data/vendor/twig/twig/src/TokenParser/ImportTokenParser.php new file mode 100644 index 0000000..44cb4da --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/ImportTokenParser.php @@ -0,0 +1,44 @@ +parser->getExpressionParser()->parseExpression(); + $this->parser->getStream()->expect(/* Token::NAME_TYPE */ 5, 'as'); + $var = new AssignNameExpression($this->parser->getStream()->expect(/* Token::NAME_TYPE */ 5)->getValue(), $token->getLine()); + $this->parser->getStream()->expect(/* Token::BLOCK_END_TYPE */ 3); + + $this->parser->addImportedSymbol('template', $var->getAttribute('name')); + + return new ImportNode($macro, $var, $token->getLine(), $this->getTag(), $this->parser->isMainScope()); + } + + public function getTag(): string + { + return 'import'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/IncludeTokenParser.php b/data/vendor/twig/twig/src/TokenParser/IncludeTokenParser.php new file mode 100644 index 0000000..28beb8a --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/IncludeTokenParser.php @@ -0,0 +1,69 @@ +parser->getExpressionParser()->parseExpression(); + + list($variables, $only, $ignoreMissing) = $this->parseArguments(); + + return new IncludeNode($expr, $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); + } + + protected function parseArguments() + { + $stream = $this->parser->getStream(); + + $ignoreMissing = false; + if ($stream->nextIf(/* Token::NAME_TYPE */ 5, 'ignore')) { + $stream->expect(/* Token::NAME_TYPE */ 5, 'missing'); + + $ignoreMissing = true; + } + + $variables = null; + if ($stream->nextIf(/* Token::NAME_TYPE */ 5, 'with')) { + $variables = $this->parser->getExpressionParser()->parseExpression(); + } + + $only = false; + if ($stream->nextIf(/* Token::NAME_TYPE */ 5, 'only')) { + $only = true; + } + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + return [$variables, $only, $ignoreMissing]; + } + + public function getTag(): string + { + return 'include'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/MacroTokenParser.php b/data/vendor/twig/twig/src/TokenParser/MacroTokenParser.php new file mode 100644 index 0000000..f584927 --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/MacroTokenParser.php @@ -0,0 +1,66 @@ + + * {% endmacro %} + * + * @internal + */ +final class MacroTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $lineno = $token->getLine(); + $stream = $this->parser->getStream(); + $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + + $arguments = $this->parser->getExpressionParser()->parseArguments(true, true); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $this->parser->pushLocalScope(); + $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); + if ($token = $stream->nextIf(/* Token::NAME_TYPE */ 5)) { + $value = $token->getValue(); + + if ($value != $name) { + throw new SyntaxError(sprintf('Expected endmacro for macro "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + } + $this->parser->popLocalScope(); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + $this->parser->setMacro($name, new MacroNode($name, new BodyNode([$body]), $arguments, $lineno, $this->getTag())); + + return new Node(); + } + + public function decideBlockEnd(Token $token): bool + { + return $token->test('endmacro'); + } + + public function getTag(): string + { + return 'macro'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php b/data/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php new file mode 100644 index 0000000..c919556 --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php @@ -0,0 +1,66 @@ +parser->getStream(); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + // in a sandbox tag, only include tags are allowed + if (!$body instanceof IncludeNode) { + foreach ($body as $node) { + if ($node instanceof TextNode && ctype_space($node->getAttribute('data'))) { + continue; + } + + if (!$node instanceof IncludeNode) { + throw new SyntaxError('Only "include" tags are allowed within a "sandbox" section.', $node->getTemplateLine(), $stream->getSourceContext()); + } + } + } + + return new SandboxNode($body, $token->getLine(), $this->getTag()); + } + + public function decideBlockEnd(Token $token): bool + { + return $token->test('endsandbox'); + } + + public function getTag(): string + { + return 'sandbox'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/SetTokenParser.php b/data/vendor/twig/twig/src/TokenParser/SetTokenParser.php new file mode 100644 index 0000000..2fbdfe0 --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/SetTokenParser.php @@ -0,0 +1,73 @@ +getLine(); + $stream = $this->parser->getStream(); + $names = $this->parser->getExpressionParser()->parseAssignmentExpression(); + + $capture = false; + if ($stream->nextIf(/* Token::OPERATOR_TYPE */ 8, '=')) { + $values = $this->parser->getExpressionParser()->parseMultitargetExpression(); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + if (\count($names) !== \count($values)) { + throw new SyntaxError('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 SyntaxError('When using set with a block, you cannot have a multi-target.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + $values = $this->parser->subparse([$this, 'decideBlockEnd'], true); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + } + + return new SetNode($capture, $names, $values, $lineno, $this->getTag()); + } + + public function decideBlockEnd(Token $token): bool + { + return $token->test('endset'); + } + + public function getTag(): string + { + return 'set'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/TokenParserInterface.php b/data/vendor/twig/twig/src/TokenParser/TokenParserInterface.php new file mode 100644 index 0000000..bb8db3e --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/TokenParserInterface.php @@ -0,0 +1,46 @@ + + */ +interface TokenParserInterface +{ + /** + * Sets the parser associated with this token parser. + */ + public function setParser(Parser $parser): void; + + /** + * Parses a token and returns a node. + * + * @return Node + * + * @throws SyntaxError + */ + public function parse(Token $token); + + /** + * Gets the tag name associated with this token parser. + * + * @return string + */ + public function getTag(); +} diff --git a/data/vendor/twig/twig/src/TokenParser/UseTokenParser.php b/data/vendor/twig/twig/src/TokenParser/UseTokenParser.php new file mode 100644 index 0000000..d0a2de4 --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/UseTokenParser.php @@ -0,0 +1,73 @@ +parser->getExpressionParser()->parseExpression(); + $stream = $this->parser->getStream(); + + if (!$template instanceof ConstantExpression) { + throw new SyntaxError('The template references in a "use" statement must be a string.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + + $targets = []; + if ($stream->nextIf('with')) { + do { + $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + + $alias = $name; + if ($stream->nextIf('as')) { + $alias = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + } + + $targets[$name] = new ConstantExpression($alias, -1); + + if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + break; + } + } while (true); + } + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + $this->parser->addTrait(new Node(['template' => $template, 'targets' => new Node($targets)])); + + return new Node(); + } + + public function getTag(): string + { + return 'use'; + } +} diff --git a/data/vendor/twig/twig/src/TokenParser/WithTokenParser.php b/data/vendor/twig/twig/src/TokenParser/WithTokenParser.php new file mode 100644 index 0000000..7d8cbe2 --- /dev/null +++ b/data/vendor/twig/twig/src/TokenParser/WithTokenParser.php @@ -0,0 +1,56 @@ + + * + * @internal + */ +final class WithTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $stream = $this->parser->getStream(); + + $variables = null; + $only = false; + if (!$stream->test(/* Token::BLOCK_END_TYPE */ 3)) { + $variables = $this->parser->getExpressionParser()->parseExpression(); + $only = (bool) $stream->nextIf(/* Token::NAME_TYPE */ 5, 'only'); + } + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + $body = $this->parser->subparse([$this, 'decideWithEnd'], true); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + return new WithNode($body, $variables, $only, $token->getLine(), $this->getTag()); + } + + public function decideWithEnd(Token $token): bool + { + return $token->test('endwith'); + } + + public function getTag(): string + { + return 'with'; + } +} diff --git a/data/vendor/twig/twig/src/TokenStream.php b/data/vendor/twig/twig/src/TokenStream.php new file mode 100644 index 0000000..1eac11a --- /dev/null +++ b/data/vendor/twig/twig/src/TokenStream.php @@ -0,0 +1,132 @@ + + */ +final class TokenStream +{ + private $tokens; + private $current = 0; + private $source; + + public function __construct(array $tokens, Source $source = null) + { + $this->tokens = $tokens; + $this->source = $source ?: new Source('', ''); + } + + 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. + */ + public function next(): Token + { + if (!isset($this->tokens[++$this->current])) { + throw new SyntaxError('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 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. + */ + public function expect($type, $value = null, string $message = null): Token + { + $token = $this->tokens[$this->current]; + if (!$token->test($type, $value)) { + $line = $token->getLine(); + throw new SyntaxError(sprintf('%sUnexpected token "%s"%s ("%s" expected%s).', + $message ? $message.'. ' : '', + Token::typeToEnglish($token->getType()), + $token->getValue() ? sprintf(' of value "%s"', $token->getValue()) : '', + Token::typeToEnglish($type), $value ? sprintf(' with value "%s"', $value) : ''), + $line, + $this->source + ); + } + $this->next(); + + return $token; + } + + /** + * Looks at the next token. + */ + public function look(int $number = 1): Token + { + if (!isset($this->tokens[$this->current + $number])) { + throw new SyntaxError('Unexpected end of template.', $this->tokens[$this->current + $number - 1]->getLine(), $this->source); + } + + return $this->tokens[$this->current + $number]; + } + + /** + * Tests the current token. + */ + public function test($primary, $secondary = null): bool + { + return $this->tokens[$this->current]->test($primary, $secondary); + } + + /** + * Checks if end of stream was reached. + */ + public function isEOF(): bool + { + return /* Token::EOF_TYPE */ -1 === $this->tokens[$this->current]->getType(); + } + + public function getCurrent(): Token + { + return $this->tokens[$this->current]; + } + + /** + * Gets the source associated with this stream. + * + * @internal + */ + public function getSourceContext(): Source + { + return $this->source; + } +} diff --git a/data/vendor/twig/twig/src/TwigFilter.php b/data/vendor/twig/twig/src/TwigFilter.php new file mode 100644 index 0000000..94e5f9b --- /dev/null +++ b/data/vendor/twig/twig/src/TwigFilter.php @@ -0,0 +1,134 @@ + + * + * @see https://twig.symfony.com/doc/templates.html#filters + */ +final class TwigFilter +{ + private $name; + private $callable; + private $options; + private $arguments = []; + + /** + * @param callable|null $callable A callable implementing the filter. If null, you need to overwrite the "node_class" option to customize compilation. + */ + public function __construct(string $name, $callable = null, array $options = []) + { + $this->name = $name; + $this->callable = $callable; + $this->options = array_merge([ + 'needs_environment' => false, + 'needs_context' => false, + 'is_variadic' => false, + 'is_safe' => null, + 'is_safe_callback' => null, + 'pre_escape' => null, + 'preserves_safety' => null, + 'node_class' => FilterExpression::class, + 'deprecated' => false, + 'alternative' => null, + ], $options); + } + + public function getName(): string + { + return $this->name; + } + + /** + * Returns the callable to execute for this filter. + * + * @return callable|null + */ + public function getCallable() + { + return $this->callable; + } + + public function getNodeClass(): string + { + return $this->options['node_class']; + } + + public function setArguments(array $arguments): void + { + $this->arguments = $arguments; + } + + public function getArguments(): array + { + return $this->arguments; + } + + public function needsEnvironment(): bool + { + return $this->options['needs_environment']; + } + + public function needsContext(): bool + { + return $this->options['needs_context']; + } + + public function getSafe(Node $filterArgs): ?array + { + if (null !== $this->options['is_safe']) { + return $this->options['is_safe']; + } + + if (null !== $this->options['is_safe_callback']) { + return $this->options['is_safe_callback']($filterArgs); + } + + return null; + } + + public function getPreservesSafety(): ?array + { + return $this->options['preserves_safety']; + } + + public function getPreEscape(): ?string + { + return $this->options['pre_escape']; + } + + public function isVariadic(): bool + { + return $this->options['is_variadic']; + } + + public function isDeprecated(): bool + { + return (bool) $this->options['deprecated']; + } + + public function getDeprecatedVersion(): string + { + return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; + } + + public function getAlternative(): ?string + { + return $this->options['alternative']; + } +} diff --git a/data/vendor/twig/twig/src/TwigFunction.php b/data/vendor/twig/twig/src/TwigFunction.php new file mode 100644 index 0000000..494d45b --- /dev/null +++ b/data/vendor/twig/twig/src/TwigFunction.php @@ -0,0 +1,122 @@ + + * + * @see https://twig.symfony.com/doc/templates.html#functions + */ +final class TwigFunction +{ + private $name; + private $callable; + private $options; + private $arguments = []; + + /** + * @param callable|null $callable A callable implementing the function. If null, you need to overwrite the "node_class" option to customize compilation. + */ + public function __construct(string $name, $callable = null, array $options = []) + { + $this->name = $name; + $this->callable = $callable; + $this->options = array_merge([ + 'needs_environment' => false, + 'needs_context' => false, + 'is_variadic' => false, + 'is_safe' => null, + 'is_safe_callback' => null, + 'node_class' => FunctionExpression::class, + 'deprecated' => false, + 'alternative' => null, + ], $options); + } + + public function getName(): string + { + return $this->name; + } + + /** + * Returns the callable to execute for this function. + * + * @return callable|null + */ + public function getCallable() + { + return $this->callable; + } + + public function getNodeClass(): string + { + return $this->options['node_class']; + } + + public function setArguments(array $arguments): void + { + $this->arguments = $arguments; + } + + public function getArguments(): array + { + return $this->arguments; + } + + public function needsEnvironment(): bool + { + return $this->options['needs_environment']; + } + + public function needsContext(): bool + { + return $this->options['needs_context']; + } + + public function getSafe(Node $functionArgs): ?array + { + if (null !== $this->options['is_safe']) { + return $this->options['is_safe']; + } + + if (null !== $this->options['is_safe_callback']) { + return $this->options['is_safe_callback']($functionArgs); + } + + return []; + } + + public function isVariadic(): bool + { + return (bool) $this->options['is_variadic']; + } + + public function isDeprecated(): bool + { + return (bool) $this->options['deprecated']; + } + + public function getDeprecatedVersion(): string + { + return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; + } + + public function getAlternative(): ?string + { + return $this->options['alternative']; + } +} diff --git a/data/vendor/twig/twig/src/TwigTest.php b/data/vendor/twig/twig/src/TwigTest.php new file mode 100644 index 0000000..4c18632 --- /dev/null +++ b/data/vendor/twig/twig/src/TwigTest.php @@ -0,0 +1,100 @@ + + * + * @see https://twig.symfony.com/doc/templates.html#test-operator + */ +final class TwigTest +{ + private $name; + private $callable; + private $options; + private $arguments = []; + + /** + * @param callable|null $callable A callable implementing the test. If null, you need to overwrite the "node_class" option to customize compilation. + */ + public function __construct(string $name, $callable = null, array $options = []) + { + $this->name = $name; + $this->callable = $callable; + $this->options = array_merge([ + 'is_variadic' => false, + 'node_class' => TestExpression::class, + 'deprecated' => false, + 'alternative' => null, + 'one_mandatory_argument' => false, + ], $options); + } + + public function getName(): string + { + return $this->name; + } + + /** + * Returns the callable to execute for this test. + * + * @return callable|null + */ + public function getCallable() + { + return $this->callable; + } + + public function getNodeClass(): string + { + return $this->options['node_class']; + } + + public function setArguments(array $arguments): void + { + $this->arguments = $arguments; + } + + public function getArguments(): array + { + return $this->arguments; + } + + public function isVariadic(): bool + { + return (bool) $this->options['is_variadic']; + } + + public function isDeprecated(): bool + { + return (bool) $this->options['deprecated']; + } + + public function getDeprecatedVersion(): string + { + return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; + } + + public function getAlternative(): ?string + { + return $this->options['alternative']; + } + + public function hasOneMandatoryArgument(): bool + { + return (bool) $this->options['one_mandatory_argument']; + } +} diff --git a/data/vendor/twig/twig/src/Util/DeprecationCollector.php b/data/vendor/twig/twig/src/Util/DeprecationCollector.php new file mode 100644 index 0000000..378b666 --- /dev/null +++ b/data/vendor/twig/twig/src/Util/DeprecationCollector.php @@ -0,0 +1,77 @@ + + */ +final class DeprecationCollector +{ + private $twig; + + public function __construct(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(string $dir, string $ext = '.twig'): array + { + $iterator = new \RegexIterator( + new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($dir), \RecursiveIteratorIterator::LEAVES_ONLY + ), '{'.preg_quote($ext).'$}' + ); + + return $this->collect(new 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): array + { + $deprecations = []; + set_error_handler(function ($type, $msg) use (&$deprecations) { + if (\E_USER_DEPRECATED === $type) { + $deprecations[] = $msg; + } + }); + + foreach ($iterator as $name => $contents) { + try { + $this->twig->parse($this->twig->tokenize(new Source($contents, $name))); + } catch (SyntaxError $e) { + // ignore templates containing syntax errors + } + } + + restore_error_handler(); + + return $deprecations; + } +} diff --git a/data/vendor/twig/twig/src/Util/TemplateDirIterator.php b/data/vendor/twig/twig/src/Util/TemplateDirIterator.php new file mode 100644 index 0000000..3bef14b --- /dev/null +++ b/data/vendor/twig/twig/src/Util/TemplateDirIterator.php @@ -0,0 +1,36 @@ + + */ +class TemplateDirIterator extends \IteratorIterator +{ + /** + * @return mixed + */ + #[\ReturnTypeWillChange] + public function current() + { + return file_get_contents(parent::current()); + } + + /** + * @return mixed + */ + #[\ReturnTypeWillChange] + public function key() + { + return (string) parent::key(); + } +} diff --git a/site/www/Twig-master (1).zip b/site/www/Twig-master (1).zip new file mode 100644 index 0000000000000000000000000000000000000000..b2fef30047f8c56ec7ef7729436257ac06596f22 GIT binary patch literal 456424 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 z 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

    8W8Uv56&v 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 literal 0 HcmV?d00001 diff --git a/site/www/Twig-master.zip b/site/www/Twig-master.zip new file mode 100644 index 0000000000000000000000000000000000000000..b2fef30047f8c56ec7ef7729436257ac06596f22 GIT binary patch literal 456424 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 z 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 z%0D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

    8W8Uv56&v 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 literal 0 HcmV?d00001 diff --git a/site/www/_rem/lib/twig/Cache/CacheInterface.php b/site/www/_rem/lib/twig/Cache/CacheInterface.php new file mode 100644 index 0000000..6e8c409 --- /dev/null +++ b/site/www/_rem/lib/twig/Cache/CacheInterface.php @@ -0,0 +1,46 @@ + + */ +interface CacheInterface +{ + /** + * Generates a cache key for the given template class name. + */ + public function generateKey(string $name, string $className): string; + + /** + * Writes the compiled template to cache. + * + * @param string $content The template representation as a PHP class + */ + public function write(string $key, string $content): void; + + /** + * Loads a template from the cache. + */ + public function load(string $key): void; + + /** + * Returns the modification timestamp of a key. + */ + public function getTimestamp(string $key): int; +} diff --git a/site/www/_rem/lib/twig/Cache/FilesystemCache.php b/site/www/_rem/lib/twig/Cache/FilesystemCache.php new file mode 100644 index 0000000..e075563 --- /dev/null +++ b/site/www/_rem/lib/twig/Cache/FilesystemCache.php @@ -0,0 +1,87 @@ + + */ +class FilesystemCache implements CacheInterface +{ + public const FORCE_BYTECODE_INVALIDATION = 1; + + private $directory; + private $options; + + public function __construct(string $directory, int $options = 0) + { + $this->directory = rtrim($directory, '\/').'/'; + $this->options = $options; + } + + public function generateKey(string $name, string $className): string + { + $hash = hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $className); + + return $this->directory.$hash[0].$hash[1].'/'.$hash.'.php'; + } + + public function load(string $key): void + { + if (is_file($key)) { + @include_once $key; + } + } + + public function write(string $key, string $content): void + { + $dir = \dirname($key); + if (!is_dir($dir)) { + if (false === @mkdir($dir, 0777, true)) { + 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') && filter_var(ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN)) { + @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(string $key): int + { + if (!is_file($key)) { + return 0; + } + + return (int) @filemtime($key); + } +} diff --git a/site/www/_rem/lib/twig/Cache/NullCache.php b/site/www/_rem/lib/twig/Cache/NullCache.php new file mode 100644 index 0000000..8d20d59 --- /dev/null +++ b/site/www/_rem/lib/twig/Cache/NullCache.php @@ -0,0 +1,38 @@ + + */ +final class NullCache implements CacheInterface +{ + public function generateKey(string $name, string $className): string + { + return ''; + } + + public function write(string $key, string $content): void + { + } + + public function load(string $key): void + { + } + + public function getTimestamp(string $key): int + { + return 0; + } +} diff --git a/site/www/_rem/lib/twig/Compiler.php b/site/www/_rem/lib/twig/Compiler.php new file mode 100644 index 0000000..95e1f18 --- /dev/null +++ b/site/www/_rem/lib/twig/Compiler.php @@ -0,0 +1,214 @@ + + */ +class Compiler +{ + private $lastLine; + private $source; + private $indentation; + private $env; + private $debugInfo = []; + private $sourceOffset; + private $sourceLine; + private $varNameSalt = 0; + + public function __construct(Environment $env) + { + $this->env = $env; + } + + public function getEnvironment(): Environment + { + return $this->env; + } + + public function getSource(): string + { + return $this->source; + } + + /** + * @return $this + */ + public function compile(Node $node, int $indentation = 0) + { + $this->lastLine = null; + $this->source = ''; + $this->debugInfo = []; + $this->sourceOffset = 0; + // source code starts at 1 (as we then increment it when we encounter new lines) + $this->sourceLine = 1; + $this->indentation = $indentation; + $this->varNameSalt = 0; + + $node->compile($this); + + return $this; + } + + /** + * @return $this + */ + public function subcompile(Node $node, bool $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. + * + * @return $this + */ + public function raw(string $string) + { + $this->source .= $string; + + return $this; + } + + /** + * Writes a string to the compiled code by adding indentation. + * + * @return $this + */ + public function write(...$strings) + { + foreach ($strings as $string) { + $this->source .= str_repeat(' ', $this->indentation * 4).$string; + } + + return $this; + } + + /** + * Adds a quoted string to the compiled code. + * + * @return $this + */ + public function string(string $value) + { + $this->source .= sprintf('"%s"', addcslashes($value, "\0\t\"\$\\")); + + return $this; + } + + /** + * Returns a PHP representation of a given value. + * + * @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(var_export($value, true)); + + 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; + } + + /** + * @return $this + */ + public function addDebugInfo(Node $node) + { + if ($node->getTemplateLine() != $this->lastLine) { + $this->write(sprintf("// line %d\n", $node->getTemplateLine())); + + $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(): array + { + ksort($this->debugInfo); + + return $this->debugInfo; + } + + /** + * @return $this + */ + public function indent(int $step = 1) + { + $this->indentation += $step; + + return $this; + } + + /** + * @return $this + * + * @throws \LogicException When trying to outdent too much so the indentation would become negative + */ + public function outdent(int $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(): string + { + return sprintf('__internal_compile_%d', $this->varNameSalt++); + } +} diff --git a/site/www/_rem/lib/twig/Environment.php b/site/www/_rem/lib/twig/Environment.php new file mode 100644 index 0000000..681f534 --- /dev/null +++ b/site/www/_rem/lib/twig/Environment.php @@ -0,0 +1,832 @@ + + */ +class Environment +{ + public const VERSION = '3.3.7'; + public const VERSION_ID = 30307; + public const MAJOR_VERSION = 3; + public const MINOR_VERSION = 3; + public const RELEASE_VERSION = 7; + public const EXTRA_VERSION = ''; + + private $charset; + private $loader; + private $debug; + private $autoReload; + private $cache; + private $lexer; + private $parser; + private $compiler; + private $globals = []; + private $resolvedGlobals; + private $loadedTemplates; + private $strictVariables; + private $templateClassPrefix = '__TwigTemplate_'; + private $originalCache; + private $extensionSet; + private $runtimeLoaders = []; + private $runtimes = []; + 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). + * + * * cache: An absolute path where to store the compiled templates, + * a \Twig\Cache\CacheInterface 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 + * * 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). + */ + public function __construct(LoaderInterface $loader, $options = []) + { + $this->setLoader($loader); + + $options = array_merge([ + 'debug' => false, + 'charset' => 'UTF-8', + 'strict_variables' => false, + 'autoescape' => 'html', + 'cache' => false, + 'auto_reload' => null, + 'optimizations' => -1, + ], $options); + + $this->debug = (bool) $options['debug']; + $this->setCharset($options['charset'] ?? 'UTF-8'); + $this->autoReload = null === $options['auto_reload'] ? $this->debug : (bool) $options['auto_reload']; + $this->strictVariables = (bool) $options['strict_variables']; + $this->setCache($options['cache']); + $this->extensionSet = new ExtensionSet(); + + $this->addExtension(new CoreExtension()); + $this->addExtension(new EscaperExtension($options['autoescape'])); + $this->addExtension(new OptimizerExtension($options['optimizations'])); + } + + /** + * 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 CacheInterface|string|false A Twig\Cache\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 CacheInterface|string|false $cache A Twig\Cache\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 FilesystemCache($cache); + } elseif (false === $cache) { + $this->originalCache = $cache; + $this->cache = new NullCache(); + } elseif ($cache instanceof CacheInterface) { + $this->originalCache = $this->cache = $cache; + } else { + throw new \LogicException('Cache can only be a string, false, or a \Twig\Cache\CacheInterface implementation.'); + } + } + + /** + * 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 + * + * @internal + */ + public function getTemplateClass(string $name, int $index = null): string + { + $key = $this->getLoader()->getCacheKey($name).$this->optionsHash; + + return $this->templateClassPrefix.hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $key).(null === $index ? '' : '___'.$index); + } + + /** + * Renders a template. + * + * @param string|TemplateWrapper $name The template name + * + * @throws LoaderError When the template cannot be found + * @throws SyntaxError When an error occurred during compilation + * @throws RuntimeError When an error occurred during rendering + */ + public function render($name, array $context = []): string + { + return $this->load($name)->render($context); + } + + /** + * Displays a template. + * + * @param string|TemplateWrapper $name The template name + * + * @throws LoaderError When the template cannot be found + * @throws SyntaxError When an error occurred during compilation + * @throws RuntimeError When an error occurred during rendering + */ + public function display($name, array $context = []): void + { + $this->load($name)->display($context); + } + + /** + * Loads a template. + * + * @param string|TemplateWrapper $name The template name + * + * @throws LoaderError When the template cannot be found + * @throws RuntimeError When a previously generated cache is corrupted + * @throws SyntaxError When an error occurred during compilation + */ + public function load($name): TemplateWrapper + { + if ($name instanceof TemplateWrapper) { + return $name; + } + + return new TemplateWrapper($this, $this->loadTemplate($this->getTemplateClass($name), $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 + * + * @throws LoaderError When the template cannot be found + * @throws RuntimeError When a previously generated cache is corrupted + * @throws SyntaxError When an error occurred during compilation + * + * @internal + */ + public function loadTemplate(string $cls, string $name, int $index = null): Template + { + $mainCls = $cls; + if (null !== $index) { + $cls .= '___'.$index; + } + + if (isset($this->loadedTemplates[$cls])) { + return $this->loadedTemplates[$cls]; + } + + if (!class_exists($cls, false)) { + $key = $this->cache->generateKey($name, $mainCls); + + if (!$this->isAutoReload() || $this->isTemplateFresh($name, $this->cache->getTimestamp($key))) { + $this->cache->load($key); + } + + $source = null; + if (!class_exists($cls, false)) { + $source = $this->getLoader()->getSourceContext($name); + $content = $this->compileSource($source); + $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 RuntimeError(sprintf('Failed to load Twig template "%s", index "%s": cache might be corrupted.', $name, $index), -1, $source); + } + } + } + + $this->extensionSet->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 source + * @param string $name An optional name of the template to be used in error messages + * + * @throws LoaderError When the template cannot be found + * @throws SyntaxError When an error occurred during compilation + */ + public function createTemplate(string $template, string $name = null): TemplateWrapper + { + $hash = hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $template, false); + if (null !== $name) { + $name = sprintf('%s (string template %s)', $name, $hash); + } else { + $name = sprintf('__string_template__%s', $hash); + } + + $loader = new ChainLoader([ + new ArrayLoader([$name => $template]), + $current = $this->getLoader(), + ]); + + $this->setLoader($loader); + try { + return new TemplateWrapper($this, $this->loadTemplate($this->getTemplateClass($name), $name)); + } finally { + $this->setLoader($current); + } + } + + /** + * 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 int $time The last modification time of the cached template + */ + public function isTemplateFresh(string $name, int $time): bool + { + return $this->extensionSet->getLastModified() <= $time && $this->getLoader()->isFresh($name, $time); + } + + /** + * Tries to load a template consecutively from an array. + * + * Similar to load() but it also accepts instances of \Twig\Template and + * \Twig\TemplateWrapper, and an array of templates where each is tried to be loaded. + * + * @param string|TemplateWrapper|array $names A template or an array of templates to try consecutively + * + * @throws LoaderError When none of the templates can be found + * @throws SyntaxError When an error occurred during compilation + */ + public function resolveTemplate($names): TemplateWrapper + { + if (!\is_array($names)) { + return $this->load($names); + } + + $count = \count($names); + foreach ($names as $name) { + if ($name instanceof Template) { + return $name; + } + if ($name instanceof TemplateWrapper) { + return $name; + } + + if (1 !== $count && !$this->getLoader()->exists($name)) { + continue; + } + + return $this->load($name); + } + + throw new LoaderError(sprintf('Unable to find one of the following templates: "%s".', implode('", "', $names))); + } + + public function setLexer(Lexer $lexer) + { + $this->lexer = $lexer; + } + + /** + * @throws SyntaxError When the code is syntactically wrong + */ + public function tokenize(Source $source): TokenStream + { + if (null === $this->lexer) { + $this->lexer = new Lexer($this); + } + + return $this->lexer->tokenize($source); + } + + public function setParser(Parser $parser) + { + $this->parser = $parser; + } + + /** + * Converts a token stream to a node tree. + * + * @throws SyntaxError When the token stream is syntactically or semantically wrong + */ + public function parse(TokenStream $stream): ModuleNode + { + if (null === $this->parser) { + $this->parser = new Parser($this); + } + + return $this->parser->parse($stream); + } + + public function setCompiler(Compiler $compiler) + { + $this->compiler = $compiler; + } + + /** + * Compiles a node and returns the PHP code. + */ + public function compile(Node $node): string + { + if (null === $this->compiler) { + $this->compiler = new Compiler($this); + } + + return $this->compiler->compile($node)->getSource(); + } + + /** + * Compiles a template source code. + * + * @throws SyntaxError When there was an error during tokenizing, parsing or compiling + */ + public function compileSource(Source $source): string + { + try { + return $this->compile($this->parse($this->tokenize($source))); + } catch (Error $e) { + $e->setSourceContext($source); + throw $e; + } catch (\Exception $e) { + throw new SyntaxError(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e); + } + } + + public function setLoader(LoaderInterface $loader) + { + $this->loader = $loader; + } + + public function getLoader(): LoaderInterface + { + return $this->loader; + } + + public function setCharset(string $charset) + { + if ('UTF8' === $charset = null === $charset ? null : strtoupper($charset)) { + // iconv on Windows requires "UTF-8" instead of "UTF8" + $charset = 'UTF-8'; + } + + $this->charset = $charset; + } + + public function getCharset(): string + { + return $this->charset; + } + + public function hasExtension(string $class): bool + { + return $this->extensionSet->hasExtension($class); + } + + public function addRuntimeLoader(RuntimeLoaderInterface $loader) + { + $this->runtimeLoaders[] = $loader; + } + + /** + * @template TExtension of ExtensionInterface + * + * @param class-string $class + * + * @return TExtension + */ + public function getExtension(string $class): ExtensionInterface + { + return $this->extensionSet->getExtension($class); + } + + /** + * Returns the runtime implementation of a Twig element (filter/function/tag/test). + * + * @template TRuntime of object + * + * @param class-string $class A runtime class name + * + * @return TRuntime The runtime implementation + * + * @throws RuntimeError When the template cannot be found + */ + public function getRuntime(string $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 RuntimeError(sprintf('Unable to load the "%s" runtime.', $class)); + } + + public function addExtension(ExtensionInterface $extension) + { + $this->extensionSet->addExtension($extension); + $this->updateOptionsHash(); + } + + /** + * @param ExtensionInterface[] $extensions An array of extensions + */ + public function setExtensions(array $extensions) + { + $this->extensionSet->setExtensions($extensions); + $this->updateOptionsHash(); + } + + /** + * @return ExtensionInterface[] An array of extensions (keys are for internal usage only and should not be relied on) + */ + public function getExtensions(): array + { + return $this->extensionSet->getExtensions(); + } + + public function addTokenParser(TokenParserInterface $parser) + { + $this->extensionSet->addTokenParser($parser); + } + + /** + * @return TokenParserInterface[] + * + * @internal + */ + public function getTokenParsers(): array + { + return $this->extensionSet->getTokenParsers(); + } + + /** + * @internal + */ + public function getTokenParser(string $name): ?TokenParserInterface + { + return $this->extensionSet->getTokenParser($name); + } + + public function registerUndefinedTokenParserCallback(callable $callable): void + { + $this->extensionSet->registerUndefinedTokenParserCallback($callable); + } + + public function addNodeVisitor(NodeVisitorInterface $visitor) + { + $this->extensionSet->addNodeVisitor($visitor); + } + + /** + * @return NodeVisitorInterface[] + * + * @internal + */ + public function getNodeVisitors(): array + { + return $this->extensionSet->getNodeVisitors(); + } + + public function addFilter(TwigFilter $filter) + { + $this->extensionSet->addFilter($filter); + } + + /** + * @internal + */ + public function getFilter(string $name): ?TwigFilter + { + return $this->extensionSet->getFilter($name); + } + + public function registerUndefinedFilterCallback(callable $callable): void + { + $this->extensionSet->registerUndefinedFilterCallback($callable); + } + + /** + * Gets the registered Filters. + * + * Be warned that this method cannot return filters defined with registerUndefinedFilterCallback. + * + * @return TwigFilter[] + * + * @see registerUndefinedFilterCallback + * + * @internal + */ + public function getFilters(): array + { + return $this->extensionSet->getFilters(); + } + + public function addTest(TwigTest $test) + { + $this->extensionSet->addTest($test); + } + + /** + * @return TwigTest[] + * + * @internal + */ + public function getTests(): array + { + return $this->extensionSet->getTests(); + } + + /** + * @internal + */ + public function getTest(string $name): ?TwigTest + { + return $this->extensionSet->getTest($name); + } + + public function addFunction(TwigFunction $function) + { + $this->extensionSet->addFunction($function); + } + + /** + * @internal + */ + public function getFunction(string $name): ?TwigFunction + { + return $this->extensionSet->getFunction($name); + } + + public function registerUndefinedFunctionCallback(callable $callable): void + { + $this->extensionSet->registerUndefinedFunctionCallback($callable); + } + + /** + * Gets registered functions. + * + * Be warned that this method cannot return functions defined with registerUndefinedFunctionCallback. + * + * @return TwigFunction[] + * + * @see registerUndefinedFunctionCallback + * + * @internal + */ + public function getFunctions(): array + { + return $this->extensionSet->getFunctions(); + } + + /** + * Registers a Global. + * + * New globals can be added before compiling or rendering a template; + * but after, you can only update existing globals. + * + * @param mixed $value The global value + */ + public function addGlobal(string $name, $value) + { + if ($this->extensionSet->isInitialized() && !\array_key_exists($name, $this->getGlobals())) { + throw new \LogicException(sprintf('Unable to add global "%s" as the runtime or the extensions have already been initialized.', $name)); + } + + if (null !== $this->resolvedGlobals) { + $this->resolvedGlobals[$name] = $value; + } else { + $this->globals[$name] = $value; + } + } + + /** + * @internal + */ + public function getGlobals(): array + { + if ($this->extensionSet->isInitialized()) { + if (null === $this->resolvedGlobals) { + $this->resolvedGlobals = array_merge($this->extensionSet->getGlobals(), $this->globals); + } + + return $this->resolvedGlobals; + } + + return array_merge($this->extensionSet->getGlobals(), $this->globals); + } + + public function mergeGlobals(array $context): array + { + // 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; + } + + /** + * @internal + */ + public function getUnaryOperators(): array + { + return $this->extensionSet->getUnaryOperators(); + } + + /** + * @internal + */ + public function getBinaryOperators(): array + { + return $this->extensionSet->getBinaryOperators(); + } + + private function updateOptionsHash(): void + { + $this->optionsHash = implode(':', [ + $this->extensionSet->getSignature(), + \PHP_MAJOR_VERSION, + \PHP_MINOR_VERSION, + self::VERSION, + (int) $this->debug, + (int) $this->strictVariables, + ]); + } +} diff --git a/site/www/_rem/lib/twig/Error/Error.php b/site/www/_rem/lib/twig/Error/Error.php new file mode 100644 index 0000000..a68be65 --- /dev/null +++ b/site/www/_rem/lib/twig/Error/Error.php @@ -0,0 +1,227 @@ + + */ +class Error extends \Exception +{ + private $lineno; + private $name; + private $rawMessage; + private $sourcePath; + private $sourceCode; + + /** + * Constructor. + * + * By default, automatic guessing is enabled. + * + * @param string $message The error message + * @param int $lineno The template line where the error occurred + * @param Source|null $source The source context where the error occurred + */ + public function __construct(string $message, int $lineno = -1, Source $source = null, \Exception $previous = null) + { + parent::__construct('', 0, $previous); + + if (null === $source) { + $name = null; + } else { + $name = $source->getName(); + $this->sourceCode = $source->getCode(); + $this->sourcePath = $source->getPath(); + } + + $this->lineno = $lineno; + $this->name = $name; + $this->rawMessage = $message; + $this->updateRepr(); + } + + public function getRawMessage(): string + { + return $this->rawMessage; + } + + public function getTemplateLine(): int + { + return $this->lineno; + } + + public function setTemplateLine(int $lineno): void + { + $this->lineno = $lineno; + + $this->updateRepr(); + } + + public function getSourceContext(): ?Source + { + return $this->name ? new Source($this->sourceCode, $this->name, $this->sourcePath) : null; + } + + public function setSourceContext(Source $source = null): void + { + if (null === $source) { + $this->sourceCode = $this->name = $this->sourcePath = null; + } else { + $this->sourceCode = $source->getCode(); + $this->name = $source->getName(); + $this->sourcePath = $source->getPath(); + } + + $this->updateRepr(); + } + + public function guess(): void + { + $this->guessTemplateInfo(); + $this->updateRepr(); + } + + public function appendMessage($rawMessage): void + { + $this->rawMessage .= $rawMessage; + $this->updateRepr(); + } + + private function updateRepr(): void + { + $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->name) { + if (\is_string($this->name) || (\is_object($this->name) && method_exists($this->name, '__toString'))) { + $name = sprintf('"%s"', $this->name); + } else { + $name = json_encode($this->name); + } + $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 .= '?'; + } + } + + private function guessTemplateInfo(): void + { + $template = null; + $templateClass = null; + + $backtrace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS | \DEBUG_BACKTRACE_PROVIDE_OBJECT); + foreach ($backtrace as $trace) { + if (isset($trace['object']) && $trace['object'] instanceof Template) { + $currentClass = \get_class($trace['object']); + $isEmbedContainer = null === $templateClass ? false : 0 === strpos($templateClass, $currentClass); + if (null === $this->name || ($this->name == $trace['object']->getTemplateName() && !$isEmbedContainer)) { + $template = $trace['object']; + $templateClass = \get_class($trace['object']); + } + } + } + + // update template name + if (null !== $template && null === $this->name) { + $this->name = $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(); + + $exceptions = [$e = $this]; + while ($e = $e->getPrevious()) { + $exceptions[] = $e; + } + + while ($e = array_pop($exceptions)) { + $traces = $e->getTrace(); + array_unshift($traces, ['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/site/www/_rem/lib/twig/Error/LoaderError.php b/site/www/_rem/lib/twig/Error/LoaderError.php new file mode 100644 index 0000000..7c8c23c --- /dev/null +++ b/site/www/_rem/lib/twig/Error/LoaderError.php @@ -0,0 +1,21 @@ + + */ +class LoaderError extends Error +{ +} diff --git a/site/www/_rem/lib/twig/Error/RuntimeError.php b/site/www/_rem/lib/twig/Error/RuntimeError.php new file mode 100644 index 0000000..f6b8476 --- /dev/null +++ b/site/www/_rem/lib/twig/Error/RuntimeError.php @@ -0,0 +1,22 @@ + + */ +class RuntimeError extends Error +{ +} diff --git a/site/www/_rem/lib/twig/Error/SyntaxError.php b/site/www/_rem/lib/twig/Error/SyntaxError.php new file mode 100644 index 0000000..726b330 --- /dev/null +++ b/site/www/_rem/lib/twig/Error/SyntaxError.php @@ -0,0 +1,46 @@ + + */ +class SyntaxError extends 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(string $name, array $items): void + { + $alternatives = []; + foreach ($items as $item) { + $lev = levenshtein($name, $item); + if ($lev <= \strlen($name) / 3 || false !== strpos($item, $name)) { + $alternatives[$item] = $lev; + } + } + + if (!$alternatives) { + return; + } + + asort($alternatives); + + $this->appendMessage(sprintf(' Did you mean "%s"?', implode('", "', array_keys($alternatives)))); + } +} diff --git a/site/www/_rem/lib/twig/ExpressionParser.php b/site/www/_rem/lib/twig/ExpressionParser.php new file mode 100644 index 0000000..66acddf --- /dev/null +++ b/site/www/_rem/lib/twig/ExpressionParser.php @@ -0,0 +1,825 @@ + + * + * @internal + */ +class ExpressionParser +{ + public const OPERATOR_LEFT = 1; + public const OPERATOR_RIGHT = 2; + + private $parser; + private $env; + private $unaryOperators; + private $binaryOperators; + + public function __construct(Parser $parser, Environment $env) + { + $this->parser = $parser; + $this->env = $env; + $this->unaryOperators = $env->getUnaryOperators(); + $this->binaryOperators = $env->getBinaryOperators(); + } + + public function parseExpression($precedence = 0, $allowArrow = false) + { + if ($allowArrow && $arrow = $this->parseArrow()) { + return $arrow; + } + + $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 = $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; + } + + /** + * @return ArrowFunctionExpression|null + */ + private function parseArrow() + { + $stream = $this->parser->getStream(); + + // short array syntax (one argument, no parentheses)? + if ($stream->look(1)->test(/* Token::ARROW_TYPE */ 12)) { + $line = $stream->getCurrent()->getLine(); + $token = $stream->expect(/* Token::NAME_TYPE */ 5); + $names = [new AssignNameExpression($token->getValue(), $token->getLine())]; + $stream->expect(/* Token::ARROW_TYPE */ 12); + + return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line); + } + + // first, determine if we are parsing an arrow function by finding => (long form) + $i = 0; + if (!$stream->look($i)->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + return null; + } + ++$i; + while (true) { + // variable name + ++$i; + if (!$stream->look($i)->test(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + break; + } + ++$i; + } + if (!$stream->look($i)->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) { + return null; + } + ++$i; + if (!$stream->look($i)->test(/* Token::ARROW_TYPE */ 12)) { + return null; + } + + // yes, let's parse it properly + $token = $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '('); + $line = $token->getLine(); + + $names = []; + while (true) { + $token = $stream->expect(/* Token::NAME_TYPE */ 5); + $names[] = new AssignNameExpression($token->getValue(), $token->getLine()); + + if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + break; + } + } + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ')'); + $stream->expect(/* Token::ARROW_TYPE */ 12); + + return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line); + } + + private function getPrimary(): AbstractExpression + { + $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(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + $this->parser->getStream()->next(); + $expr = $this->parseExpression(); + $this->parser->getStream()->expect(/* Token::PUNCTUATION_TYPE */ 9, ')', 'An opened parenthesis is not properly closed'); + + return $this->parsePostfixExpression($expr); + } + + return $this->parsePrimaryExpression(); + } + + private function parseConditionalExpression($expr): AbstractExpression + { + while ($this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, '?')) { + if (!$this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) { + $expr2 = $this->parseExpression(); + if ($this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) { + $expr3 = $this->parseExpression(); + } else { + $expr3 = new ConstantExpression('', $this->parser->getCurrentToken()->getLine()); + } + } else { + $expr2 = $expr; + $expr3 = $this->parseExpression(); + } + + $expr = new ConditionalExpression($expr, $expr2, $expr3, $this->parser->getCurrentToken()->getLine()); + } + + return $expr; + } + + private function isUnary(Token $token): bool + { + return $token->test(/* Token::OPERATOR_TYPE */ 8) && isset($this->unaryOperators[$token->getValue()]); + } + + private function isBinary(Token $token): bool + { + return $token->test(/* Token::OPERATOR_TYPE */ 8) && isset($this->binaryOperators[$token->getValue()]); + } + + public function parsePrimaryExpression() + { + $token = $this->parser->getCurrentToken(); + switch ($token->getType()) { + case /* Token::NAME_TYPE */ 5: + $this->parser->getStream()->next(); + switch ($token->getValue()) { + case 'true': + case 'TRUE': + $node = new ConstantExpression(true, $token->getLine()); + break; + + case 'false': + case 'FALSE': + $node = new ConstantExpression(false, $token->getLine()); + break; + + case 'none': + case 'NONE': + case 'null': + case 'NULL': + $node = new ConstantExpression(null, $token->getLine()); + break; + + default: + if ('(' === $this->parser->getCurrentToken()->getValue()) { + $node = $this->getFunctionNode($token->getValue(), $token->getLine()); + } else { + $node = new NameExpression($token->getValue(), $token->getLine()); + } + } + break; + + case /* Token::NUMBER_TYPE */ 6: + $this->parser->getStream()->next(); + $node = new ConstantExpression($token->getValue(), $token->getLine()); + break; + + case /* Token::STRING_TYPE */ 7: + case /* Token::INTERPOLATION_START_TYPE */ 10: + $node = $this->parseStringExpression(); + break; + + case /* Token::OPERATOR_TYPE */ 8: + if (preg_match(Lexer::REGEX_NAME, $token->getValue(), $matches) && $matches[0] == $token->getValue()) { + // in this context, string operators are variable names + $this->parser->getStream()->next(); + $node = new NameExpression($token->getValue(), $token->getLine()); + break; + } + + if (isset($this->unaryOperators[$token->getValue()])) { + $class = $this->unaryOperators[$token->getValue()]['class']; + if (!\in_array($class, [NegUnary::class, PosUnary::class])) { + throw new SyntaxError(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; + } + + // no break + default: + if ($token->test(/* Token::PUNCTUATION_TYPE */ 9, '[')) { + $node = $this->parseArrayExpression(); + } elseif ($token->test(/* Token::PUNCTUATION_TYPE */ 9, '{')) { + $node = $this->parseHashExpression(); + } elseif ($token->test(/* Token::OPERATOR_TYPE */ 8, '=') && ('==' === $this->parser->getStream()->look(-1)->getValue() || '!=' === $this->parser->getStream()->look(-1)->getValue())) { + throw new SyntaxError(sprintf('Unexpected operator of value "%s". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead.', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); + } else { + throw new SyntaxError(sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); + } + } + + return $this->parsePostfixExpression($node); + } + + public function parseStringExpression() + { + $stream = $this->parser->getStream(); + + $nodes = []; + // a string cannot be followed by another string in a single expression + $nextCanBeString = true; + while (true) { + if ($nextCanBeString && $token = $stream->nextIf(/* Token::STRING_TYPE */ 7)) { + $nodes[] = new ConstantExpression($token->getValue(), $token->getLine()); + $nextCanBeString = false; + } elseif ($stream->nextIf(/* Token::INTERPOLATION_START_TYPE */ 10)) { + $nodes[] = $this->parseExpression(); + $stream->expect(/* Token::INTERPOLATION_END_TYPE */ 11); + $nextCanBeString = true; + } else { + break; + } + } + + $expr = array_shift($nodes); + foreach ($nodes as $node) { + $expr = new ConcatBinary($expr, $node, $node->getTemplateLine()); + } + + return $expr; + } + + public function parseArrayExpression() + { + $stream = $this->parser->getStream(); + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '[', 'An array element was expected'); + + $node = new ArrayExpression([], $stream->getCurrent()->getLine()); + $first = true; + while (!$stream->test(/* Token::PUNCTUATION_TYPE */ 9, ']')) { + if (!$first) { + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ',', 'An array element must be followed by a comma'); + + // trailing ,? + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ']')) { + break; + } + } + $first = false; + + $node->addElement($this->parseExpression()); + } + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ']', 'An opened array is not properly closed'); + + return $node; + } + + public function parseHashExpression() + { + $stream = $this->parser->getStream(); + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '{', 'A hash element was expected'); + + $node = new ArrayExpression([], $stream->getCurrent()->getLine()); + $first = true; + while (!$stream->test(/* Token::PUNCTUATION_TYPE */ 9, '}')) { + if (!$first) { + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ',', 'A hash value must be followed by a comma'); + + // trailing ,? + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '}')) { + 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(/* Token::NAME_TYPE */ 5)) { + $key = new ConstantExpression($token->getValue(), $token->getLine()); + + // {a} is a shortcut for {a:a} + if ($stream->test(Token::PUNCTUATION_TYPE, [',', '}'])) { + $value = new NameExpression($key->getAttribute('value'), $key->getTemplateLine()); + $node->addElement($value, $key); + continue; + } + } elseif (($token = $stream->nextIf(/* Token::STRING_TYPE */ 7)) || $token = $stream->nextIf(/* Token::NUMBER_TYPE */ 6)) { + $key = new ConstantExpression($token->getValue(), $token->getLine()); + } elseif ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + $key = $this->parseExpression(); + } else { + $current = $stream->getCurrent(); + + throw new SyntaxError(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".', Token::typeToEnglish($current->getType()), $current->getValue()), $current->getLine(), $stream->getSourceContext()); + } + + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ':', 'A hash key must be followed by a colon (:)'); + $value = $this->parseExpression(); + + $node->addElement($value, $key); + } + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '}', 'An opened hash is not properly closed'); + + return $node; + } + + public function parsePostfixExpression($node) + { + while (true) { + $token = $this->parser->getCurrentToken(); + if (/* Token::PUNCTUATION_TYPE */ 9 == $token->getType()) { + 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 SyntaxError('Calling "parent" outside a block is forbidden.', $line, $this->parser->getStream()->getSourceContext()); + } + + if (!$this->parser->getParent() && !$this->parser->hasTraits()) { + throw new SyntaxError('Calling "parent" on a template that does not extend nor "use" another template is forbidden.', $line, $this->parser->getStream()->getSourceContext()); + } + + return new ParentExpression($this->parser->peekBlockStack(), $line); + case 'block': + $args = $this->parseArguments(); + if (\count($args) < 1) { + throw new SyntaxError('The "block" function takes one argument (the block name).', $line, $this->parser->getStream()->getSourceContext()); + } + + return new BlockReferenceExpression($args->getNode(0), \count($args) > 1 ? $args->getNode(1) : null, $line); + case 'attribute': + $args = $this->parseArguments(); + if (\count($args) < 2) { + throw new SyntaxError('The "attribute" function takes at least two arguments (the variable and the attributes).', $line, $this->parser->getStream()->getSourceContext()); + } + + return new GetAttrExpression($args->getNode(0), $args->getNode(1), \count($args) > 2 ? $args->getNode(2) : null, Template::ANY_CALL, $line); + default: + if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) { + $arguments = new ArrayExpression([], $line); + foreach ($this->parseArguments() as $n) { + $arguments->addElement($n); + } + + $node = new MethodCallExpression($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 ArrayExpression([], $lineno); + $type = Template::ANY_CALL; + if ('.' == $token->getValue()) { + $token = $stream->next(); + if ( + /* Token::NAME_TYPE */ 5 == $token->getType() + || + /* Token::NUMBER_TYPE */ 6 == $token->getType() + || + (/* Token::OPERATOR_TYPE */ 8 == $token->getType() && preg_match(Lexer::REGEX_NAME, $token->getValue())) + ) { + $arg = new ConstantExpression($token->getValue(), $lineno); + + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + $type = Template::METHOD_CALL; + foreach ($this->parseArguments() as $n) { + $arguments->addElement($n); + } + } + } else { + throw new SyntaxError('Expected name or number.', $lineno, $stream->getSourceContext()); + } + + if ($node instanceof NameExpression && null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) { + if (!$arg instanceof ConstantExpression) { + throw new SyntaxError(sprintf('Dynamic macro names are not supported (called on "%s").', $node->getAttribute('name')), $token->getLine(), $stream->getSourceContext()); + } + + $name = $arg->getAttribute('value'); + + $node = new MethodCallExpression($node, 'macro_'.$name, $arguments, $lineno); + $node->setAttribute('safe', true); + + return $node; + } + } else { + $type = Template::ARRAY_CALL; + + // slice? + $slice = false; + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ':')) { + $slice = true; + $arg = new ConstantExpression(0, $token->getLine()); + } else { + $arg = $this->parseExpression(); + } + + if ($stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) { + $slice = true; + } + + if ($slice) { + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ']')) { + $length = new ConstantExpression(null, $token->getLine()); + } else { + $length = $this->parseExpression(); + } + + $class = $this->getFilterNodeClass('slice', $token->getLine()); + $arguments = new Node([$arg, $length]); + $filter = new $class($node, new ConstantExpression('slice', $token->getLine()), $arguments, $token->getLine()); + + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ']'); + + return $filter; + } + + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ']'); + } + + return new GetAttrExpression($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(/* Token::NAME_TYPE */ 5); + + $name = new ConstantExpression($token->getValue(), $token->getLine()); + if (!$this->parser->getStream()->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + $arguments = new Node(); + } else { + $arguments = $this->parseArguments(true, false, true); + } + + $class = $this->getFilterNodeClass($name->getAttribute('value'), $token->getLine()); + + $node = new $class($node, $name, $arguments, $token->getLine(), $tag); + + if (!$this->parser->getStream()->test(/* Token::PUNCTUATION_TYPE */ 9, '|')) { + 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 Node + * + * @throws SyntaxError + */ + public function parseArguments($namedArguments = false, $definition = false, $allowArrow = false) + { + $args = []; + $stream = $this->parser->getStream(); + + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '(', 'A list of arguments must begin with an opening parenthesis'); + while (!$stream->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) { + if (!empty($args)) { + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ',', 'Arguments must be separated by a comma'); + + // if the comma above was a trailing comma, early exit the argument parse loop + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) { + break; + } + } + + if ($definition) { + $token = $stream->expect(/* Token::NAME_TYPE */ 5, null, 'An argument must be a name'); + $value = new NameExpression($token->getValue(), $this->parser->getCurrentToken()->getLine()); + } else { + $value = $this->parseExpression(0, $allowArrow); + } + + $name = null; + if ($namedArguments && $token = $stream->nextIf(/* Token::OPERATOR_TYPE */ 8, '=')) { + if (!$value instanceof NameExpression) { + throw new SyntaxError(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 SyntaxError('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(0, $allowArrow); + } + } + + if ($definition) { + if (null === $name) { + $name = $value->getAttribute('name'); + $value = new ConstantExpression(null, $this->parser->getCurrentToken()->getLine()); + } + $args[$name] = $value; + } else { + if (null === $name) { + $args[] = $value; + } else { + $args[$name] = $value; + } + } + } + $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ')', 'A list of arguments must be closed by a parenthesis'); + + return new Node($args); + } + + public function parseAssignmentExpression() + { + $stream = $this->parser->getStream(); + $targets = []; + while (true) { + $token = $this->parser->getCurrentToken(); + if ($stream->test(/* Token::OPERATOR_TYPE */ 8) && preg_match(Lexer::REGEX_NAME, $token->getValue())) { + // in this context, string operators are variable names + $this->parser->getStream()->next(); + } else { + $stream->expect(/* Token::NAME_TYPE */ 5, null, 'Only variables can be assigned to'); + } + $value = $token->getValue(); + if (\in_array(strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), ['true', 'false', 'none', 'null'])) { + throw new SyntaxError(sprintf('You cannot assign a value to "%s".', $value), $token->getLine(), $stream->getSourceContext()); + } + $targets[] = new AssignNameExpression($value, $token->getLine()); + + if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + break; + } + } + + return new Node($targets); + } + + public function parseMultitargetExpression() + { + $targets = []; + while (true) { + $targets[] = $this->parseExpression(); + if (!$this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + break; + } + } + + return new Node($targets); + } + + private function parseNotTestExpression(Node $node): NotUnary + { + return new NotUnary($this->parseTestExpression($node), $this->parser->getCurrentToken()->getLine()); + } + + private function parseTestExpression(Node $node): TestExpression + { + $stream = $this->parser->getStream(); + list($name, $test) = $this->getTest($node->getTemplateLine()); + + $class = $this->getTestNodeClass($test); + $arguments = null; + if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + $arguments = $this->parseArguments(true); + } elseif ($test->hasOneMandatoryArgument()) { + $arguments = new Node([0 => $this->parsePrimaryExpression()]); + } + + if ('defined' === $name && $node instanceof NameExpression && null !== $alias = $this->parser->getImportedSymbol('function', $node->getAttribute('name'))) { + $node = new MethodCallExpression($alias['node'], $alias['name'], new ArrayExpression([], $node->getTemplateLine()), $node->getTemplateLine()); + $node->setAttribute('safe', true); + } + + return new $class($node, $name, $arguments, $this->parser->getCurrentToken()->getLine()); + } + + private function getTest(int $line): array + { + $stream = $this->parser->getStream(); + $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + + if ($test = $this->env->getTest($name)) { + return [$name, $test]; + } + + if ($stream->test(/* Token::NAME_TYPE */ 5)) { + // try 2-words tests + $name = $name.' '.$this->parser->getCurrentToken()->getValue(); + + if ($test = $this->env->getTest($name)) { + $stream->next(); + + return [$name, $test]; + } + } + + $e = new SyntaxError(sprintf('Unknown "%s" test.', $name), $line, $stream->getSourceContext()); + $e->addSuggestions($name, array_keys($this->env->getTests())); + + throw $e; + } + + private function getTestNodeClass(TwigTest $test): string + { + if ($test->isDeprecated()) { + $stream = $this->parser->getStream(); + $message = sprintf('Twig Test "%s" is deprecated', $test->getName()); + + if ($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->getName(), $stream->getCurrent()->getLine()); + + @trigger_error($message, \E_USER_DEPRECATED); + } + + return $test->getNodeClass(); + } + + private function getFunctionNodeClass(string $name, int $line): string + { + if (!$function = $this->env->getFunction($name)) { + $e = new SyntaxError(sprintf('Unknown "%s" function.', $name), $line, $this->parser->getStream()->getSourceContext()); + $e->addSuggestions($name, array_keys($this->env->getFunctions())); + + throw $e; + } + + if ($function->isDeprecated()) { + $message = sprintf('Twig Function "%s" is deprecated', $function->getName()); + if ($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->getName(), $line); + + @trigger_error($message, \E_USER_DEPRECATED); + } + + return $function->getNodeClass(); + } + + private function getFilterNodeClass(string $name, int $line): string + { + if (!$filter = $this->env->getFilter($name)) { + $e = new SyntaxError(sprintf('Unknown "%s" filter.', $name), $line, $this->parser->getStream()->getSourceContext()); + $e->addSuggestions($name, array_keys($this->env->getFilters())); + + throw $e; + } + + if ($filter->isDeprecated()) { + $message = sprintf('Twig Filter "%s" is deprecated', $filter->getName()); + if ($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->getName(), $line); + + @trigger_error($message, \E_USER_DEPRECATED); + } + + return $filter->getNodeClass(); + } + + // checks that the node only contains "constant" elements + private function checkConstantExpression(Node $node): bool + { + if (!($node instanceof ConstantExpression || $node instanceof ArrayExpression + || $node instanceof NegUnary || $node instanceof PosUnary + )) { + return false; + } + + foreach ($node as $n) { + if (!$this->checkConstantExpression($n)) { + return false; + } + } + + return true; + } +} diff --git a/site/www/_rem/lib/twig/Extension/AbstractExtension.php b/site/www/_rem/lib/twig/Extension/AbstractExtension.php new file mode 100644 index 0000000..422925f --- /dev/null +++ b/site/www/_rem/lib/twig/Extension/AbstractExtension.php @@ -0,0 +1,45 @@ +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 = [$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(): array + { + return [ + new ApplyTokenParser(), + new ForTokenParser(), + new IfTokenParser(), + new ExtendsTokenParser(), + new IncludeTokenParser(), + new BlockTokenParser(), + new UseTokenParser(), + new MacroTokenParser(), + new ImportTokenParser(), + new FromTokenParser(), + new SetTokenParser(), + new FlushTokenParser(), + new DoTokenParser(), + new EmbedTokenParser(), + new WithTokenParser(), + new DeprecatedTokenParser(), + ]; + } + + public function getFilters(): array + { + return [ + // formatting filters + new TwigFilter('date', 'twig_date_format_filter', ['needs_environment' => true]), + new TwigFilter('date_modify', 'twig_date_modify_filter', ['needs_environment' => true]), + new TwigFilter('format', 'twig_sprintf'), + new TwigFilter('replace', 'twig_replace_filter'), + new TwigFilter('number_format', 'twig_number_format_filter', ['needs_environment' => true]), + new TwigFilter('abs', 'abs'), + new TwigFilter('round', 'twig_round'), + + // encoding + new TwigFilter('url_encode', 'twig_urlencode_filter'), + new TwigFilter('json_encode', 'json_encode'), + new TwigFilter('convert_encoding', 'twig_convert_encoding'), + + // string filters + new TwigFilter('title', 'twig_title_string_filter', ['needs_environment' => true]), + new TwigFilter('capitalize', 'twig_capitalize_string_filter', ['needs_environment' => true]), + new TwigFilter('upper', 'twig_upper_filter', ['needs_environment' => true]), + new TwigFilter('lower', 'twig_lower_filter', ['needs_environment' => true]), + new TwigFilter('striptags', 'twig_striptags'), + new TwigFilter('trim', 'twig_trim_filter'), + new TwigFilter('nl2br', 'twig_nl2br', ['pre_escape' => 'html', 'is_safe' => ['html']]), + new TwigFilter('spaceless', 'twig_spaceless', ['is_safe' => ['html']]), + + // array helpers + new TwigFilter('join', 'twig_join_filter'), + new TwigFilter('split', 'twig_split_filter', ['needs_environment' => true]), + new TwigFilter('sort', 'twig_sort_filter'), + new TwigFilter('merge', 'twig_array_merge'), + new TwigFilter('batch', 'twig_array_batch'), + new TwigFilter('column', 'twig_array_column'), + new TwigFilter('filter', 'twig_array_filter', ['needs_environment' => true]), + new TwigFilter('map', 'twig_array_map', ['needs_environment' => true]), + new TwigFilter('reduce', 'twig_array_reduce', ['needs_environment' => true]), + + // string/array filters + new TwigFilter('reverse', 'twig_reverse_filter', ['needs_environment' => true]), + new TwigFilter('length', 'twig_length_filter', ['needs_environment' => true]), + new TwigFilter('slice', 'twig_slice', ['needs_environment' => true]), + new TwigFilter('first', 'twig_first', ['needs_environment' => true]), + new TwigFilter('last', 'twig_last', ['needs_environment' => true]), + + // iteration and runtime + new TwigFilter('default', '_twig_default_filter', ['node_class' => DefaultFilter::class]), + new TwigFilter('keys', 'twig_get_array_keys_filter'), + ]; + } + + public function getFunctions(): array + { + return [ + new TwigFunction('max', 'max'), + new TwigFunction('min', 'min'), + new TwigFunction('range', 'range'), + new TwigFunction('constant', 'twig_constant'), + new TwigFunction('cycle', 'twig_cycle'), + new TwigFunction('random', 'twig_random', ['needs_environment' => true]), + new TwigFunction('date', 'twig_date_converter', ['needs_environment' => true]), + new TwigFunction('include', 'twig_include', ['needs_environment' => true, 'needs_context' => true, 'is_safe' => ['all']]), + new TwigFunction('source', 'twig_source', ['needs_environment' => true, 'is_safe' => ['all']]), + ]; + } + + public function getTests(): array + { + return [ + new TwigTest('even', null, ['node_class' => EvenTest::class]), + new TwigTest('odd', null, ['node_class' => OddTest::class]), + new TwigTest('defined', null, ['node_class' => DefinedTest::class]), + new TwigTest('same as', null, ['node_class' => SameasTest::class, 'one_mandatory_argument' => true]), + new TwigTest('none', null, ['node_class' => NullTest::class]), + new TwigTest('null', null, ['node_class' => NullTest::class]), + new TwigTest('divisible by', null, ['node_class' => DivisiblebyTest::class, 'one_mandatory_argument' => true]), + new TwigTest('constant', null, ['node_class' => ConstantTest::class]), + new TwigTest('empty', 'twig_test_empty'), + new TwigTest('iterable', 'twig_test_iterable'), + ]; + } + + public function getNodeVisitors(): array + { + return [new MacroAutoImportNodeVisitor()]; + } + + public function getOperators(): array + { + return [ + [ + 'not' => ['precedence' => 50, 'class' => NotUnary::class], + '-' => ['precedence' => 500, 'class' => NegUnary::class], + '+' => ['precedence' => 500, 'class' => PosUnary::class], + ], + [ + 'or' => ['precedence' => 10, 'class' => OrBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'and' => ['precedence' => 15, 'class' => AndBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'b-or' => ['precedence' => 16, 'class' => BitwiseOrBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'b-xor' => ['precedence' => 17, 'class' => BitwiseXorBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'b-and' => ['precedence' => 18, 'class' => BitwiseAndBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '==' => ['precedence' => 20, 'class' => EqualBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '!=' => ['precedence' => 20, 'class' => NotEqualBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '<=>' => ['precedence' => 20, 'class' => SpaceshipBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '<' => ['precedence' => 20, 'class' => LessBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '>' => ['precedence' => 20, 'class' => GreaterBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '>=' => ['precedence' => 20, 'class' => GreaterEqualBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '<=' => ['precedence' => 20, 'class' => LessEqualBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'not in' => ['precedence' => 20, 'class' => NotInBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'in' => ['precedence' => 20, 'class' => InBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'matches' => ['precedence' => 20, 'class' => MatchesBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'starts with' => ['precedence' => 20, 'class' => StartsWithBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'ends with' => ['precedence' => 20, 'class' => EndsWithBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '..' => ['precedence' => 25, 'class' => RangeBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '+' => ['precedence' => 30, 'class' => AddBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '-' => ['precedence' => 30, 'class' => SubBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '~' => ['precedence' => 40, 'class' => ConcatBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '*' => ['precedence' => 60, 'class' => MulBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '/' => ['precedence' => 60, 'class' => DivBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '//' => ['precedence' => 60, 'class' => FloorDivBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '%' => ['precedence' => 60, 'class' => ModBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'is' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'is not' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '**' => ['precedence' => 200, 'class' => PowerBinary::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], + '??' => ['precedence' => 300, 'class' => NullCoalesceExpression::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], + ], + ]; + } +} +} + +namespace { + use Twig\Environment; + use Twig\Error\LoaderError; + use Twig\Error\RuntimeError; + use Twig\Extension\CoreExtension; + use Twig\Extension\SandboxExtension; + use Twig\Markup; + use Twig\Source; + use Twig\Template; + use Twig\TemplateWrapper; + +/** + * 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 \Traversable|array|int|float|string $values The values to pick a random item from + * @param int|null $max Maximum value used when $values is an int + * + * @throws RuntimeError 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(Environment $env, $values = null, $max = null) +{ + if (null === $values) { + return null === $max ? mt_rand() : mt_rand(0, (int) $max); + } + + if (\is_int($values) || \is_float($values)) { + if (null === $max) { + if ($values < 0) { + $max = 0; + $min = $values; + } else { + $max = $values; + $min = 0; + } + } else { + $min = $values; + $max = $max; + } + + return mt_rand((int) $min, (int) $max); + } + + if (\is_string($values)) { + if ('' === $values) { + return ''; + } + + $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'); + } + } + } + + if (!twig_test_iterable($values)) { + return $values; + } + + $values = twig_to_array($values); + + if (0 === \count($values)) { + throw new RuntimeError('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 \DateTimeInterface|\DateInterval|string $date A date + * @param string|null $format The target format, null to use the default + * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * + * @return string The formatted date + */ +function twig_date_format_filter(Environment $env, $date, $format = null, $timezone = null) +{ + if (null === $format) { + $formats = $env->getExtension(CoreExtension::class)->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 \DateTimeInterface|string $date A date + * @param string $modifier A modifier string + * + * @return \DateTimeInterface + */ +function twig_date_modify_filter(Environment $env, $date, $modifier) +{ + $date = twig_date_converter($env, $date, false); + + return $date->modify($modifier); +} + +/** + * Returns a formatted string. + * + * @param string|null $format + * @param ...$values + * + * @return string + */ +function twig_sprintf($format, ...$values) +{ + return sprintf($format ?? '', ...$values); +} + +/** + * Converts an input to a \DateTime instance. + * + * {% if date(user.created_at) < date('+2days') %} + * {# do something #} + * {% endif %} + * + * @param \DateTimeInterface|string|null $date A date or null to use the current time + * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * + * @return \DateTimeInterface + */ +function twig_date_converter(Environment $env, $date = null, $timezone = null) +{ + // determine the timezone + if (false !== $timezone) { + if (null === $timezone) { + $timezone = $env->getExtension(CoreExtension::class)->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 \DateTimeInterface) { + $date = clone $date; + if (false !== $timezone) { + $date->setTimezone($timezone); + } + + return $date; + } + + if (null === $date || 'now' === $date) { + if (null === $date) { + $date = 'now'; + } + + return new \DateTime($date, false !== $timezone ? $timezone : $env->getExtension(CoreExtension::class)->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(CoreExtension::class)->getTimezone()); + } + + if (false !== $timezone) { + $date->setTimezone($timezone); + } + + return $date; +} + +/** + * Replaces strings within a string. + * + * @param string|null $str String to replace in + * @param array|\Traversable $from Replace values + * + * @return string + */ +function twig_replace_filter($str, $from) +{ + if (!twig_test_iterable($from)) { + throw new RuntimeError(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 ?? '', twig_to_array($from)); +} + +/** + * Rounds a number. + * + * @param int|float|string|null $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 RuntimeError('The round filter only supports the "common", "ceil", and "floor" methods.'); + } + + $value = (float) $value; + + return $method($value * 10 ** $precision) / 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 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(Environment $env, $number, $decimal = null, $decimalPoint = null, $thousandSep = null) +{ + $defaults = $env->getExtension(CoreExtension::class)->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|null $url A URL or an array of query parameters + * + * @return string The URL encoded value + */ +function twig_urlencode_filter($url) +{ + if (\is_array($url)) { + return http_build_query($url, '', '&', \PHP_QUERY_RFC3986); + } + + return rawurlencode($url ?? ''); +} + +/** + * 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 (!twig_test_iterable($arr1)) { + throw new RuntimeError(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($arr1))); + } + + if (!twig_test_iterable($arr2)) { + throw new RuntimeError(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as second argument.', \gettype($arr2))); + } + + return array_merge(twig_to_array($arr1), twig_to_array($arr2)); +} + +/** + * Slices a variable. + * + * @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(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, null === $length ? -1 : $length), $preserveKeys); + } catch (\OutOfBoundsException $e) { + return []; + } + } + + $item = iterator_to_array($item, $preserveKeys); + } + + if (\is_array($item)) { + return \array_slice($item, $start, $length, $preserveKeys); + } + + return (string) mb_substr((string) $item, $start, $length, $env->getCharset()); +} + +/** + * Returns the first element of the item. + * + * @param mixed $item A variable + * + * @return mixed The first element of the item + */ +function twig_first(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 mixed $item A variable + * + * @return mixed The last element of the item + */ +function twig_last(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 separators between elements are empty strings per default, you can define them with the optional parameters. + * + * {{ [1, 2, 3]|join(', ', ' and ') }} + * {# returns 1, 2 and 3 #} + * + * {{ [1, 2, 3]|join('|') }} + * {# returns 1|2|3 #} + * + * {{ [1, 2, 3]|join }} + * {# returns 123 #} + * + * @param array $value An array + * @param string $glue The separator + * @param string|null $and The separator for the last pair + * + * @return string The concatenated string + */ +function twig_join_filter($value, $glue = '', $and = null) +{ + if (!twig_test_iterable($value)) { + $value = (array) $value; + } + + $value = twig_to_array($value, false); + + if (0 === \count($value)) { + return ''; + } + + if (null === $and || $and === $glue) { + return implode($glue, $value); + } + + if (1 === \count($value)) { + return $value[0]; + } + + return implode($glue, \array_slice($value, 0, -1)).$and.$value[\count($value) - 1]; +} + +/** + * 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 string|null $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(Environment $env, $value, $delimiter, $limit = null) +{ + $value = $value ?? ''; + + if (\strlen($delimiter) > 0) { + return null === $limit ? explode($delimiter, $value) : explode($delimiter, $value, $limit); + } + + if ($limit <= 1) { + return preg_split('/(?getCharset()); + if ($length < $limit) { + return [$value]; + } + + $r = []; + for ($i = 0; $i < $length; $i += $limit) { + $r[] = mb_substr($value, $i, $limit, $env->getCharset()); + } + + return $r; +} + +// The '_default' filter is used internally to avoid using the ternary operator +// which costs a lot for big contexts (before PHP 5.4). So, on average, +// a function call is cheaper. +/** + * @internal + */ +function _twig_default_filter($value, $default = '') +{ + if (twig_test_empty($value)) { + return $default; + } + + return $value; +} + +/** + * Returns the keys for the given array. + * + * It is useful when you want to iterate over the keys of an array: + * + * {% 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(); + } + + $keys = []; + if ($array instanceof \Iterator) { + $array->rewind(); + while ($array->valid()) { + $keys[] = $array->key(); + $array->next(); + } + + return $keys; + } + + foreach ($array as $key => $item) { + $keys[] = $key; + } + + return $keys; + } + + if (!\is_array($array)) { + return []; + } + + return array_keys($array); +} + +/** + * Reverses a variable. + * + * @param array|\Traversable|string|null $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(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); + } + + $string = (string) $item; + + $charset = $env->getCharset(); + + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, 'UTF-8', $charset); + } + + preg_match_all('/./us', $string, $matches); + + $string = implode('', array_reverse($matches[0])); + + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, $charset, 'UTF-8'); + } + + return $string; +} + +/** + * Sorts an array. + * + * @param array|\Traversable $array + * + * @return array + */ +function twig_sort_filter($array, $arrow = null) +{ + if ($array instanceof \Traversable) { + $array = iterator_to_array($array); + } elseif (!\is_array($array)) { + throw new RuntimeError(sprintf('The sort filter only works with arrays or "Traversable", got "%s".', \gettype($array))); + } + + if (null !== $arrow) { + uasort($array, $arrow); + } else { + asort($array); + } + + return $array; +} + +/** + * @internal + */ +function twig_in_filter($value, $compare) +{ + if ($value instanceof Markup) { + $value = (string) $value; + } + if ($compare instanceof Markup) { + $compare = (string) $compare; + } + + if (\is_string($compare)) { + if (\is_string($value) || \is_int($value) || \is_float($value)) { + return '' === $value || false !== strpos($compare, (string) $value); + } + + return false; + } + + if (!is_iterable($compare)) { + return false; + } + + if (\is_object($value) || \is_resource($value)) { + if (!\is_array($compare)) { + foreach ($compare as $item) { + if ($item === $value) { + return true; + } + } + + return false; + } + + return \in_array($value, $compare, true); + } + + foreach ($compare as $item) { + if (0 === twig_compare($value, $item)) { + return true; + } + } + + return false; +} + +/** + * Compares two values using a more strict version of the PHP non-strict comparison operator. + * + * @see https://wiki.php.net/rfc/string_to_number_comparison + * @see https://wiki.php.net/rfc/trailing_whitespace_numerics + * + * @internal + */ +function twig_compare($a, $b) +{ + // int <=> string + if (\is_int($a) && \is_string($b)) { + $bTrim = trim($b, " \t\n\r\v\f"); + if (!is_numeric($bTrim)) { + return (string) $a <=> $b; + } + if ((int) $bTrim == $bTrim) { + return $a <=> (int) $bTrim; + } else { + return (float) $a <=> (float) $bTrim; + } + } + if (\is_string($a) && \is_int($b)) { + $aTrim = trim($a, " \t\n\r\v\f"); + if (!is_numeric($aTrim)) { + return $a <=> (string) $b; + } + if ((int) $aTrim == $aTrim) { + return (int) $aTrim <=> $b; + } else { + return (float) $aTrim <=> (float) $b; + } + } + + // float <=> string + if (\is_float($a) && \is_string($b)) { + if (is_nan($a)) { + return 1; + } + $bTrim = trim($b, " \t\n\r\v\f"); + if (!is_numeric($bTrim)) { + return (string) $a <=> $b; + } + + return $a <=> (float) $bTrim; + } + if (\is_string($a) && \is_float($b)) { + if (is_nan($b)) { + return 1; + } + $aTrim = trim($a, " \t\n\r\v\f"); + if (!is_numeric($aTrim)) { + return $a <=> (string) $b; + } + + return (float) $aTrim <=> $b; + } + + // fallback to <=> + return $a <=> $b; +} + +/** + * Returns a trimmed string. + * + * @param string|null $string + * @param string|null $characterMask + * @param string $side + * + * @return string + * + * @throws RuntimeError 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 RuntimeError('Trimming side must be "left", "right" or "both".'); + } +} + +/** + * Inserts HTML line breaks before all newlines in a string. + * + * @param string|null $string + * + * @return string + */ +function twig_nl2br($string) +{ + return nl2br($string ?? ''); +} + +/** + * Removes whitespaces between HTML tags. + * + * @param string|null $string + * + * @return string + */ +function twig_spaceless($content) +{ + return trim(preg_replace('/>\s+<', $content ?? '')); +} + +/** + * @param string|null $string + * @param string $to + * @param string $from + * + * @return string + */ +function twig_convert_encoding($string, $to, $from) +{ + if (!\function_exists('iconv')) { + throw new RuntimeError('Unable to convert encoding: required function iconv() does not exist. You should install ext-iconv or symfony/polyfill-iconv.'); + } + + return iconv($from, $to, $string ?? ''); +} + +/** + * Returns the length of a variable. + * + * @param mixed $thing A variable + * + * @return int The length of the value + */ +function twig_length_filter(Environment $env, $thing) +{ + if (null === $thing) { + return 0; + } + + if (is_scalar($thing)) { + return mb_strlen($thing, $env->getCharset()); + } + + if ($thing instanceof \Countable || \is_array($thing) || $thing instanceof \SimpleXMLElement) { + return \count($thing); + } + + if ($thing instanceof \Traversable) { + return iterator_count($thing); + } + + if (method_exists($thing, '__toString') && !$thing instanceof \Countable) { + return mb_strlen((string) $thing, $env->getCharset()); + } + + return 1; +} + +/** + * Converts a string to uppercase. + * + * @param string|null $string A string + * + * @return string The uppercased string + */ +function twig_upper_filter(Environment $env, $string) +{ + return mb_strtoupper($string ?? '', $env->getCharset()); +} + +/** + * Converts a string to lowercase. + * + * @param string|null $string A string + * + * @return string The lowercased string + */ +function twig_lower_filter(Environment $env, $string) +{ + return mb_strtolower($string ?? '', $env->getCharset()); +} + +/** + * Strips HTML and PHP tags from a string. + * + * @param string|null $string + * @param string[]|string|null $string + * + * @return string + */ +function twig_striptags($string, $allowable_tags = null) +{ + return strip_tags($string ?? '', $allowable_tags); +} + +/** + * Returns a titlecased string. + * + * @param string|null $string A string + * + * @return string The titlecased string + */ +function twig_title_string_filter(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 string|null $string A string + * + * @return string The capitalized string + */ +function twig_capitalize_string_filter(Environment $env, $string) +{ + $charset = $env->getCharset(); + + return mb_strtoupper(mb_substr($string ?? '', 0, 1, $charset), $charset).mb_strtolower(mb_substr($string ?? '', 1, null, $charset), $charset); +} + +/** + * @internal + */ +function twig_call_macro(Template $template, string $method, array $args, int $lineno, array $context, Source $source) +{ + if (!method_exists($template, $method)) { + $parent = $template; + while ($parent = $parent->getParent($context)) { + if (method_exists($parent, $method)) { + return $parent->$method(...$args); + } + } + + throw new RuntimeError(sprintf('Macro "%s" is not defined in template "%s".', substr($method, \strlen('macro_')), $template->getTemplateName()), $lineno, $source); + } + + return $template->$method(...$args); +} + +/** + * @internal + */ +function twig_ensure_traversable($seq) +{ + if ($seq instanceof \Traversable || \is_array($seq)) { + return $seq; + } + + return []; +} + +/** + * @internal + */ +function twig_to_array($seq, $preserveKeys = true) +{ + if ($seq instanceof \Traversable) { + return iterator_to_array($seq, $preserveKeys); + } + + if (!\is_array($seq)) { + return $seq; + } + + return $preserveKeys ? $seq : array_values($seq); +} + +/** + * 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 ($value instanceof \Traversable) { + return !iterator_count($value); + } + + if (\is_object($value) && method_exists($value, '__toString')) { + return '' === (string) $value; + } + + return '' === $value || false === $value || null === $value || [] === $value; +} + +/** + * Checks if a variable is traversable. + * + * {# evaluates to true if the foo variable is an array or a traversable object #} + * {% if foo is iterable %} + * {# ... #} + * {% 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 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(Environment $env, $context, $template, $variables = [], $withContext = true, $ignoreMissing = false, $sandboxed = false) +{ + $alreadySandboxed = false; + $sandbox = null; + if ($withContext) { + $variables = array_merge($context, $variables); + } + + if ($isSandboxed = $sandboxed && $env->hasExtension(SandboxExtension::class)) { + $sandbox = $env->getExtension(SandboxExtension::class); + if (!$alreadySandboxed = $sandbox->isSandboxed()) { + $sandbox->enableSandbox(); + } + + foreach ((\is_array($template) ? $template : [$template]) as $name) { + // if a Template instance is passed, it might have been instantiated outside of a sandbox, check security + if ($name instanceof TemplateWrapper || $name instanceof Template) { + $name->unwrap()->checkSecurity(); + } + } + } + + try { + $loaded = null; + try { + $loaded = $env->resolveTemplate($template); + } catch (LoaderError $e) { + if (!$ignoreMissing) { + throw $e; + } + } + + return $loaded ? $loaded->render($variables) : ''; + } finally { + if ($isSandboxed && !$alreadySandboxed) { + $sandbox->disableSandbox(); + } + } +} + +/** + * Returns a template content without rendering it. + * + * @param string $name The template name + * @param bool $ignoreMissing Whether to ignore missing templates or not + * + * @return string The template source + */ +function twig_source(Environment $env, $name, $ignoreMissing = false) +{ + $loader = $env->getLoader(); + try { + return $loader->getSourceContext($name)->getCode(); + } catch (LoaderError $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 object|null $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 object|null $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, $preserveKeys = true) +{ + if (!twig_test_iterable($items)) { + throw new RuntimeError(sprintf('The "batch" filter expects an array or "Traversable", got "%s".', \is_object($items) ? \get_class($items) : \gettype($items))); + } + + $size = ceil($size); + + $result = array_chunk(twig_to_array($items, $preserveKeys), $size, $preserveKeys); + + if (null !== $fill && $result) { + $last = \count($result) - 1; + if ($fillCount = $size - \count($result[$last])) { + for ($i = 0; $i < $fillCount; ++$i) { + $result[$last][] = $fill; + } + } + } + + return $result; +} + +/** + * 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 + * @param int $lineno The template line where the attribute was called + * + * @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 RuntimeError if the attribute does not exist and Twig is running in strict mode and $isDefinedTest is false + * + * @internal + */ +function twig_get_attribute(Environment $env, Source $source, $object, $item, array $arguments = [], $type = /* Template::ANY_CALL */ 'any', $isDefinedTest = false, $ignoreStrictCheck = false, $sandboxed = false, int $lineno = -1) +{ + // array + if (/* Template::METHOD_CALL */ 'method' !== $type) { + $arrayItem = \is_bool($item) || \is_float($item) ? (int) $item : $item; + + if (((\is_array($object) || $object instanceof \ArrayObject) && (isset($object[$arrayItem]) || \array_key_exists($arrayItem, (array) $object))) + || ($object instanceof ArrayAccess && isset($object[$arrayItem])) + ) { + if ($isDefinedTest) { + return true; + } + + return $object[$arrayItem]; + } + + if (/* Template::ARRAY_CALL */ 'array' === $type || !\is_object($object)) { + if ($isDefinedTest) { + return false; + } + + if ($ignoreStrictCheck || !$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 (/* Template::ARRAY_CALL */ 'array' === $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 RuntimeError($message, $lineno, $source); + } + } + + if (!\is_object($object)) { + if ($isDefinedTest) { + return false; + } + + if ($ignoreStrictCheck || !$env->isStrictVariables()) { + return; + } + + if (null === $object) { + $message = sprintf('Impossible to invoke a method ("%s") on a null variable.', $item); + } elseif (\is_array($object)) { + $message = sprintf('Impossible to invoke a method ("%s") on an array.', $item); + } else { + $message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); + } + + throw new RuntimeError($message, $lineno, $source); + } + + if ($object instanceof Template) { + throw new RuntimeError('Accessing \Twig\Template attributes is forbidden.', $lineno, $source); + } + + // object property + if (/* Template::METHOD_CALL */ 'method' !== $type) { + if (isset($object->$item) || \array_key_exists((string) $item, (array) $object)) { + if ($isDefinedTest) { + return true; + } + + if ($sandboxed) { + $env->getExtension(SandboxExtension::class)->checkPropertyAllowed($object, $item, $lineno, $source); + } + + return $object->$item; + } + } + + static $cache = []; + + $class = \get_class($object); + + // object method + // precedence: getXxx() > isXxx() > hasXxx() + if (!isset($cache[$class])) { + $methods = get_class_methods($object); + sort($methods); + $lcMethods = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, $methods); + $classCache = []; + foreach ($methods as $i => $method) { + $classCache[$method] = $method; + $classCache[$lcName = $lcMethods[$i]] = $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); + } elseif ('h' === $lcName[0] && 0 === strpos($lcName, 'has')) { + $name = substr($method, 3); + $lcName = substr($lcName, 3); + if (\in_array('is'.$lcName, $lcMethods)) { + continue; + } + } else { + continue; + } + + // skip get() and is() methods (in which case, $name is empty) + if ($name) { + if (!isset($classCache[$name])) { + $classCache[$name] = $method; + } + + if (!isset($classCache[$lcName])) { + $classCache[$lcName] = $method; + } + } + } + $cache[$class] = $classCache; + } + + $call = false; + if (isset($cache[$class][$item])) { + $method = $cache[$class][$item]; + } elseif (isset($cache[$class][$lcItem = strtr($item, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')])) { + $method = $cache[$class][$lcItem]; + } elseif (isset($cache[$class]['__call'])) { + $method = $item; + $call = true; + } else { + if ($isDefinedTest) { + return false; + } + + if ($ignoreStrictCheck || !$env->isStrictVariables()) { + return; + } + + throw new RuntimeError(sprintf('Neither the property "%1$s" nor one of the methods "%1$s()", "get%1$s()"/"is%1$s()"/"has%1$s()" or "__call()" exist and have public access in class "%2$s".', $item, $class), $lineno, $source); + } + + if ($isDefinedTest) { + return true; + } + + if ($sandboxed) { + $env->getExtension(SandboxExtension::class)->checkMethodAllowed($object, $method, $lineno, $source); + } + + // 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 = $object->$method(...$arguments); + } catch (\BadMethodCallException $e) { + if ($call && ($ignoreStrictCheck || !$env->isStrictVariables())) { + return; + } + throw $e; + } + + return $ret; +} + +/** + * Returns the values from a single column in the input array. + * + *

    + *  {% set items = [{ 'fruit' : 'apple'}, {'fruit' : 'orange' }] %}
    + *
    + *  {% set fruits = items|column('fruit') %}
    + *
    + *  {# fruits now contains ['apple', 'orange'] #}
    + * 
    + * + * @param array|Traversable $array An array + * @param mixed $name The column name + * @param mixed $index The column to use as the index/keys for the returned array + * + * @return array The array of values + */ +function twig_array_column($array, $name, $index = null): array +{ + if ($array instanceof Traversable) { + $array = iterator_to_array($array); + } elseif (!\is_array($array)) { + throw new RuntimeError(sprintf('The column filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($array))); + } + + return array_column($array, $name, $index); +} + +function twig_array_filter(Environment $env, $array, $arrow) +{ + if (!twig_test_iterable($array)) { + throw new RuntimeError(sprintf('The "filter" filter expects an array or "Traversable", got "%s".', \is_object($array) ? \get_class($array) : \gettype($array))); + } + + if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { + throw new RuntimeError('The callable passed to "filter" filter must be a Closure in sandbox mode.'); + } + + if (\is_array($array)) { + return array_filter($array, $arrow, \ARRAY_FILTER_USE_BOTH); + } + + // the IteratorIterator wrapping is needed as some internal PHP classes are \Traversable but do not implement \Iterator + return new \CallbackFilterIterator(new \IteratorIterator($array), $arrow); +} + +function twig_array_map(Environment $env, $array, $arrow) +{ + if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { + throw new RuntimeError('The callable passed to the "map" filter must be a Closure in sandbox mode.'); + } + + $r = []; + foreach ($array as $k => $v) { + $r[$k] = $arrow($v, $k); + } + + return $r; +} + +function twig_array_reduce(Environment $env, $array, $arrow, $initial = null) +{ + if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { + throw new RuntimeError('The callable passed to the "reduce" filter must be a Closure in sandbox mode.'); + } + + if (!\is_array($array)) { + if (!$array instanceof \Traversable) { + throw new RuntimeError(sprintf('The "reduce" filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($array))); + } + + $array = iterator_to_array($array); + } + + return array_reduce($array, $arrow, $initial); +} +} diff --git a/site/www/_rem/lib/twig/Extension/DebugExtension.php b/site/www/_rem/lib/twig/Extension/DebugExtension.php new file mode 100644 index 0000000..bfb23d7 --- /dev/null +++ b/site/www/_rem/lib/twig/Extension/DebugExtension.php @@ -0,0 +1,64 @@ + $isDumpOutputHtmlSafe ? ['html'] : [], 'needs_context' => true, 'needs_environment' => true, 'is_variadic' => true]), + ]; + } +} +} + +namespace { +use Twig\Environment; +use Twig\Template; +use Twig\TemplateWrapper; + +function twig_var_dump(Environment $env, $context, ...$vars) +{ + if (!$env->isDebug()) { + return; + } + + ob_start(); + + if (!$vars) { + $vars = []; + foreach ($context as $key => $value) { + if (!$value instanceof Template && !$value instanceof TemplateWrapper) { + $vars[$key] = $value; + } + } + + var_dump($vars); + } else { + var_dump(...$vars); + } + + return ob_get_clean(); +} +} diff --git a/site/www/_rem/lib/twig/Extension/EscaperExtension.php b/site/www/_rem/lib/twig/Extension/EscaperExtension.php new file mode 100644 index 0000000..72795da --- /dev/null +++ b/site/www/_rem/lib/twig/Extension/EscaperExtension.php @@ -0,0 +1,421 @@ +setDefaultStrategy($defaultStrategy); + } + + public function getTokenParsers(): array + { + return [new AutoEscapeTokenParser()]; + } + + public function getNodeVisitors(): array + { + return [new EscaperNodeVisitor()]; + } + + public function getFilters(): array + { + return [ + new TwigFilter('escape', 'twig_escape_filter', ['needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe']), + new TwigFilter('e', 'twig_escape_filter', ['needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe']), + new TwigFilter('raw', 'twig_raw_filter', ['is_safe' => ['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): void + { + if ('name' === $defaultStrategy) { + $defaultStrategy = [FileExtensionEscapingStrategy::class, '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(string $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; + } + + /** + * Defines a new escaper to be used via the escape filter. + * + * @param string $strategy The strategy name that should be used as a strategy in the escape call + * @param callable $callable A valid PHP callable + */ + public function setEscaper($strategy, callable $callable) + { + $this->escapers[$strategy] = $callable; + } + + /** + * Gets all defined escapers. + * + * @return callable[] An array of escapers + */ + public function getEscapers() + { + return $this->escapers; + } + + public function setSafeClasses(array $safeClasses = []) + { + $this->safeClasses = []; + $this->safeLookup = []; + foreach ($safeClasses as $class => $strategies) { + $this->addSafeClass($class, $strategies); + } + } + + public function addSafeClass(string $class, array $strategies) + { + $class = ltrim($class, '\\'); + if (!isset($this->safeClasses[$class])) { + $this->safeClasses[$class] = []; + } + $this->safeClasses[$class] = array_merge($this->safeClasses[$class], $strategies); + + foreach ($strategies as $strategy) { + $this->safeLookup[$strategy][$class] = true; + } + } +} +} + +namespace { +use Twig\Environment; +use Twig\Error\RuntimeError; +use Twig\Extension\EscaperExtension; +use Twig\Markup; +use Twig\Node\Expression\ConstantExpression; +use Twig\Node\Node; + +/** + * Marks a variable as being safe. + * + * @param string $string A PHP variable + */ +function twig_raw_filter($string) +{ + return $string; +} + +/** + * Escapes a string. + * + * @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(Environment $env, $string, $strategy = 'html', $charset = null, $autoescape = false) +{ + if ($autoescape && $string instanceof Markup) { + return $string; + } + + if (!\is_string($string)) { + if (\is_object($string) && method_exists($string, '__toString')) { + if ($autoescape) { + $c = \get_class($string); + $ext = $env->getExtension(EscaperExtension::class); + if (!isset($ext->safeClasses[$c])) { + $ext->safeClasses[$c] = []; + foreach (class_parents($string) + class_implements($string) as $class) { + if (isset($ext->safeClasses[$class])) { + $ext->safeClasses[$c] = array_unique(array_merge($ext->safeClasses[$c], $ext->safeClasses[$class])); + foreach ($ext->safeClasses[$class] as $s) { + $ext->safeLookup[$s][$c] = true; + } + } + } + } + if (isset($ext->safeLookup[$strategy][$c]) || isset($ext->safeLookup['all'][$c])) { + return (string) $string; + } + } + + $string = (string) $string; + } elseif (\in_array($strategy, ['html', 'js', 'css', 'html_attr', 'url'])) { + return $string; + } + } + + if ('' === $string) { + return ''; + } + + if (null === $charset) { + $charset = $env->getCharset(); + } + + switch ($strategy) { + case 'html': + // see https://www.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 = [ + '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 iconv('UTF-8', $charset, $string); + + case 'js': + // escape all non-alphanumeric characters + // into their \x or \uHHHH representations + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, 'UTF-8', $charset); + } + + if (!preg_match('//u', $string)) { + throw new RuntimeError('The string to escape is not a valid UTF-8 string.'); + } + + $string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su', function ($matches) { + $char = $matches[0]; + + /* + * A few characters have short escape sequences in JSON and JavaScript. + * Escape sequences supported only by JavaScript, not JSON, are omitted. + * \" is also supported but omitted, because the resulting string is not HTML safe. + */ + static $shortMap = [ + '\\' => '\\\\', + '/' => '\\/', + "\x08" => '\b', + "\x0C" => '\f', + "\x0A" => '\n', + "\x0D" => '\r', + "\x09" => '\t', + ]; + + if (isset($shortMap[$char])) { + return $shortMap[$char]; + } + + $codepoint = mb_ord($char, 'UTF-8'); + if (0x10000 > $codepoint) { + return sprintf('\u%04X', $codepoint); + } + + // Split characters outside the BMP into surrogate pairs + // https://tools.ietf.org/html/rfc2781.html#section-2.1 + $u = $codepoint - 0x10000; + $high = 0xD800 | ($u >> 10); + $low = 0xDC00 | ($u & 0x3FF); + + return sprintf('\u%04X\u%04X', $high, $low); + }, $string); + + if ('UTF-8' !== $charset) { + $string = iconv('UTF-8', $charset, $string); + } + + return $string; + + case 'css': + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, 'UTF-8', $charset); + } + + if (!preg_match('//u', $string)) { + throw new RuntimeError('The string to escape is not a valid UTF-8 string.'); + } + + $string = preg_replace_callback('#[^a-zA-Z0-9]#Su', function ($matches) { + $char = $matches[0]; + + return sprintf('\\%X ', 1 === \strlen($char) ? \ord($char) : mb_ord($char, 'UTF-8')); + }, $string); + + if ('UTF-8' !== $charset) { + $string = iconv('UTF-8', $charset, $string); + } + + return $string; + + case 'html_attr': + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, 'UTF-8', $charset); + } + + if (!preg_match('//u', $string)) { + throw new RuntimeError('The string to escape is not a valid UTF-8 string.'); + } + + $string = preg_replace_callback('#[^a-zA-Z0-9,\.\-_]#Su', function ($matches) { + /** + * This function is adapted from code coming from Zend Framework. + * + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (https://www.zend.com) + * @license https://framework.zend.com/license/new-bsd New BSD License + */ + $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 && "\t" != $chr && "\n" != $chr && "\r" != $chr) || ($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 (1 === \strlen($chr)) { + /* + * 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 = [ + 34 => '"', /* quotation mark */ + 38 => '&', /* ampersand */ + 60 => '<', /* less-than sign */ + 62 => '>', /* greater-than sign */ + ]; + + if (isset($entityMap[$ord])) { + return $entityMap[$ord]; + } + + return sprintf('&#x%02X;', $ord); + } + + /* + * Per OWASP recommendations, we'll use hex entities for any other + * characters where a named entity does not exist. + */ + return sprintf('&#x%04X;', mb_ord($chr, 'UTF-8')); + }, $string); + + if ('UTF-8' !== $charset) { + $string = iconv('UTF-8', $charset, $string); + } + + return $string; + + case 'url': + return rawurlencode($string); + + default: + static $escapers; + + if (null === $escapers) { + $escapers = $env->getExtension(EscaperExtension::class)->getEscapers(); + } + + if (isset($escapers[$strategy])) { + return $escapers[$strategy]($env, $string, $charset); + } + + $validStrategies = implode(', ', array_merge(['html', 'js', 'url', 'css', 'html_attr'], array_keys($escapers))); + + throw new RuntimeError(sprintf('Invalid escaping strategy "%s" (valid ones: %s).', $strategy, $validStrategies)); + } +} + +/** + * @internal + */ +function twig_escape_filter_is_safe(Node $filterArgs) +{ + foreach ($filterArgs as $arg) { + if ($arg instanceof ConstantExpression) { + return [$arg->getAttribute('value')]; + } + + return []; + } + + return ['html']; +} +} diff --git a/site/www/_rem/lib/twig/Extension/ExtensionInterface.php b/site/www/_rem/lib/twig/Extension/ExtensionInterface.php new file mode 100644 index 0000000..75fa237 --- /dev/null +++ b/site/www/_rem/lib/twig/Extension/ExtensionInterface.php @@ -0,0 +1,68 @@ + + */ +interface ExtensionInterface +{ + /** + * Returns the token parser instances to add to the existing list. + * + * @return TokenParserInterface[] + */ + public function getTokenParsers(); + + /** + * Returns the node visitor instances to add to the existing list. + * + * @return NodeVisitorInterface[] + */ + public function getNodeVisitors(); + + /** + * Returns a list of filters to add to the existing list. + * + * @return TwigFilter[] + */ + public function getFilters(); + + /** + * Returns a list of tests to add to the existing list. + * + * @return TwigTest[] + */ + public function getTests(); + + /** + * Returns a list of functions to add to the existing list. + * + * @return TwigFunction[] + */ + 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(); +} diff --git a/site/www/_rem/lib/twig/Extension/GlobalsInterface.php b/site/www/_rem/lib/twig/Extension/GlobalsInterface.php new file mode 100644 index 0000000..ec0c682 --- /dev/null +++ b/site/www/_rem/lib/twig/Extension/GlobalsInterface.php @@ -0,0 +1,25 @@ + + */ +interface GlobalsInterface +{ + public function getGlobals(): array; +} diff --git a/site/www/_rem/lib/twig/Extension/OptimizerExtension.php b/site/www/_rem/lib/twig/Extension/OptimizerExtension.php new file mode 100644 index 0000000..965bfdb --- /dev/null +++ b/site/www/_rem/lib/twig/Extension/OptimizerExtension.php @@ -0,0 +1,29 @@ +optimizers = $optimizers; + } + + public function getNodeVisitors(): array + { + return [new OptimizerNodeVisitor($this->optimizers)]; + } +} diff --git a/site/www/_rem/lib/twig/Extension/ProfilerExtension.php b/site/www/_rem/lib/twig/Extension/ProfilerExtension.php new file mode 100644 index 0000000..43e4a44 --- /dev/null +++ b/site/www/_rem/lib/twig/Extension/ProfilerExtension.php @@ -0,0 +1,52 @@ +actives[] = $profile; + } + + /** + * @return void + */ + public function enter(Profile $profile) + { + $this->actives[0]->addProfile($profile); + array_unshift($this->actives, $profile); + } + + /** + * @return void + */ + public function leave(Profile $profile) + { + $profile->leave(); + array_shift($this->actives); + + if (1 === \count($this->actives)) { + $this->actives[0]->leave(); + } + } + + public function getNodeVisitors(): array + { + return [new ProfilerNodeVisitor(static::class)]; + } +} diff --git a/site/www/_rem/lib/twig/Extension/RuntimeExtensionInterface.php b/site/www/_rem/lib/twig/Extension/RuntimeExtensionInterface.php new file mode 100644 index 0000000..63bc3b1 --- /dev/null +++ b/site/www/_rem/lib/twig/Extension/RuntimeExtensionInterface.php @@ -0,0 +1,19 @@ + + */ +interface RuntimeExtensionInterface +{ +} diff --git a/site/www/_rem/lib/twig/Extension/SandboxExtension.php b/site/www/_rem/lib/twig/Extension/SandboxExtension.php new file mode 100644 index 0000000..0a28cab --- /dev/null +++ b/site/www/_rem/lib/twig/Extension/SandboxExtension.php @@ -0,0 +1,123 @@ +policy = $policy; + $this->sandboxedGlobally = $sandboxed; + } + + public function getTokenParsers(): array + { + return [new SandboxTokenParser()]; + } + + public function getNodeVisitors(): array + { + return [new SandboxNodeVisitor()]; + } + + public function enableSandbox(): void + { + $this->sandboxed = true; + } + + public function disableSandbox(): void + { + $this->sandboxed = false; + } + + public function isSandboxed(): bool + { + return $this->sandboxedGlobally || $this->sandboxed; + } + + public function isSandboxedGlobally(): bool + { + return $this->sandboxedGlobally; + } + + public function setSecurityPolicy(SecurityPolicyInterface $policy) + { + $this->policy = $policy; + } + + public function getSecurityPolicy(): SecurityPolicyInterface + { + return $this->policy; + } + + public function checkSecurity($tags, $filters, $functions): void + { + if ($this->isSandboxed()) { + $this->policy->checkSecurity($tags, $filters, $functions); + } + } + + public function checkMethodAllowed($obj, $method, int $lineno = -1, Source $source = null): void + { + if ($this->isSandboxed()) { + try { + $this->policy->checkMethodAllowed($obj, $method); + } catch (SecurityNotAllowedMethodError $e) { + $e->setSourceContext($source); + $e->setTemplateLine($lineno); + + throw $e; + } + } + } + + public function checkPropertyAllowed($obj, $method, int $lineno = -1, Source $source = null): void + { + if ($this->isSandboxed()) { + try { + $this->policy->checkPropertyAllowed($obj, $method); + } catch (SecurityNotAllowedPropertyError $e) { + $e->setSourceContext($source); + $e->setTemplateLine($lineno); + + throw $e; + } + } + } + + public function ensureToStringAllowed($obj, int $lineno = -1, Source $source = null) + { + if ($this->isSandboxed() && \is_object($obj) && method_exists($obj, '__toString')) { + try { + $this->policy->checkMethodAllowed($obj, '__toString'); + } catch (SecurityNotAllowedMethodError $e) { + $e->setSourceContext($source); + $e->setTemplateLine($lineno); + + throw $e; + } + } + + return $obj; + } +} diff --git a/site/www/_rem/lib/twig/Extension/StagingExtension.php b/site/www/_rem/lib/twig/Extension/StagingExtension.php new file mode 100644 index 0000000..0ea47f9 --- /dev/null +++ b/site/www/_rem/lib/twig/Extension/StagingExtension.php @@ -0,0 +1,100 @@ + + * + * @internal + */ +final class StagingExtension extends AbstractExtension +{ + private $functions = []; + private $filters = []; + private $visitors = []; + private $tokenParsers = []; + private $tests = []; + + public function addFunction(TwigFunction $function): void + { + if (isset($this->functions[$function->getName()])) { + throw new \LogicException(sprintf('Function "%s" is already registered.', $function->getName())); + } + + $this->functions[$function->getName()] = $function; + } + + public function getFunctions(): array + { + return $this->functions; + } + + public function addFilter(TwigFilter $filter): void + { + if (isset($this->filters[$filter->getName()])) { + throw new \LogicException(sprintf('Filter "%s" is already registered.', $filter->getName())); + } + + $this->filters[$filter->getName()] = $filter; + } + + public function getFilters(): array + { + return $this->filters; + } + + public function addNodeVisitor(NodeVisitorInterface $visitor): void + { + $this->visitors[] = $visitor; + } + + public function getNodeVisitors(): array + { + return $this->visitors; + } + + public function addTokenParser(TokenParserInterface $parser): void + { + if (isset($this->tokenParsers[$parser->getTag()])) { + throw new \LogicException(sprintf('Tag "%s" is already registered.', $parser->getTag())); + } + + $this->tokenParsers[$parser->getTag()] = $parser; + } + + public function getTokenParsers(): array + { + return $this->tokenParsers; + } + + public function addTest(TwigTest $test): void + { + if (isset($this->tests[$test->getName()])) { + throw new \LogicException(sprintf('Test "%s" is already registered.', $test->getName())); + } + + $this->tests[$test->getName()] = $test; + } + + public function getTests(): array + { + return $this->tests; + } +} diff --git a/site/www/_rem/lib/twig/Extension/StringLoaderExtension.php b/site/www/_rem/lib/twig/Extension/StringLoaderExtension.php new file mode 100644 index 0000000..7b45147 --- /dev/null +++ b/site/www/_rem/lib/twig/Extension/StringLoaderExtension.php @@ -0,0 +1,42 @@ + true]), + ]; + } +} +} + +namespace { +use Twig\Environment; +use Twig\TemplateWrapper; + +/** + * Loads a template from a string. + * + * {{ include(template_from_string("Hello {{ name }}")) }} + * + * @param string $template A template as a string or object implementing __toString() + * @param string $name An optional name of the template to be used in error messages + */ +function twig_template_from_string(Environment $env, $template, string $name = null): TemplateWrapper +{ + return $env->createTemplate((string) $template, $name); +} +} diff --git a/site/www/_rem/lib/twig/ExtensionSet.php b/site/www/_rem/lib/twig/ExtensionSet.php new file mode 100644 index 0000000..36e5bbc --- /dev/null +++ b/site/www/_rem/lib/twig/ExtensionSet.php @@ -0,0 +1,463 @@ + + * + * @internal + */ +final class ExtensionSet +{ + private $extensions; + private $initialized = false; + private $runtimeInitialized = false; + private $staging; + private $parsers; + private $visitors; + private $filters; + private $tests; + private $functions; + private $unaryOperators; + private $binaryOperators; + private $globals; + private $functionCallbacks = []; + private $filterCallbacks = []; + private $parserCallbacks = []; + private $lastModified = 0; + + public function __construct() + { + $this->staging = new StagingExtension(); + } + + public function initRuntime() + { + $this->runtimeInitialized = true; + } + + public function hasExtension(string $class): bool + { + return isset($this->extensions[ltrim($class, '\\')]); + } + + public function getExtension(string $class): ExtensionInterface + { + $class = ltrim($class, '\\'); + + if (!isset($this->extensions[$class])) { + throw new RuntimeError(sprintf('The "%s" extension is not enabled.', $class)); + } + + return $this->extensions[$class]; + } + + /** + * @param ExtensionInterface[] $extensions + */ + public function setExtensions(array $extensions): void + { + foreach ($extensions as $extension) { + $this->addExtension($extension); + } + } + + /** + * @return ExtensionInterface[] + */ + public function getExtensions(): array + { + return $this->extensions; + } + + public function getSignature(): string + { + return json_encode(array_keys($this->extensions)); + } + + public function isInitialized(): bool + { + return $this->initialized || $this->runtimeInitialized; + } + + public function getLastModified(): int + { + if (0 !== $this->lastModified) { + return $this->lastModified; + } + + foreach ($this->extensions as $extension) { + $r = new \ReflectionObject($extension); + if (is_file($r->getFileName()) && ($extensionTime = filemtime($r->getFileName())) > $this->lastModified) { + $this->lastModified = $extensionTime; + } + } + + return $this->lastModified; + } + + public function addExtension(ExtensionInterface $extension): void + { + $class = \get_class($extension); + + if ($this->initialized) { + throw new \LogicException(sprintf('Unable to register extension "%s" as extensions have already been initialized.', $class)); + } + + if (isset($this->extensions[$class])) { + throw new \LogicException(sprintf('Unable to register extension "%s" as it is already registered.', $class)); + } + + $this->extensions[$class] = $extension; + } + + public function addFunction(TwigFunction $function): void + { + if ($this->initialized) { + throw new \LogicException(sprintf('Unable to add function "%s" as extensions have already been initialized.', $function->getName())); + } + + $this->staging->addFunction($function); + } + + /** + * @return TwigFunction[] + */ + public function getFunctions(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->functions; + } + + public function getFunction(string $name): ?TwigFunction + { + if (!$this->initialized) { + $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 && preg_match('#^'.$pattern.'$#', $name, $matches)) { + array_shift($matches); + $function->setArguments($matches); + + return $function; + } + } + + foreach ($this->functionCallbacks as $callback) { + if (false !== $function = $callback($name)) { + return $function; + } + } + + return null; + } + + public function registerUndefinedFunctionCallback(callable $callable): void + { + $this->functionCallbacks[] = $callable; + } + + public function addFilter(TwigFilter $filter): void + { + if ($this->initialized) { + throw new \LogicException(sprintf('Unable to add filter "%s" as extensions have already been initialized.', $filter->getName())); + } + + $this->staging->addFilter($filter); + } + + /** + * @return TwigFilter[] + */ + public function getFilters(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->filters; + } + + public function getFilter(string $name): ?TwigFilter + { + if (!$this->initialized) { + $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 && preg_match('#^'.$pattern.'$#', $name, $matches)) { + array_shift($matches); + $filter->setArguments($matches); + + return $filter; + } + } + + foreach ($this->filterCallbacks as $callback) { + if (false !== $filter = $callback($name)) { + return $filter; + } + } + + return null; + } + + public function registerUndefinedFilterCallback(callable $callable): void + { + $this->filterCallbacks[] = $callable; + } + + public function addNodeVisitor(NodeVisitorInterface $visitor): void + { + if ($this->initialized) { + throw new \LogicException('Unable to add a node visitor as extensions have already been initialized.'); + } + + $this->staging->addNodeVisitor($visitor); + } + + /** + * @return NodeVisitorInterface[] + */ + public function getNodeVisitors(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->visitors; + } + + public function addTokenParser(TokenParserInterface $parser): void + { + if ($this->initialized) { + throw new \LogicException('Unable to add a token parser as extensions have already been initialized.'); + } + + $this->staging->addTokenParser($parser); + } + + /** + * @return TokenParserInterface[] + */ + public function getTokenParsers(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->parsers; + } + + public function getTokenParser(string $name): ?TokenParserInterface + { + if (!$this->initialized) { + $this->initExtensions(); + } + + if (isset($this->parsers[$name])) { + return $this->parsers[$name]; + } + + foreach ($this->parserCallbacks as $callback) { + if (false !== $parser = $callback($name)) { + return $parser; + } + } + + return null; + } + + public function registerUndefinedTokenParserCallback(callable $callable): void + { + $this->parserCallbacks[] = $callable; + } + + public function getGlobals(): array + { + if (null !== $this->globals) { + return $this->globals; + } + + $globals = []; + foreach ($this->extensions as $extension) { + if (!$extension instanceof GlobalsInterface) { + continue; + } + + $extGlobals = $extension->getGlobals(); + if (!\is_array($extGlobals)) { + throw new \UnexpectedValueException(sprintf('"%s::getGlobals()" must return an array of globals.', \get_class($extension))); + } + + $globals = array_merge($globals, $extGlobals); + } + + if ($this->initialized) { + $this->globals = $globals; + } + + return $globals; + } + + public function addTest(TwigTest $test): void + { + if ($this->initialized) { + throw new \LogicException(sprintf('Unable to add test "%s" as extensions have already been initialized.', $test->getName())); + } + + $this->staging->addTest($test); + } + + /** + * @return TwigTest[] + */ + public function getTests(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->tests; + } + + public function getTest(string $name): ?TwigTest + { + if (!$this->initialized) { + $this->initExtensions(); + } + + if (isset($this->tests[$name])) { + return $this->tests[$name]; + } + + foreach ($this->tests as $pattern => $test) { + $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); + + if ($count) { + if (preg_match('#^'.$pattern.'$#', $name, $matches)) { + array_shift($matches); + $test->setArguments($matches); + + return $test; + } + } + } + + return null; + } + + public function getUnaryOperators(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->unaryOperators; + } + + public function getBinaryOperators(): array + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->binaryOperators; + } + + private function initExtensions(): void + { + $this->parsers = []; + $this->filters = []; + $this->functions = []; + $this->tests = []; + $this->visitors = []; + $this->unaryOperators = []; + $this->binaryOperators = []; + + 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->initialized = true; + } + + private function initExtension(ExtensionInterface $extension): void + { + // filters + foreach ($extension->getFilters() as $filter) { + $this->filters[$filter->getName()] = $filter; + } + + // functions + foreach ($extension->getFunctions() as $function) { + $this->functions[$function->getName()] = $function; + } + + // tests + foreach ($extension->getTests() as $test) { + $this->tests[$test->getName()] = $test; + } + + // token parsers + foreach ($extension->getTokenParsers() as $parser) { + if (!$parser instanceof TokenParserInterface) { + throw new \LogicException('getTokenParsers() must return an array of \Twig\TokenParser\TokenParserInterface.'); + } + + $this->parsers[$parser->getTag()] = $parser; + } + + // 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]); + } + } +} diff --git a/site/www/_rem/lib/twig/FileExtensionEscapingStrategy.php b/site/www/_rem/lib/twig/FileExtensionEscapingStrategy.php new file mode 100644 index 0000000..65198bb --- /dev/null +++ b/site/www/_rem/lib/twig/FileExtensionEscapingStrategy.php @@ -0,0 +1,60 @@ + + */ +class 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(string $name) + { + if (\in_array(substr($name, -1), ['/', '\\'])) { + 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/site/www/_rem/lib/twig/Lexer.php b/site/www/_rem/lib/twig/Lexer.php new file mode 100644 index 0000000..9ff028c --- /dev/null +++ b/site/www/_rem/lib/twig/Lexer.php @@ -0,0 +1,501 @@ + + */ +class Lexer +{ + private $tokens; + private $code; + private $cursor; + private $lineno; + private $end; + private $state; + private $states; + private $brackets; + private $env; + private $source; + private $options; + private $regexes; + private $position; + private $positions; + private $currentVarBlockLine; + + public const STATE_DATA = 0; + public const STATE_BLOCK = 1; + public const STATE_VAR = 2; + public const STATE_STRING = 3; + public const STATE_INTERPOLATION = 4; + + public const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A'; + public const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?([Ee][\+\-][0-9]+)?/A'; + public const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As'; + public const REGEX_DQ_STRING_DELIM = '/"/A'; + public const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As'; + public const PUNCTUATION = '()[]{}?:.,|'; + + public function __construct(Environment $env, array $options = []) + { + $this->env = $env; + + $this->options = array_merge([ + 'tag_comment' => ['{#', '#}'], + 'tag_block' => ['{%', '%}'], + 'tag_variable' => ['{{', '}}'], + 'whitespace_trim' => '-', + 'whitespace_line_trim' => '~', + 'whitespace_line_chars' => ' \t\0\x0B', + 'interpolation' => ['#{', '}'], + ], $options); + + // when PHP 7.3 is the min version, we will be able to remove the '#' part in preg_quote as it's part of the default + $this->regexes = [ + // }} + 'lex_var' => '{ + \s* + (?:'. + preg_quote($this->options['whitespace_trim'].$this->options['tag_variable'][1], '#').'\s*'. // -}}\s* + '|'. + preg_quote($this->options['whitespace_line_trim'].$this->options['tag_variable'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~}}[ \t\0\x0B]* + '|'. + preg_quote($this->options['tag_variable'][1], '#'). // }} + ') + }Ax', + + // %} + 'lex_block' => '{ + \s* + (?:'. + preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '#').'\s*\n?'. // -%}\s*\n? + '|'. + preg_quote($this->options['whitespace_line_trim'].$this->options['tag_block'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~%}[ \t\0\x0B]* + '|'. + preg_quote($this->options['tag_block'][1], '#').'\n?'. // %}\n? + ') + }Ax', + + // {% endverbatim %} + 'lex_raw_data' => '{'. + preg_quote($this->options['tag_block'][0], '#'). // {% + '('. + $this->options['whitespace_trim']. // - + '|'. + $this->options['whitespace_line_trim']. // ~ + ')?\s*endverbatim\s*'. + '(?:'. + preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '#').'\s*'. // -%} + '|'. + preg_quote($this->options['whitespace_line_trim'].$this->options['tag_block'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~%}[ \t\0\x0B]* + '|'. + preg_quote($this->options['tag_block'][1], '#'). // %} + ') + }sx', + + 'operator' => $this->getOperatorRegex(), + + // #} + 'lex_comment' => '{ + (?:'. + preg_quote($this->options['whitespace_trim'].$this->options['tag_comment'][1], '#').'\s*\n?'. // -#}\s*\n? + '|'. + preg_quote($this->options['whitespace_line_trim'].$this->options['tag_comment'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~#}[ \t\0\x0B]* + '|'. + preg_quote($this->options['tag_comment'][1], '#').'\n?'. // #}\n? + ') + }sx', + + // verbatim %} + 'lex_block_raw' => '{ + \s*verbatim\s* + (?:'. + preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '#').'\s*'. // -%}\s* + '|'. + preg_quote($this->options['whitespace_line_trim'].$this->options['tag_block'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~%}[ \t\0\x0B]* + '|'. + preg_quote($this->options['tag_block'][1], '#'). // %} + ') + }Asx', + + 'lex_block_line' => '{\s*line\s+(\d+)\s*'.preg_quote($this->options['tag_block'][1], '#').'}As', + + // {{ or {% or {# + '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'], '#'). // - + '|'. + preg_quote($this->options['whitespace_line_trim'], '#'). // ~ + ')? + }sx', + 'interpolation_start' => '{'.preg_quote($this->options['interpolation'][0], '#').'\s*}A', + 'interpolation_end' => '{\s*'.preg_quote($this->options['interpolation'][1], '#').'}A', + ]; + } + + public function tokenize(Source $source): TokenStream + { + $this->source = $source; + $this->code = str_replace(["\r\n", "\r"], "\n", $source->getCode()); + $this->cursor = 0; + $this->lineno = 1; + $this->end = \strlen($this->code); + $this->tokens = []; + $this->state = self::STATE_DATA; + $this->states = []; + $this->brackets = []; + $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(/* Token::EOF_TYPE */ -1); + + if (!empty($this->brackets)) { + list($expect, $lineno) = array_pop($this->brackets); + throw new SyntaxError(sprintf('Unclosed "%s".', $expect), $lineno, $this->source); + } + + return new TokenStream($this->tokens, $this->source); + } + + private function lexData(): void + { + // 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(/* Token::TEXT_TYPE */ 0, 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); + + // trim? + if (isset($this->positions[2][$this->position][0])) { + if ($this->options['whitespace_trim'] === $this->positions[2][$this->position][0]) { + // whitespace_trim detected ({%-, {{- or {#-) + $text = rtrim($text); + } elseif ($this->options['whitespace_line_trim'] === $this->positions[2][$this->position][0]) { + // whitespace_line_trim detected ({%~, {{~ or {#~) + // don't trim \r and \n + $text = rtrim($text, " \t\0\x0B"); + } + } + $this->pushToken(/* Token::TEXT_TYPE */ 0, $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, 0, $this->cursor)) { + $this->moveCursor($match[0]); + $this->lexRawData(); + // {% line \d+ %} + } elseif (preg_match($this->regexes['lex_block_line'], $this->code, $match, 0, $this->cursor)) { + $this->moveCursor($match[0]); + $this->lineno = (int) $match[1]; + } else { + $this->pushToken(/* Token::BLOCK_START_TYPE */ 1); + $this->pushState(self::STATE_BLOCK); + $this->currentVarBlockLine = $this->lineno; + } + break; + + case $this->options['tag_variable'][0]: + $this->pushToken(/* Token::VAR_START_TYPE */ 2); + $this->pushState(self::STATE_VAR); + $this->currentVarBlockLine = $this->lineno; + break; + } + } + + private function lexBlock(): void + { + if (empty($this->brackets) && preg_match($this->regexes['lex_block'], $this->code, $match, 0, $this->cursor)) { + $this->pushToken(/* Token::BLOCK_END_TYPE */ 3); + $this->moveCursor($match[0]); + $this->popState(); + } else { + $this->lexExpression(); + } + } + + private function lexVar(): void + { + if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, 0, $this->cursor)) { + $this->pushToken(/* Token::VAR_END_TYPE */ 4); + $this->moveCursor($match[0]); + $this->popState(); + } else { + $this->lexExpression(); + } + } + + private function lexExpression(): void + { + // whitespace + if (preg_match('/\s+/A', $this->code, $match, 0, $this->cursor)) { + $this->moveCursor($match[0]); + + if ($this->cursor >= $this->end) { + throw new SyntaxError(sprintf('Unclosed "%s".', self::STATE_BLOCK === $this->state ? 'block' : 'variable'), $this->currentVarBlockLine, $this->source); + } + } + + // arrow function + if ('=' === $this->code[$this->cursor] && '>' === $this->code[$this->cursor + 1]) { + $this->pushToken(Token::ARROW_TYPE, '=>'); + $this->moveCursor('=>'); + } + // operators + elseif (preg_match($this->regexes['operator'], $this->code, $match, 0, $this->cursor)) { + $this->pushToken(/* Token::OPERATOR_TYPE */ 8, preg_replace('/\s+/', ' ', $match[0])); + $this->moveCursor($match[0]); + } + // names + elseif (preg_match(self::REGEX_NAME, $this->code, $match, 0, $this->cursor)) { + $this->pushToken(/* Token::NAME_TYPE */ 5, $match[0]); + $this->moveCursor($match[0]); + } + // numbers + elseif (preg_match(self::REGEX_NUMBER, $this->code, $match, 0, $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(/* Token::NUMBER_TYPE */ 6, $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[] = [$this->code[$this->cursor], $this->lineno]; + } + // closing bracket + elseif (false !== strpos(')]}', $this->code[$this->cursor])) { + if (empty($this->brackets)) { + throw new SyntaxError(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 SyntaxError(sprintf('Unclosed "%s".', $expect), $lineno, $this->source); + } + } + + $this->pushToken(/* Token::PUNCTUATION_TYPE */ 9, $this->code[$this->cursor]); + ++$this->cursor; + } + // strings + elseif (preg_match(self::REGEX_STRING, $this->code, $match, 0, $this->cursor)) { + $this->pushToken(/* Token::STRING_TYPE */ 7, 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, 0, $this->cursor)) { + $this->brackets[] = ['"', $this->lineno]; + $this->pushState(self::STATE_STRING); + $this->moveCursor($match[0]); + } + // unlexable + else { + throw new SyntaxError(sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); + } + } + + private function lexRawData(): void + { + if (!preg_match($this->regexes['lex_raw_data'], $this->code, $match, \PREG_OFFSET_CAPTURE, $this->cursor)) { + throw new SyntaxError('Unexpected end of file: Unclosed "verbatim" block.', $this->lineno, $this->source); + } + + $text = substr($this->code, $this->cursor, $match[0][1] - $this->cursor); + $this->moveCursor($text.$match[0][0]); + + // trim? + if (isset($match[1][0])) { + if ($this->options['whitespace_trim'] === $match[1][0]) { + // whitespace_trim detected ({%-, {{- or {#-) + $text = rtrim($text); + } else { + // whitespace_line_trim detected ({%~, {{~ or {#~) + // don't trim \r and \n + $text = rtrim($text, " \t\0\x0B"); + } + } + + $this->pushToken(/* Token::TEXT_TYPE */ 0, $text); + } + + private function lexComment(): void + { + if (!preg_match($this->regexes['lex_comment'], $this->code, $match, \PREG_OFFSET_CAPTURE, $this->cursor)) { + throw new SyntaxError('Unclosed comment.', $this->lineno, $this->source); + } + + $this->moveCursor(substr($this->code, $this->cursor, $match[0][1] - $this->cursor).$match[0][0]); + } + + private function lexString(): void + { + if (preg_match($this->regexes['interpolation_start'], $this->code, $match, 0, $this->cursor)) { + $this->brackets[] = [$this->options['interpolation'][0], $this->lineno]; + $this->pushToken(/* Token::INTERPOLATION_START_TYPE */ 10); + $this->moveCursor($match[0]); + $this->pushState(self::STATE_INTERPOLATION); + } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, 0, $this->cursor) && \strlen($match[0]) > 0) { + $this->pushToken(/* Token::STRING_TYPE */ 7, stripcslashes($match[0])); + $this->moveCursor($match[0]); + } elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, 0, $this->cursor)) { + list($expect, $lineno) = array_pop($this->brackets); + if ('"' != $this->code[$this->cursor]) { + throw new SyntaxError(sprintf('Unclosed "%s".', $expect), $lineno, $this->source); + } + + $this->popState(); + ++$this->cursor; + } else { + // unlexable + throw new SyntaxError(sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); + } + } + + private function lexInterpolation(): void + { + $bracket = end($this->brackets); + if ($this->options['interpolation'][0] === $bracket[0] && preg_match($this->regexes['interpolation_end'], $this->code, $match, 0, $this->cursor)) { + array_pop($this->brackets); + $this->pushToken(/* Token::INTERPOLATION_END_TYPE */ 11); + $this->moveCursor($match[0]); + $this->popState(); + } else { + $this->lexExpression(); + } + } + + private function pushToken($type, $value = ''): void + { + // do not push empty text tokens + if (/* Token::TEXT_TYPE */ 0 === $type && '' === $value) { + return; + } + + $this->tokens[] = new Token($type, $value, $this->lineno); + } + + private function moveCursor($text): void + { + $this->cursor += \strlen($text); + $this->lineno += substr_count($text, "\n"); + } + + private function getOperatorRegex(): string + { + $operators = array_merge( + ['='], + array_keys($this->env->getUnaryOperators()), + array_keys($this->env->getBinaryOperators()) + ); + + $operators = array_combine($operators, array_map('strlen', $operators)); + arsort($operators); + + $regex = []; + foreach ($operators as $operator => $length) { + // an operator that ends with a character must be followed by + // a whitespace, a parenthesis, an opening map [ or sequence { + $r = preg_quote($operator, '/'); + if (ctype_alpha($operator[$length - 1])) { + $r .= '(?=[\s()\[{])'; + } + + // an operator that begins with a character must not have a dot or pipe before + if (ctype_alpha($operator[0])) { + $r = '(?states[] = $this->state; + $this->state = $state; + } + + private function popState(): void + { + if (0 === \count($this->states)) { + throw new \LogicException('Cannot pop state without a previous state.'); + } + + $this->state = array_pop($this->states); + } +} diff --git a/site/www/_rem/lib/twig/Loader/ArrayLoader.php b/site/www/_rem/lib/twig/Loader/ArrayLoader.php new file mode 100644 index 0000000..5d726c3 --- /dev/null +++ b/site/www/_rem/lib/twig/Loader/ArrayLoader.php @@ -0,0 +1,77 @@ + + */ +final class ArrayLoader implements LoaderInterface +{ + private $templates = []; + + /** + * @param array $templates An array of templates (keys are the names, and values are the source code) + */ + public function __construct(array $templates = []) + { + $this->templates = $templates; + } + + public function setTemplate(string $name, string $template): void + { + $this->templates[$name] = $template; + } + + public function getSourceContext(string $name): Source + { + if (!isset($this->templates[$name])) { + throw new LoaderError(sprintf('Template "%s" is not defined.', $name)); + } + + return new Source($this->templates[$name], $name); + } + + public function exists(string $name): bool + { + return isset($this->templates[$name]); + } + + public function getCacheKey(string $name): string + { + if (!isset($this->templates[$name])) { + throw new LoaderError(sprintf('Template "%s" is not defined.', $name)); + } + + return $name.':'.$this->templates[$name]; + } + + public function isFresh(string $name, int $time): bool + { + if (!isset($this->templates[$name])) { + throw new LoaderError(sprintf('Template "%s" is not defined.', $name)); + } + + return true; + } +} diff --git a/site/www/_rem/lib/twig/Loader/ChainLoader.php b/site/www/_rem/lib/twig/Loader/ChainLoader.php new file mode 100644 index 0000000..fbf4f3a --- /dev/null +++ b/site/www/_rem/lib/twig/Loader/ChainLoader.php @@ -0,0 +1,119 @@ + + */ +final class ChainLoader implements LoaderInterface +{ + private $hasSourceCache = []; + private $loaders = []; + + /** + * @param LoaderInterface[] $loaders + */ + public function __construct(array $loaders = []) + { + foreach ($loaders as $loader) { + $this->addLoader($loader); + } + } + + public function addLoader(LoaderInterface $loader): void + { + $this->loaders[] = $loader; + $this->hasSourceCache = []; + } + + /** + * @return LoaderInterface[] + */ + public function getLoaders(): array + { + return $this->loaders; + } + + public function getSourceContext(string $name): Source + { + $exceptions = []; + foreach ($this->loaders as $loader) { + if (!$loader->exists($name)) { + continue; + } + + try { + return $loader->getSourceContext($name); + } catch (LoaderError $e) { + $exceptions[] = $e->getMessage(); + } + } + + throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); + } + + public function exists(string $name): bool + { + if (isset($this->hasSourceCache[$name])) { + return $this->hasSourceCache[$name]; + } + + foreach ($this->loaders as $loader) { + if ($loader->exists($name)) { + return $this->hasSourceCache[$name] = true; + } + } + + return $this->hasSourceCache[$name] = false; + } + + public function getCacheKey(string $name): string + { + $exceptions = []; + foreach ($this->loaders as $loader) { + if (!$loader->exists($name)) { + continue; + } + + try { + return $loader->getCacheKey($name); + } catch (LoaderError $e) { + $exceptions[] = \get_class($loader).': '.$e->getMessage(); + } + } + + throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); + } + + public function isFresh(string $name, int $time): bool + { + $exceptions = []; + foreach ($this->loaders as $loader) { + if (!$loader->exists($name)) { + continue; + } + + try { + return $loader->isFresh($name, $time); + } catch (LoaderError $e) { + $exceptions[] = \get_class($loader).': '.$e->getMessage(); + } + } + + throw new LoaderError(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); + } +} diff --git a/site/www/_rem/lib/twig/Loader/FilesystemLoader.php b/site/www/_rem/lib/twig/Loader/FilesystemLoader.php new file mode 100644 index 0000000..859a898 --- /dev/null +++ b/site/www/_rem/lib/twig/Loader/FilesystemLoader.php @@ -0,0 +1,283 @@ + + */ +class FilesystemLoader implements LoaderInterface +{ + /** Identifier of the main namespace. */ + public const MAIN_NAMESPACE = '__main__'; + + protected $paths = []; + protected $cache = []; + protected $errorCache = []; + + 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 = [], string $rootPath = null) + { + $this->rootPath = (null === $rootPath ? getcwd() : $rootPath).\DIRECTORY_SEPARATOR; + if (null !== $rootPath && false !== ($realPath = realpath($rootPath))) { + $this->rootPath = $realPath.\DIRECTORY_SEPARATOR; + } + + if ($paths) { + $this->setPaths($paths); + } + } + + /** + * Returns the paths to the templates. + */ + public function getPaths(string $namespace = self::MAIN_NAMESPACE): array + { + return $this->paths[$namespace] ?? []; + } + + /** + * Returns the path namespaces. + * + * The main namespace is always defined. + */ + public function getNamespaces(): array + { + return array_keys($this->paths); + } + + /** + * @param string|array $paths A path or an array of paths where to look for templates + */ + public function setPaths($paths, string $namespace = self::MAIN_NAMESPACE): void + { + if (!\is_array($paths)) { + $paths = [$paths]; + } + + $this->paths[$namespace] = []; + foreach ($paths as $path) { + $this->addPath($path, $namespace); + } + } + + /** + * @throws LoaderError + */ + public function addPath(string $path, string $namespace = self::MAIN_NAMESPACE): void + { + // invalidate the cache + $this->cache = $this->errorCache = []; + + $checkPath = $this->isAbsolutePath($path) ? $path : $this->rootPath.$path; + if (!is_dir($checkPath)) { + throw new LoaderError(sprintf('The "%s" directory does not exist ("%s").', $path, $checkPath)); + } + + $this->paths[$namespace][] = rtrim($path, '/\\'); + } + + /** + * @throws LoaderError + */ + public function prependPath(string $path, string $namespace = self::MAIN_NAMESPACE): void + { + // invalidate the cache + $this->cache = $this->errorCache = []; + + $checkPath = $this->isAbsolutePath($path) ? $path : $this->rootPath.$path; + if (!is_dir($checkPath)) { + throw new LoaderError(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 getSourceContext(string $name): Source + { + if (null === $path = $this->findTemplate($name)) { + return new Source('', $name, ''); + } + + return new Source(file_get_contents($path), $name, $path); + } + + public function getCacheKey(string $name): string + { + if (null === $path = $this->findTemplate($name)) { + return ''; + } + $len = \strlen($this->rootPath); + if (0 === strncmp($this->rootPath, $path, $len)) { + return substr($path, $len); + } + + return $path; + } + + /** + * @return bool + */ + public function exists(string $name) + { + $name = $this->normalizeName($name); + + if (isset($this->cache[$name])) { + return true; + } + + return null !== $this->findTemplate($name, false); + } + + public function isFresh(string $name, int $time): bool + { + // false support to be removed in 3.0 + if (null === $path = $this->findTemplate($name)) { + return false; + } + + return filemtime($path) < $time; + } + + /** + * @return string|null + */ + protected function findTemplate(string $name, bool $throw = true) + { + $name = $this->normalizeName($name); + + if (isset($this->cache[$name])) { + return $this->cache[$name]; + } + + if (isset($this->errorCache[$name])) { + if (!$throw) { + return null; + } + + throw new LoaderError($this->errorCache[$name]); + } + + try { + $this->validateName($name); + + list($namespace, $shortname) = $this->parseName($name); + } catch (LoaderError $e) { + if (!$throw) { + return null; + } + + throw $e; + } + + if (!isset($this->paths[$namespace])) { + $this->errorCache[$name] = sprintf('There are no registered paths for namespace "%s".', $namespace); + + if (!$throw) { + return null; + } + + throw new LoaderError($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 null; + } + + throw new LoaderError($this->errorCache[$name]); + } + + private function normalizeName(string $name): string + { + return preg_replace('#/{2,}#', '/', str_replace('\\', '/', $name)); + } + + private function parseName(string $name, string $default = self::MAIN_NAMESPACE): array + { + if (isset($name[0]) && '@' == $name[0]) { + if (false === $pos = strpos($name, '/')) { + throw new LoaderError(sprintf('Malformed namespaced template name "%s" (expecting "@namespace/template_name").', $name)); + } + + $namespace = substr($name, 1, $pos - 1); + $shortname = substr($name, $pos + 1); + + return [$namespace, $shortname]; + } + + return [$default, $name]; + } + + private function validateName(string $name): void + { + if (false !== strpos($name, "\0")) { + throw new LoaderError('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 LoaderError(sprintf('Looks like you try to load a template outside configured directories (%s).', $name)); + } + } + } + + private function isAbsolutePath(string $file): bool + { + return strspn($file, '/\\', 0, 1) + || (\strlen($file) > 3 && ctype_alpha($file[0]) + && ':' === $file[1] + && strspn($file, '/\\', 2, 1) + ) + || null !== parse_url($file, \PHP_URL_SCHEME) + ; + } +} diff --git a/site/www/_rem/lib/twig/Loader/LoaderInterface.php b/site/www/_rem/lib/twig/Loader/LoaderInterface.php new file mode 100644 index 0000000..fec7e85 --- /dev/null +++ b/site/www/_rem/lib/twig/Loader/LoaderInterface.php @@ -0,0 +1,49 @@ + + */ +interface LoaderInterface +{ + /** + * Returns the source context for a given template logical name. + * + * @throws LoaderError When $name is not found + */ + public function getSourceContext(string $name): Source; + + /** + * Gets the cache key to use for the cache for a given template name. + * + * @throws LoaderError When $name is not found + */ + public function getCacheKey(string $name): string; + + /** + * @param int $time Timestamp of the last modification time of the cached template + * + * @throws LoaderError When $name is not found + */ + public function isFresh(string $name, int $time): bool; + + /** + * @return bool + */ + public function exists(string $name); +} diff --git a/site/www/_rem/lib/twig/Markup.php b/site/www/_rem/lib/twig/Markup.php new file mode 100644 index 0000000..1788acc --- /dev/null +++ b/site/www/_rem/lib/twig/Markup.php @@ -0,0 +1,52 @@ + + */ +class Markup implements \Countable, \JsonSerializable +{ + private $content; + private $charset; + + public function __construct($content, $charset) + { + $this->content = (string) $content; + $this->charset = $charset; + } + + public function __toString() + { + return $this->content; + } + + /** + * @return int + */ + #[\ReturnTypeWillChange] + public function count() + { + return mb_strlen($this->content, $this->charset); + } + + /** + * @return mixed + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return $this->content; + } +} diff --git a/site/www/_rem/lib/twig/Node/AutoEscapeNode.php b/site/www/_rem/lib/twig/Node/AutoEscapeNode.php new file mode 100644 index 0000000..cd97041 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/AutoEscapeNode.php @@ -0,0 +1,38 @@ + + */ +class AutoEscapeNode extends Node +{ + public function __construct($value, Node $body, int $lineno, string $tag = 'autoescape') + { + parent::__construct(['body' => $body], ['value' => $value], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler->subcompile($this->getNode('body')); + } +} diff --git a/site/www/_rem/lib/twig/Node/BlockNode.php b/site/www/_rem/lib/twig/Node/BlockNode.php new file mode 100644 index 0000000..0632ba7 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/BlockNode.php @@ -0,0 +1,44 @@ + + */ +class BlockNode extends Node +{ + public function __construct(string $name, Node $body, int $lineno, string $tag = null) + { + parent::__construct(['body' => $body], ['name' => $name], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write(sprintf("public function block_%s(\$context, array \$blocks = [])\n", $this->getAttribute('name')), "{\n") + ->indent() + ->write("\$macros = \$this->macros;\n") + ; + + $compiler + ->subcompile($this->getNode('body')) + ->outdent() + ->write("}\n\n") + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/BlockReferenceNode.php b/site/www/_rem/lib/twig/Node/BlockReferenceNode.php new file mode 100644 index 0000000..cc8af5b --- /dev/null +++ b/site/www/_rem/lib/twig/Node/BlockReferenceNode.php @@ -0,0 +1,36 @@ + + */ +class BlockReferenceNode extends Node implements NodeOutputInterface +{ + public function __construct(string $name, int $lineno, string $tag = null) + { + parent::__construct([], ['name' => $name], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write(sprintf("\$this->displayBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name'))) + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/BodyNode.php b/site/www/_rem/lib/twig/Node/BodyNode.php new file mode 100644 index 0000000..041cbf6 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/BodyNode.php @@ -0,0 +1,21 @@ + + */ +class BodyNode extends Node +{ +} diff --git a/site/www/_rem/lib/twig/Node/CheckSecurityCallNode.php b/site/www/_rem/lib/twig/Node/CheckSecurityCallNode.php new file mode 100644 index 0000000..a78a38d --- /dev/null +++ b/site/www/_rem/lib/twig/Node/CheckSecurityCallNode.php @@ -0,0 +1,28 @@ + + */ +class CheckSecurityCallNode extends Node +{ + public function compile(Compiler $compiler) + { + $compiler + ->write("\$this->sandbox = \$this->env->getExtension('\Twig\Extension\SandboxExtension');\n") + ->write("\$this->checkSecurity();\n") + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/CheckSecurityNode.php b/site/www/_rem/lib/twig/Node/CheckSecurityNode.php new file mode 100644 index 0000000..4727327 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/CheckSecurityNode.php @@ -0,0 +1,88 @@ + + */ +class CheckSecurityNode extends Node +{ + private $usedFilters; + private $usedTags; + private $usedFunctions; + + public function __construct(array $usedFilters, array $usedTags, array $usedFunctions) + { + $this->usedFilters = $usedFilters; + $this->usedTags = $usedTags; + $this->usedFunctions = $usedFunctions; + + parent::__construct(); + } + + public function compile(Compiler $compiler): void + { + $tags = $filters = $functions = []; + foreach (['tags', 'filters', 'functions'] as $type) { + foreach ($this->{'used'.ucfirst($type)} as $name => $node) { + if ($node instanceof Node) { + ${$type}[$name] = $node->getTemplateLine(); + } else { + ${$type}[$node] = null; + } + } + } + + $compiler + ->write("\n") + ->write("public function checkSecurity()\n") + ->write("{\n") + ->indent() + ->write('static $tags = ')->repr(array_filter($tags))->raw(";\n") + ->write('static $filters = ')->repr(array_filter($filters))->raw(";\n") + ->write('static $functions = ')->repr(array_filter($functions))->raw(";\n\n") + ->write("try {\n") + ->indent() + ->write("\$this->sandbox->checkSecurity(\n") + ->indent() + ->write(!$tags ? "[],\n" : "['".implode("', '", array_keys($tags))."'],\n") + ->write(!$filters ? "[],\n" : "['".implode("', '", array_keys($filters))."'],\n") + ->write(!$functions ? "[]\n" : "['".implode("', '", array_keys($functions))."']\n") + ->outdent() + ->write(");\n") + ->outdent() + ->write("} catch (SecurityError \$e) {\n") + ->indent() + ->write("\$e->setSourceContext(\$this->source);\n\n") + ->write("if (\$e instanceof SecurityNotAllowedTagError && isset(\$tags[\$e->getTagName()])) {\n") + ->indent() + ->write("\$e->setTemplateLine(\$tags[\$e->getTagName()]);\n") + ->outdent() + ->write("} elseif (\$e instanceof SecurityNotAllowedFilterError && isset(\$filters[\$e->getFilterName()])) {\n") + ->indent() + ->write("\$e->setTemplateLine(\$filters[\$e->getFilterName()]);\n") + ->outdent() + ->write("} elseif (\$e instanceof 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") + ->outdent() + ->write("}\n") + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/CheckToStringNode.php b/site/www/_rem/lib/twig/Node/CheckToStringNode.php new file mode 100644 index 0000000..c7a9d69 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/CheckToStringNode.php @@ -0,0 +1,45 @@ + + */ +class CheckToStringNode extends AbstractExpression +{ + public function __construct(AbstractExpression $expr) + { + parent::__construct(['expr' => $expr], [], $expr->getTemplateLine(), $expr->getNodeTag()); + } + + public function compile(Compiler $compiler): void + { + $expr = $this->getNode('expr'); + $compiler + ->raw('$this->sandbox->ensureToStringAllowed(') + ->subcompile($expr) + ->raw(', ') + ->repr($expr->getTemplateLine()) + ->raw(', $this->source)') + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/DeprecatedNode.php b/site/www/_rem/lib/twig/Node/DeprecatedNode.php new file mode 100644 index 0000000..5ff4430 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/DeprecatedNode.php @@ -0,0 +1,53 @@ + + */ +class DeprecatedNode extends Node +{ + public function __construct(AbstractExpression $expr, int $lineno, string $tag = null) + { + parent::__construct(['expr' => $expr], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler->addDebugInfo($this); + + $expr = $this->getNode('expr'); + + if ($expr instanceof ConstantExpression) { + $compiler->write('@trigger_error(') + ->subcompile($expr); + } else { + $varName = $compiler->getVarName(); + $compiler->write(sprintf('$%s = ', $varName)) + ->subcompile($expr) + ->raw(";\n") + ->write(sprintf('@trigger_error($%s', $varName)); + } + + $compiler + ->raw('.') + ->string(sprintf(' ("%s" at line %d).', $this->getTemplateName(), $this->getTemplateLine())) + ->raw(", E_USER_DEPRECATED);\n") + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/DoNode.php b/site/www/_rem/lib/twig/Node/DoNode.php new file mode 100644 index 0000000..f7783d1 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/DoNode.php @@ -0,0 +1,38 @@ + + */ +class DoNode extends Node +{ + public function __construct(AbstractExpression $expr, int $lineno, string $tag = null) + { + parent::__construct(['expr' => $expr], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write('') + ->subcompile($this->getNode('expr')) + ->raw(";\n") + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/EmbedNode.php b/site/www/_rem/lib/twig/Node/EmbedNode.php new file mode 100644 index 0000000..903c3f6 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/EmbedNode.php @@ -0,0 +1,48 @@ + + */ +class EmbedNode extends IncludeNode +{ + // 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(string $name, int $index, ?AbstractExpression $variables, bool $only, bool $ignoreMissing, int $lineno, string $tag = null) + { + parent::__construct(new ConstantExpression('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag); + + $this->setAttribute('name', $name); + $this->setAttribute('index', $index); + } + + protected function addGetTemplate(Compiler $compiler): void + { + $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/site/www/_rem/lib/twig/Node/Expression/AbstractExpression.php b/site/www/_rem/lib/twig/Node/Expression/AbstractExpression.php new file mode 100644 index 0000000..42da055 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/AbstractExpression.php @@ -0,0 +1,24 @@ + + */ +abstract class AbstractExpression extends Node +{ +} diff --git a/site/www/_rem/lib/twig/Node/Expression/ArrayExpression.php b/site/www/_rem/lib/twig/Node/Expression/ArrayExpression.php new file mode 100644 index 0000000..0e25fe4 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/ArrayExpression.php @@ -0,0 +1,85 @@ +index = -1; + foreach ($this->getKeyValuePairs() as $pair) { + if ($pair['key'] instanceof ConstantExpression && ctype_digit((string) $pair['key']->getAttribute('value')) && $pair['key']->getAttribute('value') > $this->index) { + $this->index = $pair['key']->getAttribute('value'); + } + } + } + + public function getKeyValuePairs(): array + { + $pairs = []; + foreach (array_chunk($this->nodes, 2) as $pair) { + $pairs[] = [ + 'key' => $pair[0], + 'value' => $pair[1], + ]; + } + + return $pairs; + } + + public function hasElement(AbstractExpression $key): bool + { + 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(AbstractExpression $value, AbstractExpression $key = null): void + { + if (null === $key) { + $key = new ConstantExpression(++$this->index, $value->getTemplateLine()); + } + + array_push($this->nodes, $key, $value); + } + + public function compile(Compiler $compiler): void + { + $compiler->raw('['); + $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/site/www/_rem/lib/twig/Node/Expression/ArrowFunctionExpression.php b/site/www/_rem/lib/twig/Node/Expression/ArrowFunctionExpression.php new file mode 100644 index 0000000..eaad03c --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/ArrowFunctionExpression.php @@ -0,0 +1,64 @@ + + */ +class ArrowFunctionExpression extends AbstractExpression +{ + public function __construct(AbstractExpression $expr, Node $names, $lineno, $tag = null) + { + parent::__construct(['expr' => $expr, 'names' => $names], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->raw('function (') + ; + foreach ($this->getNode('names') as $i => $name) { + if ($i) { + $compiler->raw(', '); + } + + $compiler + ->raw('$__') + ->raw($name->getAttribute('name')) + ->raw('__') + ; + } + $compiler + ->raw(') use ($context, $macros) { ') + ; + foreach ($this->getNode('names') as $name) { + $compiler + ->raw('$context["') + ->raw($name->getAttribute('name')) + ->raw('"] = $__') + ->raw($name->getAttribute('name')) + ->raw('__; ') + ; + } + $compiler + ->raw('return ') + ->subcompile($this->getNode('expr')) + ->raw('; }') + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/AssignNameExpression.php b/site/www/_rem/lib/twig/Node/Expression/AssignNameExpression.php new file mode 100644 index 0000000..7dd1bc4 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/AssignNameExpression.php @@ -0,0 +1,27 @@ +raw('$context[') + ->string($this->getAttribute('name')) + ->raw(']') + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/AbstractBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/AbstractBinary.php new file mode 100644 index 0000000..c424e5c --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/AbstractBinary.php @@ -0,0 +1,42 @@ + $left, 'right' => $right], [], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->raw('(') + ->subcompile($this->getNode('left')) + ->raw(' ') + ; + $this->operator($compiler); + $compiler + ->raw(' ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + abstract public function operator(Compiler $compiler): Compiler; +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/AddBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/AddBinary.php new file mode 100644 index 0000000..ee4307e --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/AddBinary.php @@ -0,0 +1,23 @@ +raw('+'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/AndBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/AndBinary.php new file mode 100644 index 0000000..5f2380d --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/AndBinary.php @@ -0,0 +1,23 @@ +raw('&&'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/BitwiseAndBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/BitwiseAndBinary.php new file mode 100644 index 0000000..db7d6d6 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/BitwiseAndBinary.php @@ -0,0 +1,23 @@ +raw('&'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/BitwiseOrBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/BitwiseOrBinary.php new file mode 100644 index 0000000..ce803dd --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/BitwiseOrBinary.php @@ -0,0 +1,23 @@ +raw('|'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/BitwiseXorBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/BitwiseXorBinary.php new file mode 100644 index 0000000..5c29785 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/BitwiseXorBinary.php @@ -0,0 +1,23 @@ +raw('^'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/ConcatBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/ConcatBinary.php new file mode 100644 index 0000000..f825ab8 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/ConcatBinary.php @@ -0,0 +1,23 @@ +raw('.'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/DivBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/DivBinary.php new file mode 100644 index 0000000..e3817d1 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/DivBinary.php @@ -0,0 +1,23 @@ +raw('/'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/EndsWithBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/EndsWithBinary.php new file mode 100644 index 0000000..c3516b8 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/EndsWithBinary.php @@ -0,0 +1,35 @@ +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(Compiler $compiler): Compiler + { + return $compiler->raw(''); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/EqualBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/EqualBinary.php new file mode 100644 index 0000000..6b48549 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/EqualBinary.php @@ -0,0 +1,39 @@ += 80000) { + parent::compile($compiler); + + return; + } + + $compiler + ->raw('(0 === twig_compare(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('=='); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/FloorDivBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/FloorDivBinary.php new file mode 100644 index 0000000..d7e7980 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/FloorDivBinary.php @@ -0,0 +1,29 @@ +raw('(int) floor('); + parent::compile($compiler); + $compiler->raw(')'); + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('/'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/GreaterBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/GreaterBinary.php new file mode 100644 index 0000000..e1dd067 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/GreaterBinary.php @@ -0,0 +1,39 @@ += 80000) { + parent::compile($compiler); + + return; + } + + $compiler + ->raw('(1 === twig_compare(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('>'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/GreaterEqualBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/GreaterEqualBinary.php new file mode 100644 index 0000000..df9bfcf --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/GreaterEqualBinary.php @@ -0,0 +1,39 @@ += 80000) { + parent::compile($compiler); + + return; + } + + $compiler + ->raw('(0 <= twig_compare(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('>='); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/InBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/InBinary.php new file mode 100644 index 0000000..6dbfa97 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/InBinary.php @@ -0,0 +1,33 @@ +raw('twig_in_filter(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('in'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/LessBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/LessBinary.php new file mode 100644 index 0000000..598e629 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/LessBinary.php @@ -0,0 +1,39 @@ += 80000) { + parent::compile($compiler); + + return; + } + + $compiler + ->raw('(-1 === twig_compare(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('<'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/LessEqualBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/LessEqualBinary.php new file mode 100644 index 0000000..e3c4af5 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/LessEqualBinary.php @@ -0,0 +1,39 @@ += 80000) { + parent::compile($compiler); + + return; + } + + $compiler + ->raw('(0 >= twig_compare(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('<='); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/MatchesBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/MatchesBinary.php new file mode 100644 index 0000000..bc97292 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/MatchesBinary.php @@ -0,0 +1,33 @@ +raw('preg_match(') + ->subcompile($this->getNode('right')) + ->raw(', ') + ->subcompile($this->getNode('left')) + ->raw(')') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw(''); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/ModBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/ModBinary.php new file mode 100644 index 0000000..271b45c --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/ModBinary.php @@ -0,0 +1,23 @@ +raw('%'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/MulBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/MulBinary.php new file mode 100644 index 0000000..6d4c1e0 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/MulBinary.php @@ -0,0 +1,23 @@ +raw('*'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/NotEqualBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/NotEqualBinary.php new file mode 100644 index 0000000..db47a28 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/NotEqualBinary.php @@ -0,0 +1,39 @@ += 80000) { + parent::compile($compiler); + + return; + } + + $compiler + ->raw('(0 !== twig_compare(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('!='); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/NotInBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/NotInBinary.php new file mode 100644 index 0000000..fcba6cc --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/NotInBinary.php @@ -0,0 +1,33 @@ +raw('!twig_in_filter(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('not in'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/OrBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/OrBinary.php new file mode 100644 index 0000000..21f87c9 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/OrBinary.php @@ -0,0 +1,23 @@ +raw('||'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/PowerBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/PowerBinary.php new file mode 100644 index 0000000..c9f4c66 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/PowerBinary.php @@ -0,0 +1,22 @@ +raw('**'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/RangeBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/RangeBinary.php new file mode 100644 index 0000000..55982c8 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/RangeBinary.php @@ -0,0 +1,33 @@ +raw('range(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('..'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/SpaceshipBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/SpaceshipBinary.php new file mode 100644 index 0000000..ae5a4a4 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/SpaceshipBinary.php @@ -0,0 +1,22 @@ +raw('<=>'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/StartsWithBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/StartsWithBinary.php new file mode 100644 index 0000000..d0df1c4 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/StartsWithBinary.php @@ -0,0 +1,35 @@ +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(Compiler $compiler): Compiler + { + return $compiler->raw(''); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Binary/SubBinary.php b/site/www/_rem/lib/twig/Node/Expression/Binary/SubBinary.php new file mode 100644 index 0000000..eeb87fa --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Binary/SubBinary.php @@ -0,0 +1,23 @@ +raw('-'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/BlockReferenceExpression.php b/site/www/_rem/lib/twig/Node/Expression/BlockReferenceExpression.php new file mode 100644 index 0000000..b1e2a8f --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/BlockReferenceExpression.php @@ -0,0 +1,86 @@ + + */ +class BlockReferenceExpression extends AbstractExpression +{ + public function __construct(Node $name, ?Node $template, int $lineno, string $tag = null) + { + $nodes = ['name' => $name]; + if (null !== $template) { + $nodes['template'] = $template; + } + + parent::__construct($nodes, ['is_defined_test' => false, 'output' => false], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + 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(Compiler $compiler, string $method): Compiler + { + 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)); + + return $this->compileBlockArguments($compiler); + } + + private function compileBlockArguments(Compiler $compiler): Compiler + { + $compiler + ->raw('(') + ->subcompile($this->getNode('name')) + ->raw(', $context'); + + if (!$this->hasNode('template')) { + $compiler->raw(', $blocks'); + } + + return $compiler->raw(')'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/CallExpression.php b/site/www/_rem/lib/twig/Node/Expression/CallExpression.php new file mode 100644 index 0000000..fdf92a8 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/CallExpression.php @@ -0,0 +1,320 @@ +getAttribute('callable'); + + $closingParenthesis = false; + $isArray = false; + 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 ExtensionInterface) { + $class = \get_class($callable[0]); + if (!$compiler->getEnvironment()->hasExtension($class)) { + // Compile a non-optimized call to trigger a \Twig\Error\RuntimeError, which cannot be a compile-time error + $compiler->raw(sprintf('$this->env->getExtension(\'%s\')', $class)); + } else { + $compiler->raw(sprintf('$this->extensions[\'%s\']', ltrim($class, '\\'))); + } + + $compiler->raw(sprintf('->%s', $callable[1])); + } else { + $closingParenthesis = true; + $isArray = true; + $compiler->raw(sprintf('call_user_func_array($this->env->get%s(\'%s\')->getCallable(), ', ucfirst($this->getAttribute('type')), $this->getAttribute('name'))); + } + } + + $this->compileArguments($compiler, $isArray); + + if ($closingParenthesis) { + $compiler->raw(')'); + } + } + + protected function compileArguments(Compiler $compiler, $isArray = false): void + { + $compiler->raw($isArray ? '[' : '('); + + $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->getAttribute('callable'); + $arguments = $this->getArguments($callable, $this->getNode('arguments')); + foreach ($arguments as $node) { + if (!$first) { + $compiler->raw(', '); + } + $compiler->subcompile($node); + $first = false; + } + } + + $compiler->raw($isArray ? ']' : ')'); + } + + protected function getArguments($callable, $arguments) + { + $callType = $this->getAttribute('type'); + $callName = $this->getAttribute('name'); + + $parameters = []; + $named = false; + foreach ($arguments as $name => $node) { + if (!\is_int($name)) { + $named = true; + $name = $this->normalizeName($name); + } elseif ($named) { + throw new SyntaxError(sprintf('Positional arguments cannot be used after named arguments for %s "%s".', $callType, $callName), $this->getTemplateLine(), $this->getSourceContext()); + } + + $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); + } + + list($callableParameters, $isPhpVariadic) = $this->getCallableParameters($callable, $isVariadic); + $arguments = []; + $names = []; + $missingArguments = []; + $optionalArguments = []; + $pos = 0; + foreach ($callableParameters as $callableParameter) { + $name = $this->normalizeName($callableParameter->name); + if (\PHP_VERSION_ID >= 80000 && 'range' === $callable) { + if ('start' === $name) { + $name = 'low'; + } elseif ('end' === $name) { + $name = 'high'; + } + } + + $names[] = $name; + + if (\array_key_exists($name, $parameters)) { + if (\array_key_exists($pos, $parameters)) { + throw new SyntaxError(sprintf('Argument "%s" is defined twice for %s "%s".', $name, $callType, $callName), $this->getTemplateLine(), $this->getSourceContext()); + } + + if (\count($missingArguments)) { + throw new SyntaxError(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) + ), $this->getTemplateLine(), $this->getSourceContext()); + } + + $arguments = array_merge($arguments, $optionalArguments); + $arguments[] = $parameters[$name]; + unset($parameters[$name]); + $optionalArguments = []; + } elseif (\array_key_exists($pos, $parameters)) { + $arguments = array_merge($arguments, $optionalArguments); + $arguments[] = $parameters[$pos]; + unset($parameters[$pos]); + $optionalArguments = []; + ++$pos; + } elseif ($callableParameter->isDefaultValueAvailable()) { + $optionalArguments[] = new ConstantExpression($callableParameter->getDefaultValue(), -1); + } elseif ($callableParameter->isOptional()) { + if (empty($parameters)) { + break; + } else { + $missingArguments[] = $name; + } + } else { + throw new SyntaxError(sprintf('Value for argument "%s" is required for %s "%s".', $name, $callType, $callName), $this->getTemplateLine(), $this->getSourceContext()); + } + } + + if ($isVariadic) { + $arbitraryArguments = $isPhpVariadic ? new VariadicExpression([], -1) : new ArrayExpression([], -1); + foreach ($parameters as $key => $value) { + if (\is_int($key)) { + $arbitraryArguments->addElement($value); + } else { + $arbitraryArguments->addElement($value, new ConstantExpression($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 Node) { + $unknownParameter = $parameter; + break; + } + } + + throw new SyntaxError( + sprintf( + 'Unknown argument%s "%s" for %s "%s(%s)".', + \count($parameters) > 1 ? 's' : '', implode('", "', array_keys($parameters)), $callType, $callName, implode(', ', $names) + ), + $unknownParameter ? $unknownParameter->getTemplateLine() : $this->getTemplateLine(), + $unknownParameter ? $unknownParameter->getSourceContext() : $this->getSourceContext() + ); + } + + return $arguments; + } + + protected function normalizeName(string $name): string + { + return strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'], ['\\1_\\2', '\\1_\\2'], $name)); + } + + private function getCallableParameters($callable, bool $isVariadic): array + { + list($r) = $this->reflectCallable($callable); + if (null === $r) { + return [[], false]; + } + + $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); + } + } + $isPhpVariadic = false; + if ($isVariadic) { + $argument = end($parameters); + $isArray = $argument && $argument->hasType() && 'array' === $argument->getType()->getName(); + if ($isArray && $argument->isDefaultValueAvailable() && [] === $argument->getDefaultValue()) { + array_pop($parameters); + } elseif ($argument && $argument->isVariadic()) { + array_pop($parameters); + $isPhpVariadic = true; + } 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 = []".', $callableName, $this->getAttribute('type'), $this->getAttribute('name'))); + } + } + + return [$parameters, $isPhpVariadic]; + } + + private function reflectCallable($callable) + { + if (null !== $this->reflector) { + return $this->reflector; + } + + if (\is_array($callable)) { + if (!method_exists($callable[0], $callable[1])) { + // __call() + return [null, []]; + } + $r = new \ReflectionMethod($callable[0], $callable[1]); + } elseif (\is_object($callable) && !$callable instanceof \Closure) { + $r = new \ReflectionObject($callable); + $r = $r->getMethod('__invoke'); + $callable = [$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 [null, []]; + } + $r = new \ReflectionMethod($callable); + $callable = [$class, $method]; + } else { + $r = new \ReflectionFunction($callable); + } + + return $this->reflector = [$r, $callable]; + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/ConditionalExpression.php b/site/www/_rem/lib/twig/Node/Expression/ConditionalExpression.php new file mode 100644 index 0000000..2c7bd0a --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/ConditionalExpression.php @@ -0,0 +1,36 @@ + $expr1, 'expr2' => $expr2, 'expr3' => $expr3], [], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->raw('((') + ->subcompile($this->getNode('expr1')) + ->raw(') ? (') + ->subcompile($this->getNode('expr2')) + ->raw(') : (') + ->subcompile($this->getNode('expr3')) + ->raw('))') + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/ConstantExpression.php b/site/www/_rem/lib/twig/Node/Expression/ConstantExpression.php new file mode 100644 index 0000000..7ddbcc6 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/ConstantExpression.php @@ -0,0 +1,28 @@ + $value], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler->repr($this->getAttribute('value')); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Filter/DefaultFilter.php b/site/www/_rem/lib/twig/Node/Expression/Filter/DefaultFilter.php new file mode 100644 index 0000000..6a572d4 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Filter/DefaultFilter.php @@ -0,0 +1,52 @@ + + */ +class DefaultFilter extends FilterExpression +{ + public function __construct(Node $node, ConstantExpression $filterName, Node $arguments, int $lineno, string $tag = null) + { + $default = new FilterExpression($node, new ConstantExpression('default', $node->getTemplateLine()), $arguments, $node->getTemplateLine()); + + if ('default' === $filterName->getAttribute('value') && ($node instanceof NameExpression || $node instanceof GetAttrExpression)) { + $test = new DefinedTest(clone $node, 'defined', new Node(), $node->getTemplateLine()); + $false = \count($arguments) ? $arguments->getNode(0) : new ConstantExpression('', $node->getTemplateLine()); + + $node = new ConditionalExpression($test, $default, $false, $node->getTemplateLine()); + } else { + $node = $default; + } + + parent::__construct($node, $filterName, $arguments, $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler->subcompile($this->getNode('node')); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/FilterExpression.php b/site/www/_rem/lib/twig/Node/Expression/FilterExpression.php new file mode 100644 index 0000000..0fc1588 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/FilterExpression.php @@ -0,0 +1,40 @@ + $node, 'filter' => $filterName, 'arguments' => $arguments], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $name = $this->getNode('filter')->getAttribute('value'); + $filter = $compiler->getEnvironment()->getFilter($name); + + $this->setAttribute('name', $name); + $this->setAttribute('type', 'filter'); + $this->setAttribute('needs_environment', $filter->needsEnvironment()); + $this->setAttribute('needs_context', $filter->needsContext()); + $this->setAttribute('arguments', $filter->getArguments()); + $this->setAttribute('callable', $filter->getCallable()); + $this->setAttribute('is_variadic', $filter->isVariadic()); + + $this->compileCallable($compiler); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/FunctionExpression.php b/site/www/_rem/lib/twig/Node/Expression/FunctionExpression.php new file mode 100644 index 0000000..7126977 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/FunctionExpression.php @@ -0,0 +1,43 @@ + $arguments], ['name' => $name, 'is_defined_test' => false], $lineno); + } + + public function compile(Compiler $compiler) + { + $name = $this->getAttribute('name'); + $function = $compiler->getEnvironment()->getFunction($name); + + $this->setAttribute('name', $name); + $this->setAttribute('type', 'function'); + $this->setAttribute('needs_environment', $function->needsEnvironment()); + $this->setAttribute('needs_context', $function->needsContext()); + $this->setAttribute('arguments', $function->getArguments()); + $callable = $function->getCallable(); + if ('constant' === $name && $this->getAttribute('is_defined_test')) { + $callable = 'twig_constant_is_defined'; + } + $this->setAttribute('callable', $callable); + $this->setAttribute('is_variadic', $function->isVariadic()); + + $this->compileCallable($compiler); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/GetAttrExpression.php b/site/www/_rem/lib/twig/Node/Expression/GetAttrExpression.php new file mode 100644 index 0000000..e6a75ce --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/GetAttrExpression.php @@ -0,0 +1,87 @@ + $node, 'attribute' => $attribute]; + if (null !== $arguments) { + $nodes['arguments'] = $arguments; + } + + parent::__construct($nodes, ['type' => $type, 'is_defined_test' => false, 'ignore_strict_check' => false, 'optimizable' => true], $lineno); + } + + public function compile(Compiler $compiler): void + { + $env = $compiler->getEnvironment(); + + // optimize array calls + if ( + $this->getAttribute('optimizable') + && (!$env->isStrictVariables() || $this->getAttribute('ignore_strict_check')) + && !$this->getAttribute('is_defined_test') + && Template::ARRAY_CALL === $this->getAttribute('type') + ) { + $var = '$'.$compiler->getVarName(); + $compiler + ->raw('(('.$var.' = ') + ->subcompile($this->getNode('node')) + ->raw(') && is_array(') + ->raw($var) + ->raw(') || ') + ->raw($var) + ->raw(' instanceof ArrayAccess ? (') + ->raw($var) + ->raw('[') + ->subcompile($this->getNode('attribute')) + ->raw('] ?? null) : null)') + ; + + return; + } + + $compiler->raw('twig_get_attribute($this->env, $this->source, '); + + if ($this->getAttribute('ignore_strict_check')) { + $this->getNode('node')->setAttribute('ignore_strict_check', true); + } + + $compiler + ->subcompile($this->getNode('node')) + ->raw(', ') + ->subcompile($this->getNode('attribute')) + ; + + if ($this->hasNode('arguments')) { + $compiler->raw(', ')->subcompile($this->getNode('arguments')); + } else { + $compiler->raw(', []'); + } + + $compiler->raw(', ') + ->repr($this->getAttribute('type')) + ->raw(', ')->repr($this->getAttribute('is_defined_test')) + ->raw(', ')->repr($this->getAttribute('ignore_strict_check')) + ->raw(', ')->repr($env->hasExtension(SandboxExtension::class)) + ->raw(', ')->repr($this->getNode('node')->getTemplateLine()) + ->raw(')') + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/InlinePrint.php b/site/www/_rem/lib/twig/Node/Expression/InlinePrint.php new file mode 100644 index 0000000..1ad4751 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/InlinePrint.php @@ -0,0 +1,35 @@ + $node], [], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->raw('print (') + ->subcompile($this->getNode('node')) + ->raw(')') + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/MethodCallExpression.php b/site/www/_rem/lib/twig/Node/Expression/MethodCallExpression.php new file mode 100644 index 0000000..d5ec0b6 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/MethodCallExpression.php @@ -0,0 +1,62 @@ + $node, 'arguments' => $arguments], ['method' => $method, 'safe' => false, 'is_defined_test' => false], $lineno); + + if ($node instanceof NameExpression) { + $node->setAttribute('always_defined', true); + } + } + + public function compile(Compiler $compiler): void + { + if ($this->getAttribute('is_defined_test')) { + $compiler + ->raw('method_exists($macros[') + ->repr($this->getNode('node')->getAttribute('name')) + ->raw('], ') + ->repr($this->getAttribute('method')) + ->raw(')') + ; + + return; + } + + $compiler + ->raw('twig_call_macro($macros[') + ->repr($this->getNode('node')->getAttribute('name')) + ->raw('], ') + ->repr($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('], ') + ->repr($this->getTemplateLine()) + ->raw(', $context, $this->getSourceContext())'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/NameExpression.php b/site/www/_rem/lib/twig/Node/Expression/NameExpression.php new file mode 100644 index 0000000..c3563f0 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/NameExpression.php @@ -0,0 +1,97 @@ + '$this->getTemplateName()', + '_context' => '$context', + '_charset' => '$this->env->getCharset()', + ]; + + public function __construct(string $name, int $lineno) + { + parent::__construct([], ['name' => $name, 'is_defined_test' => false, 'ignore_strict_check' => false, 'always_defined' => false], $lineno); + } + + public function compile(Compiler $compiler): void + { + $name = $this->getAttribute('name'); + + $compiler->addDebugInfo($this); + + if ($this->getAttribute('is_defined_test')) { + if ($this->isSpecial()) { + $compiler->repr(true); + } elseif (\PHP_VERSION_ID >= 70400) { + $compiler + ->raw('array_key_exists(') + ->string($name) + ->raw(', $context)') + ; + } else { + $compiler + ->raw('(isset($context[') + ->string($name) + ->raw(']) || array_key_exists(') + ->string($name) + ->raw(', $context))') + ; + } + } elseif ($this->isSpecial()) { + $compiler->raw($this->specialVars[$name]); + } elseif ($this->getAttribute('always_defined')) { + $compiler + ->raw('$context[') + ->string($name) + ->raw(']') + ; + } else { + if ($this->getAttribute('ignore_strict_check') || !$compiler->getEnvironment()->isStrictVariables()) { + $compiler + ->raw('($context[') + ->string($name) + ->raw('] ?? null)') + ; + } else { + $compiler + ->raw('(isset($context[') + ->string($name) + ->raw(']) || array_key_exists(') + ->string($name) + ->raw(', $context) ? $context[') + ->string($name) + ->raw('] : (function () { throw new RuntimeError(\'Variable ') + ->string($name) + ->raw(' does not exist.\', ') + ->repr($this->lineno) + ->raw(', $this->source); })()') + ->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/site/www/_rem/lib/twig/Node/Expression/NullCoalesceExpression.php b/site/www/_rem/lib/twig/Node/Expression/NullCoalesceExpression.php new file mode 100644 index 0000000..a72bc4f --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/NullCoalesceExpression.php @@ -0,0 +1,60 @@ +getTemplateLine()); + // for "block()", we don't need the null test as the return value is always a string + if (!$left instanceof BlockReferenceExpression) { + $test = new AndBinary( + $test, + new NotUnary(new NullTest($left, 'null', new Node(), $left->getTemplateLine()), $left->getTemplateLine()), + $left->getTemplateLine() + ); + } + + parent::__construct($test, $left, $right, $lineno); + } + + public function compile(Compiler $compiler): void + { + /* + * 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 ($this->getNode('expr2') instanceof NameExpression) { + $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/site/www/_rem/lib/twig/Node/Expression/ParentExpression.php b/site/www/_rem/lib/twig/Node/Expression/ParentExpression.php new file mode 100644 index 0000000..2549197 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/ParentExpression.php @@ -0,0 +1,46 @@ + + */ +class ParentExpression extends AbstractExpression +{ + public function __construct(string $name, int $lineno, string $tag = null) + { + parent::__construct([], ['output' => false, 'name' => $name], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + 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/site/www/_rem/lib/twig/Node/Expression/TempNameExpression.php b/site/www/_rem/lib/twig/Node/Expression/TempNameExpression.php new file mode 100644 index 0000000..004c704 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/TempNameExpression.php @@ -0,0 +1,31 @@ + $name], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->raw('$_') + ->raw($this->getAttribute('name')) + ->raw('_') + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Test/ConstantTest.php b/site/www/_rem/lib/twig/Node/Expression/Test/ConstantTest.php new file mode 100644 index 0000000..57e9319 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Test/ConstantTest.php @@ -0,0 +1,49 @@ + + */ +class ConstantTest extends TestExpression +{ + public function compile(Compiler $compiler): void + { + $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/site/www/_rem/lib/twig/Node/Expression/Test/DefinedTest.php b/site/www/_rem/lib/twig/Node/Expression/Test/DefinedTest.php new file mode 100644 index 0000000..3953bbb --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Test/DefinedTest.php @@ -0,0 +1,74 @@ + + */ +class DefinedTest extends TestExpression +{ + public function __construct(Node $node, string $name, ?Node $arguments, int $lineno) + { + if ($node instanceof NameExpression) { + $node->setAttribute('is_defined_test', true); + } elseif ($node instanceof GetAttrExpression) { + $node->setAttribute('is_defined_test', true); + $this->changeIgnoreStrictCheck($node); + } elseif ($node instanceof BlockReferenceExpression) { + $node->setAttribute('is_defined_test', true); + } elseif ($node instanceof FunctionExpression && 'constant' === $node->getAttribute('name')) { + $node->setAttribute('is_defined_test', true); + } elseif ($node instanceof ConstantExpression || $node instanceof ArrayExpression) { + $node = new ConstantExpression(true, $node->getTemplateLine()); + } elseif ($node instanceof MethodCallExpression) { + $node->setAttribute('is_defined_test', true); + } else { + throw new SyntaxError('The "defined" test only works with simple variables.', $lineno); + } + + parent::__construct($node, $name, $arguments, $lineno); + } + + private function changeIgnoreStrictCheck(GetAttrExpression $node) + { + $node->setAttribute('optimizable', false); + $node->setAttribute('ignore_strict_check', true); + + if ($node->getNode('node') instanceof GetAttrExpression) { + $this->changeIgnoreStrictCheck($node->getNode('node')); + } + } + + public function compile(Compiler $compiler): void + { + $compiler->subcompile($this->getNode('node')); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Test/DivisiblebyTest.php b/site/www/_rem/lib/twig/Node/Expression/Test/DivisiblebyTest.php new file mode 100644 index 0000000..4cb3ee0 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Test/DivisiblebyTest.php @@ -0,0 +1,36 @@ + + */ +class DivisiblebyTest extends TestExpression +{ + public function compile(Compiler $compiler): void + { + $compiler + ->raw('(0 == ') + ->subcompile($this->getNode('node')) + ->raw(' % ') + ->subcompile($this->getNode('arguments')->getNode(0)) + ->raw(')') + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Test/EvenTest.php b/site/www/_rem/lib/twig/Node/Expression/Test/EvenTest.php new file mode 100644 index 0000000..a0e3ed6 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Test/EvenTest.php @@ -0,0 +1,35 @@ + + */ +class EvenTest extends TestExpression +{ + public function compile(Compiler $compiler): void + { + $compiler + ->raw('(') + ->subcompile($this->getNode('node')) + ->raw(' % 2 == 0') + ->raw(')') + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Test/NullTest.php b/site/www/_rem/lib/twig/Node/Expression/Test/NullTest.php new file mode 100644 index 0000000..45b54ae --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Test/NullTest.php @@ -0,0 +1,34 @@ + + */ +class NullTest extends TestExpression +{ + public function compile(Compiler $compiler): void + { + $compiler + ->raw('(null === ') + ->subcompile($this->getNode('node')) + ->raw(')') + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Test/OddTest.php b/site/www/_rem/lib/twig/Node/Expression/Test/OddTest.php new file mode 100644 index 0000000..d56c711 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Test/OddTest.php @@ -0,0 +1,35 @@ + + */ +class OddTest extends TestExpression +{ + public function compile(Compiler $compiler): void + { + $compiler + ->raw('(') + ->subcompile($this->getNode('node')) + ->raw(' % 2 != 0') + ->raw(')') + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Test/SameasTest.php b/site/www/_rem/lib/twig/Node/Expression/Test/SameasTest.php new file mode 100644 index 0000000..c96d2bc --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Test/SameasTest.php @@ -0,0 +1,34 @@ + + */ +class SameasTest extends TestExpression +{ + public function compile(Compiler $compiler): void + { + $compiler + ->raw('(') + ->subcompile($this->getNode('node')) + ->raw(' === ') + ->subcompile($this->getNode('arguments')->getNode(0)) + ->raw(')') + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/TestExpression.php b/site/www/_rem/lib/twig/Node/Expression/TestExpression.php new file mode 100644 index 0000000..e518bd8 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/TestExpression.php @@ -0,0 +1,42 @@ + $node]; + if (null !== $arguments) { + $nodes['arguments'] = $arguments; + } + + parent::__construct($nodes, ['name' => $name], $lineno); + } + + public function compile(Compiler $compiler): void + { + $name = $this->getAttribute('name'); + $test = $compiler->getEnvironment()->getTest($name); + + $this->setAttribute('name', $name); + $this->setAttribute('type', 'test'); + $this->setAttribute('arguments', $test->getArguments()); + $this->setAttribute('callable', $test->getCallable()); + $this->setAttribute('is_variadic', $test->isVariadic()); + + $this->compileCallable($compiler); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Unary/AbstractUnary.php b/site/www/_rem/lib/twig/Node/Expression/Unary/AbstractUnary.php new file mode 100644 index 0000000..e31e3f8 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Unary/AbstractUnary.php @@ -0,0 +1,34 @@ + $node], [], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler->raw(' '); + $this->operator($compiler); + $compiler->subcompile($this->getNode('node')); + } + + abstract public function operator(Compiler $compiler): Compiler; +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Unary/NegUnary.php b/site/www/_rem/lib/twig/Node/Expression/Unary/NegUnary.php new file mode 100644 index 0000000..dc2f235 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Unary/NegUnary.php @@ -0,0 +1,23 @@ +raw('-'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Unary/NotUnary.php b/site/www/_rem/lib/twig/Node/Expression/Unary/NotUnary.php new file mode 100644 index 0000000..55c11ba --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Unary/NotUnary.php @@ -0,0 +1,23 @@ +raw('!'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/Unary/PosUnary.php b/site/www/_rem/lib/twig/Node/Expression/Unary/PosUnary.php new file mode 100644 index 0000000..4b0a062 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/Unary/PosUnary.php @@ -0,0 +1,23 @@ +raw('+'); + } +} diff --git a/site/www/_rem/lib/twig/Node/Expression/VariadicExpression.php b/site/www/_rem/lib/twig/Node/Expression/VariadicExpression.php new file mode 100644 index 0000000..a1bdb48 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Expression/VariadicExpression.php @@ -0,0 +1,24 @@ +raw('...'); + + parent::compile($compiler); + } +} diff --git a/site/www/_rem/lib/twig/Node/FlushNode.php b/site/www/_rem/lib/twig/Node/FlushNode.php new file mode 100644 index 0000000..fa50a88 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/FlushNode.php @@ -0,0 +1,35 @@ + + */ +class FlushNode extends Node +{ + public function __construct(int $lineno, string $tag) + { + parent::__construct([], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write("flush();\n") + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/ForLoopNode.php b/site/www/_rem/lib/twig/Node/ForLoopNode.php new file mode 100644 index 0000000..d5ce845 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/ForLoopNode.php @@ -0,0 +1,49 @@ + + */ +class ForLoopNode extends Node +{ + public function __construct(int $lineno, string $tag = null) + { + parent::__construct([], ['with_loop' => false, 'ifexpr' => false, 'else' => false], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + 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") + ->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/site/www/_rem/lib/twig/Node/ForNode.php b/site/www/_rem/lib/twig/Node/ForNode.php new file mode 100644 index 0000000..04addfb --- /dev/null +++ b/site/www/_rem/lib/twig/Node/ForNode.php @@ -0,0 +1,107 @@ + + */ +class ForNode extends Node +{ + private $loop; + + public function __construct(AssignNameExpression $keyTarget, AssignNameExpression $valueTarget, AbstractExpression $seq, ?Node $ifexpr, Node $body, ?Node $else, int $lineno, string $tag = null) + { + $body = new Node([$body, $this->loop = new ForLoopNode($lineno, $tag)]); + + $nodes = ['key_target' => $keyTarget, 'value_target' => $valueTarget, 'seq' => $seq, 'body' => $body]; + if (null !== $else) { + $nodes['else'] = $else; + } + + parent::__construct($nodes, ['with_loop' => true], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $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'] = [\n") + ->write(" 'parent' => \$context['_parent'],\n") + ->write(" 'index0' => 0,\n") + ->write(" 'index' => 1,\n") + ->write(" 'first' => true,\n") + ->write("];\n") + ->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')); + + $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/site/www/_rem/lib/twig/Node/IfNode.php b/site/www/_rem/lib/twig/Node/IfNode.php new file mode 100644 index 0000000..5fa2008 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/IfNode.php @@ -0,0 +1,70 @@ + + */ +class IfNode extends Node +{ + public function __construct(Node $tests, ?Node $else, int $lineno, string $tag = null) + { + $nodes = ['tests' => $tests]; + if (null !== $else) { + $nodes['else'] = $else; + } + + parent::__construct($nodes, [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $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/site/www/_rem/lib/twig/Node/ImportNode.php b/site/www/_rem/lib/twig/Node/ImportNode.php new file mode 100644 index 0000000..5378d79 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/ImportNode.php @@ -0,0 +1,63 @@ + + */ +class ImportNode extends Node +{ + public function __construct(AbstractExpression $expr, AbstractExpression $var, int $lineno, string $tag = null, bool $global = true) + { + parent::__construct(['expr' => $expr, 'var' => $var], ['global' => $global], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write('$macros[') + ->repr($this->getNode('var')->getAttribute('name')) + ->raw('] = ') + ; + + if ($this->getAttribute('global')) { + $compiler + ->raw('$this->macros[') + ->repr($this->getNode('var')->getAttribute('name')) + ->raw('] = ') + ; + } + + if ($this->getNode('expr') instanceof NameExpression && '_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(')->unwrap()') + ; + } + + $compiler->raw(";\n"); + } +} diff --git a/site/www/_rem/lib/twig/Node/IncludeNode.php b/site/www/_rem/lib/twig/Node/IncludeNode.php new file mode 100644 index 0000000..d540d6b --- /dev/null +++ b/site/www/_rem/lib/twig/Node/IncludeNode.php @@ -0,0 +1,106 @@ + + */ +class IncludeNode extends Node implements NodeOutputInterface +{ + public function __construct(AbstractExpression $expr, ?AbstractExpression $variables, bool $only, bool $ignoreMissing, int $lineno, string $tag = null) + { + $nodes = ['expr' => $expr]; + if (null !== $variables) { + $nodes['variables'] = $variables; + } + + parent::__construct($nodes, ['only' => $only, 'ignore_missing' => $ignoreMissing], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler->addDebugInfo($this); + + if ($this->getAttribute('ignore_missing')) { + $template = $compiler->getVarName(); + + $compiler + ->write(sprintf("$%s = null;\n", $template)) + ->write("try {\n") + ->indent() + ->write(sprintf('$%s = ', $template)) + ; + + $this->addGetTemplate($compiler); + + $compiler + ->raw(";\n") + ->outdent() + ->write("} catch (LoaderError \$e) {\n") + ->indent() + ->write("// ignore missing template\n") + ->outdent() + ->write("}\n") + ->write(sprintf("if ($%s) {\n", $template)) + ->indent() + ->write(sprintf('$%s->display(', $template)) + ; + $this->addTemplateArguments($compiler); + $compiler + ->raw(");\n") + ->outdent() + ->write("}\n") + ; + } else { + $this->addGetTemplate($compiler); + $compiler->raw('->display('); + $this->addTemplateArguments($compiler); + $compiler->raw(");\n"); + } + } + + protected function addGetTemplate(Compiler $compiler) + { + $compiler + ->write('$this->loadTemplate(') + ->subcompile($this->getNode('expr')) + ->raw(', ') + ->repr($this->getTemplateName()) + ->raw(', ') + ->repr($this->getTemplateLine()) + ->raw(')') + ; + } + + protected function addTemplateArguments(Compiler $compiler) + { + if (!$this->hasNode('variables')) { + $compiler->raw(false === $this->getAttribute('only') ? '$context' : '[]'); + } elseif (false === $this->getAttribute('only')) { + $compiler + ->raw('twig_array_merge($context, ') + ->subcompile($this->getNode('variables')) + ->raw(')') + ; + } else { + $compiler->raw('twig_to_array('); + $compiler->subcompile($this->getNode('variables')); + $compiler->raw(')'); + } + } +} diff --git a/site/www/_rem/lib/twig/Node/MacroNode.php b/site/www/_rem/lib/twig/Node/MacroNode.php new file mode 100644 index 0000000..7f1b24d --- /dev/null +++ b/site/www/_rem/lib/twig/Node/MacroNode.php @@ -0,0 +1,113 @@ + + */ +class MacroNode extends Node +{ + public const VARARGS_NAME = 'varargs'; + + public function __construct(string $name, Node $body, Node $arguments, int $lineno, string $tag = null) + { + foreach ($arguments as $argumentName => $argument) { + if (self::VARARGS_NAME === $argumentName) { + throw new SyntaxError(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(), $argument->getSourceContext()); + } + } + + parent::__construct(['body' => $body, 'arguments' => $arguments], ['name' => $name], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write(sprintf('public function macro_%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 ($count) { + $compiler->raw(', '); + } + + $compiler + ->raw('...$__varargs__') + ->raw(")\n") + ->write("{\n") + ->indent() + ->write("\$macros = \$this->macros;\n") + ->write("\$context = \$this->env->mergeGlobals([\n") + ->indent() + ; + + foreach ($this->getNode('arguments') as $name => $default) { + $compiler + ->write('') + ->string($name) + ->raw(' => $__'.$name.'__') + ->raw(",\n") + ; + } + + $compiler + ->write('') + ->string(self::VARARGS_NAME) + ->raw(' => ') + ; + + $compiler + ->raw("\$__varargs__,\n") + ->outdent() + ->write("]);\n\n") + ->write("\$blocks = [];\n\n") + ; + if ($compiler->getEnvironment()->isDebug()) { + $compiler->write("ob_start();\n"); + } else { + $compiler->write("ob_start(function () { return ''; });\n"); + } + $compiler + ->write("try {\n") + ->indent() + ->subcompile($this->getNode('body')) + ->raw("\n") + ->write("return ('' === \$tmp = ob_get_contents()) ? '' : new Markup(\$tmp, \$this->env->getCharset());\n") + ->outdent() + ->write("} finally {\n") + ->indent() + ->write("ob_end_clean();\n") + ->outdent() + ->write("}\n") + ->outdent() + ->write("}\n\n") + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/ModuleNode.php b/site/www/_rem/lib/twig/Node/ModuleNode.php new file mode 100644 index 0000000..e972b6b --- /dev/null +++ b/site/www/_rem/lib/twig/Node/ModuleNode.php @@ -0,0 +1,464 @@ + + */ +final class ModuleNode extends Node +{ + public function __construct(Node $body, ?AbstractExpression $parent, Node $blocks, Node $macros, Node $traits, $embeddedTemplates, Source $source) + { + $nodes = [ + 'body' => $body, + 'blocks' => $blocks, + 'macros' => $macros, + 'traits' => $traits, + 'display_start' => new Node(), + 'display_end' => new Node(), + 'constructor_start' => new Node(), + 'constructor_end' => new Node(), + 'class_end' => new 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, [ + 'index' => null, + 'embedded_templates' => $embeddedTemplates, + ], 1); + + // populate the template name of all node children + $this->setSourceContext($source); + } + + public function setIndex($index) + { + $this->setAttribute('index', $index); + } + + public function compile(Compiler $compiler): void + { + $this->compileTemplate($compiler); + + foreach ($this->getAttribute('embedded_templates') as $template) { + $compiler->subcompile($template); + } + } + + protected function compileTemplate(Compiler $compiler) + { + if (!$this->getAttribute('index')) { + $compiler->write('compileClassHeader($compiler); + + $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->compileGetSourceContext($compiler); + + $this->compileClassFooter($compiler); + } + + protected function compileGetParent(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 ConstantExpression) { + $compiler->subcompile($parent); + } else { + $compiler + ->raw('$this->loadTemplate(') + ->subcompile($parent) + ->raw(', ') + ->repr($this->getSourceContext()->getName()) + ->raw(', ') + ->repr($parent->getTemplateLine()) + ->raw(')') + ; + } + + $compiler + ->raw(";\n") + ->outdent() + ->write("}\n\n") + ; + } + + protected function compileClassHeader(Compiler $compiler) + { + $compiler + ->write("\n\n") + ; + if (!$this->getAttribute('index')) { + $compiler + ->write("use Twig\Environment;\n") + ->write("use Twig\Error\LoaderError;\n") + ->write("use Twig\Error\RuntimeError;\n") + ->write("use Twig\Extension\SandboxExtension;\n") + ->write("use Twig\Markup;\n") + ->write("use Twig\Sandbox\SecurityError;\n") + ->write("use Twig\Sandbox\SecurityNotAllowedTagError;\n") + ->write("use Twig\Sandbox\SecurityNotAllowedFilterError;\n") + ->write("use Twig\Sandbox\SecurityNotAllowedFunctionError;\n") + ->write("use Twig\Source;\n") + ->write("use Twig\Template;\n\n") + ; + } + $compiler + // if the template name contains */, add a blank to avoid a PHP parse error + ->write('/* '.str_replace('*/', '* /', $this->getSourceContext()->getName())." */\n") + ->write('class '.$compiler->getEnvironment()->getTemplateClass($this->getSourceContext()->getName(), $this->getAttribute('index'))) + ->raw(" extends Template\n") + ->write("{\n") + ->indent() + ->write("private \$source;\n") + ->write("private \$macros = [];\n\n") + ; + } + + protected function compileConstructor(Compiler $compiler) + { + $compiler + ->write("public function __construct(Environment \$env)\n", "{\n") + ->indent() + ->subcompile($this->getNode('constructor_start')) + ->write("parent::__construct(\$env);\n\n") + ->write("\$this->source = \$this->getSourceContext();\n\n") + ; + + // parent + if (!$this->hasNode('parent')) { + $compiler->write("\$this->parent = false;\n\n"); + } + + $countTraits = \count($this->getNode('traits')); + if ($countTraits) { + // traits + foreach ($this->getNode('traits') as $i => $trait) { + $node = $trait->getNode('template'); + + $compiler + ->addDebugInfo($node) + ->write(sprintf('$_trait_%s = $this->loadTemplate(', $i)) + ->subcompile($node) + ->raw(', ') + ->repr($node->getTemplateName()) + ->raw(', ') + ->repr($node->getTemplateLine()) + ->raw(");\n") + ->write(sprintf("if (!\$_trait_%s->isTraitable()) {\n", $i)) + ->indent() + ->write("throw new RuntimeError('Template \"'.") + ->subcompile($trait->getNode('template')) + ->raw(".'\" cannot be used as a trait.', ") + ->repr($node->getTemplateLine()) + ->raw(", \$this->source);\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 RuntimeError('Block ") + ->string($key) + ->raw(' is not defined in trait ') + ->subcompile($trait->getNode('template')) + ->raw(".', ") + ->repr($node->getTemplateLine()) + ->raw(", \$this->source);\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("[\n") + ; + } else { + $compiler + ->write("\$this->blocks = [\n") + ; + } + + // blocks + $compiler + ->indent() + ; + + foreach ($this->getNode('blocks') as $name => $node) { + $compiler + ->write(sprintf("'%s' => [\$this, 'block_%s'],\n", $name, $name)) + ; + } + + if ($countTraits) { + $compiler + ->outdent() + ->write("]\n") + ->outdent() + ->write(");\n") + ; + } else { + $compiler + ->outdent() + ->write("];\n") + ; + } + + $compiler + ->subcompile($this->getNode('constructor_end')) + ->outdent() + ->write("}\n\n") + ; + } + + protected function compileDisplay(Compiler $compiler) + { + $compiler + ->write("protected function doDisplay(array \$context, array \$blocks = [])\n", "{\n") + ->indent() + ->write("\$macros = \$this->macros;\n") + ->subcompile($this->getNode('display_start')) + ->subcompile($this->getNode('body')) + ; + + if ($this->hasNode('parent')) { + $parent = $this->getNode('parent'); + + $compiler->addDebugInfo($parent); + if ($parent instanceof ConstantExpression) { + $compiler + ->write('$this->parent = $this->loadTemplate(') + ->subcompile($parent) + ->raw(', ') + ->repr($this->getSourceContext()->getName()) + ->raw(', ') + ->repr($parent->getTemplateLine()) + ->raw(");\n") + ; + $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(Compiler $compiler) + { + $compiler + ->subcompile($this->getNode('class_end')) + ->outdent() + ->write("}\n") + ; + } + + protected function compileMacros(Compiler $compiler) + { + $compiler->subcompile($this->getNode('macros')); + } + + protected function compileGetTemplateName(Compiler $compiler) + { + $compiler + ->write("public function getTemplateName()\n", "{\n") + ->indent() + ->write('return ') + ->repr($this->getSourceContext()->getName()) + ->raw(";\n") + ->outdent() + ->write("}\n\n") + ; + } + + protected function compileIsTraitable(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 BodyNode) { + $nodes = $this->getNode('body')->getNode(0); + } else { + $nodes = $this->getNode('body'); + } + + if (!\count($nodes)) { + $nodes = new Node([$nodes]); + } + + foreach ($nodes as $node) { + if (!\count($node)) { + continue; + } + + if ($node instanceof TextNode && ctype_space($node->getAttribute('data'))) { + continue; + } + + if ($node instanceof BlockReferenceNode) { + 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(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 compileGetSourceContext(Compiler $compiler) + { + $compiler + ->write("public function getSourceContext()\n", "{\n") + ->indent() + ->write('return new Source(') + ->string($compiler->getEnvironment()->isDebug() ? $this->getSourceContext()->getCode() : '') + ->raw(', ') + ->string($this->getSourceContext()->getName()) + ->raw(', ') + ->string($this->getSourceContext()->getPath()) + ->raw(");\n") + ->outdent() + ->write("}\n") + ; + } + + protected function compileLoadTemplate(Compiler $compiler, $node, $var) + { + if ($node instanceof ConstantExpression) { + $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/site/www/_rem/lib/twig/Node/Node.php b/site/www/_rem/lib/twig/Node/Node.php new file mode 100644 index 0000000..c0558b9 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/Node.php @@ -0,0 +1,179 @@ + + */ +class Node implements \Countable, \IteratorAggregate +{ + protected $nodes; + protected $attributes; + protected $lineno; + protected $tag; + + private $name; + private $sourceContext; + + /** + * @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 $attributes = [], int $lineno = 0, string $tag = null) + { + foreach ($nodes as $name => $node) { + if (!$node instanceof self) { + throw new \InvalidArgumentException(sprintf('Using "%s" for the value of node "%s" of "%s" is not supported. You must pass a \Twig\Node\Node instance.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, static::class)); + } + } + $this->nodes = $nodes; + $this->attributes = $attributes; + $this->lineno = $lineno; + $this->tag = $tag; + } + + public function __toString() + { + $attributes = []; + foreach ($this->attributes as $name => $value) { + $attributes[] = sprintf('%s: %s', $name, str_replace("\n", '', var_export($value, true))); + } + + $repr = [static::class.'('.implode(', ', $attributes)]; + + if (\count($this->nodes)) { + foreach ($this->nodes as $name => $node) { + $len = \strlen($name) + 4; + $noderepr = []; + 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); + } + + /** + * @return void + */ + public function compile(Compiler $compiler) + { + foreach ($this->nodes as $node) { + $node->compile($compiler); + } + } + + public function getTemplateLine(): int + { + return $this->lineno; + } + + public function getNodeTag(): ?string + { + return $this->tag; + } + + public function hasAttribute(string $name): bool + { + return \array_key_exists($name, $this->attributes); + } + + public function getAttribute(string $name) + { + if (!\array_key_exists($name, $this->attributes)) { + throw new \LogicException(sprintf('Attribute "%s" does not exist for Node "%s".', $name, static::class)); + } + + return $this->attributes[$name]; + } + + public function setAttribute(string $name, $value): void + { + $this->attributes[$name] = $value; + } + + public function removeAttribute(string $name): void + { + unset($this->attributes[$name]); + } + + public function hasNode(string $name): bool + { + return isset($this->nodes[$name]); + } + + public function getNode(string $name): self + { + if (!isset($this->nodes[$name])) { + throw new \LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, static::class)); + } + + return $this->nodes[$name]; + } + + public function setNode(string $name, self $node): void + { + $this->nodes[$name] = $node; + } + + public function removeNode(string $name): void + { + unset($this->nodes[$name]); + } + + /** + * @return int + */ + #[\ReturnTypeWillChange] + public function count() + { + return \count($this->nodes); + } + + public function getIterator(): \Traversable + { + return new \ArrayIterator($this->nodes); + } + + public function getTemplateName(): ?string + { + return $this->sourceContext ? $this->sourceContext->getName() : null; + } + + public function setSourceContext(Source $source): void + { + $this->sourceContext = $source; + foreach ($this->nodes as $node) { + $node->setSourceContext($source); + } + } + + public function getSourceContext(): ?Source + { + return $this->sourceContext; + } +} diff --git a/site/www/_rem/lib/twig/Node/NodeCaptureInterface.php b/site/www/_rem/lib/twig/Node/NodeCaptureInterface.php new file mode 100644 index 0000000..9fb6a0c --- /dev/null +++ b/site/www/_rem/lib/twig/Node/NodeCaptureInterface.php @@ -0,0 +1,21 @@ + + */ +interface NodeCaptureInterface +{ +} diff --git a/site/www/_rem/lib/twig/Node/NodeOutputInterface.php b/site/www/_rem/lib/twig/Node/NodeOutputInterface.php new file mode 100644 index 0000000..5e35b40 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/NodeOutputInterface.php @@ -0,0 +1,21 @@ + + */ +interface NodeOutputInterface +{ +} diff --git a/site/www/_rem/lib/twig/Node/PrintNode.php b/site/www/_rem/lib/twig/Node/PrintNode.php new file mode 100644 index 0000000..60386d2 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/PrintNode.php @@ -0,0 +1,39 @@ + + */ +class PrintNode extends Node implements NodeOutputInterface +{ + public function __construct(AbstractExpression $expr, int $lineno, string $tag = null) + { + parent::__construct(['expr' => $expr], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write('echo ') + ->subcompile($this->getNode('expr')) + ->raw(";\n") + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/SandboxNode.php b/site/www/_rem/lib/twig/Node/SandboxNode.php new file mode 100644 index 0000000..4d5666b --- /dev/null +++ b/site/www/_rem/lib/twig/Node/SandboxNode.php @@ -0,0 +1,52 @@ + + */ +class SandboxNode extends Node +{ + public function __construct(Node $body, int $lineno, string $tag = null) + { + parent::__construct(['body' => $body], [], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write("if (!\$alreadySandboxed = \$this->sandbox->isSandboxed()) {\n") + ->indent() + ->write("\$this->sandbox->enableSandbox();\n") + ->outdent() + ->write("}\n") + ->write("try {\n") + ->indent() + ->subcompile($this->getNode('body')) + ->outdent() + ->write("} finally {\n") + ->indent() + ->write("if (!\$alreadySandboxed) {\n") + ->indent() + ->write("\$this->sandbox->disableSandbox();\n") + ->outdent() + ->write("}\n") + ->outdent() + ->write("}\n") + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/SetNode.php b/site/www/_rem/lib/twig/Node/SetNode.php new file mode 100644 index 0000000..96b6bd8 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/SetNode.php @@ -0,0 +1,105 @@ + + */ +class SetNode extends Node implements NodeCaptureInterface +{ + public function __construct(bool $capture, Node $names, Node $values, int $lineno, string $tag = null) + { + parent::__construct(['names' => $names, 'values' => $values], ['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 TextNode) { + $this->setNode('values', new ConstantExpression($values->getAttribute('data'), $values->getTemplateLine())); + $this->setAttribute('capture', false); + } + } + } + + public function compile(Compiler $compiler): void + { + $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')) { + if ($compiler->getEnvironment()->isDebug()) { + $compiler->write("ob_start();\n"); + } else { + $compiler->write("ob_start(function () { return ''; });\n"); + } + $compiler + ->subcompile($this->getNode('values')) + ; + } + + $compiler->subcompile($this->getNode('names'), false); + + if ($this->getAttribute('capture')) { + $compiler->raw(" = ('' === \$tmp = ob_get_clean()) ? '' : new Markup(\$tmp, \$this->env->getCharset())"); + } + } + + if (!$this->getAttribute('capture')) { + $compiler->raw(' = '); + + if (\count($this->getNode('names')) > 1) { + $compiler->write('['); + 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 Markup(\$tmp, \$this->env->getCharset())") + ; + } else { + $compiler->subcompile($this->getNode('values')); + } + } + } + + $compiler->raw(";\n"); + } +} diff --git a/site/www/_rem/lib/twig/Node/TextNode.php b/site/www/_rem/lib/twig/Node/TextNode.php new file mode 100644 index 0000000..d74ebe6 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/TextNode.php @@ -0,0 +1,38 @@ + + */ +class TextNode extends Node implements NodeOutputInterface +{ + public function __construct(string $data, int $lineno) + { + parent::__construct([], ['data' => $data], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->addDebugInfo($this) + ->write('echo ') + ->string($this->getAttribute('data')) + ->raw(";\n") + ; + } +} diff --git a/site/www/_rem/lib/twig/Node/WithNode.php b/site/www/_rem/lib/twig/Node/WithNode.php new file mode 100644 index 0000000..56a3344 --- /dev/null +++ b/site/www/_rem/lib/twig/Node/WithNode.php @@ -0,0 +1,70 @@ + + */ +class WithNode extends Node +{ + public function __construct(Node $body, ?Node $variables, bool $only, int $lineno, string $tag = null) + { + $nodes = ['body' => $body]; + if (null !== $variables) { + $nodes['variables'] = $variables; + } + + parent::__construct($nodes, ['only' => $only], $lineno, $tag); + } + + public function compile(Compiler $compiler): void + { + $compiler->addDebugInfo($this); + + $parentContextName = $compiler->getVarName(); + + $compiler->write(sprintf("\$%s = \$context;\n", $parentContextName)); + + if ($this->hasNode('variables')) { + $node = $this->getNode('variables'); + $varsName = $compiler->getVarName(); + $compiler + ->write(sprintf('$%s = ', $varsName)) + ->subcompile($node) + ->raw(";\n") + ->write(sprintf("if (!twig_test_iterable(\$%s)) {\n", $varsName)) + ->indent() + ->write("throw new RuntimeError('Variables passed to the \"with\" tag must be a hash.', ") + ->repr($node->getTemplateLine()) + ->raw(", \$this->getSourceContext());\n") + ->outdent() + ->write("}\n") + ->write(sprintf("\$%s = twig_to_array(\$%s);\n", $varsName, $varsName)) + ; + + if ($this->getAttribute('only')) { + $compiler->write("\$context = [];\n"); + } + + $compiler->write(sprintf("\$context = \$this->env->mergeGlobals(array_merge(\$context, \$%s));\n", $varsName)); + } + + $compiler + ->subcompile($this->getNode('body')) + ->write(sprintf("\$context = \$%s;\n", $parentContextName)) + ; + } +} diff --git a/site/www/_rem/lib/twig/NodeTraverser.php b/site/www/_rem/lib/twig/NodeTraverser.php new file mode 100644 index 0000000..47a2d5c --- /dev/null +++ b/site/www/_rem/lib/twig/NodeTraverser.php @@ -0,0 +1,76 @@ + + */ +final class NodeTraverser +{ + private $env; + private $visitors = []; + + /** + * @param NodeVisitorInterface[] $visitors + */ + public function __construct(Environment $env, array $visitors = []) + { + $this->env = $env; + foreach ($visitors as $visitor) { + $this->addVisitor($visitor); + } + } + + public function addVisitor(NodeVisitorInterface $visitor): void + { + $this->visitors[$visitor->getPriority()][] = $visitor; + } + + /** + * Traverses a node and calls the registered visitors. + */ + public function traverse(Node $node): Node + { + ksort($this->visitors); + foreach ($this->visitors as $visitors) { + foreach ($visitors as $visitor) { + $node = $this->traverseForVisitor($visitor, $node); + } + } + + return $node; + } + + private function traverseForVisitor(NodeVisitorInterface $visitor, Node $node): ?Node + { + $node = $visitor->enterNode($node, $this->env); + + foreach ($node as $k => $n) { + if (null !== $m = $this->traverseForVisitor($visitor, $n)) { + if ($m !== $n) { + $node->setNode($k, $m); + } + } else { + $node->removeNode($k); + } + } + + return $visitor->leaveNode($node, $this->env); + } +} diff --git a/site/www/_rem/lib/twig/NodeVisitor/AbstractNodeVisitor.php b/site/www/_rem/lib/twig/NodeVisitor/AbstractNodeVisitor.php new file mode 100644 index 0000000..d7036ae --- /dev/null +++ b/site/www/_rem/lib/twig/NodeVisitor/AbstractNodeVisitor.php @@ -0,0 +1,49 @@ + + */ +abstract class AbstractNodeVisitor implements NodeVisitorInterface +{ + final public function enterNode(Node $node, Environment $env): Node + { + return $this->doEnterNode($node, $env); + } + + final public function leaveNode(Node $node, Environment $env): ?Node + { + return $this->doLeaveNode($node, $env); + } + + /** + * Called before child nodes are visited. + * + * @return Node The modified node + */ + abstract protected function doEnterNode(Node $node, Environment $env); + + /** + * Called after child nodes are visited. + * + * @return Node|null The modified node or null if the node must be removed + */ + abstract protected function doLeaveNode(Node $node, Environment $env); +} diff --git a/site/www/_rem/lib/twig/NodeVisitor/EscaperNodeVisitor.php b/site/www/_rem/lib/twig/NodeVisitor/EscaperNodeVisitor.php new file mode 100644 index 0000000..fe56ea3 --- /dev/null +++ b/site/www/_rem/lib/twig/NodeVisitor/EscaperNodeVisitor.php @@ -0,0 +1,208 @@ + + * + * @internal + */ +final class EscaperNodeVisitor implements NodeVisitorInterface +{ + private $statusStack = []; + private $blocks = []; + private $safeAnalysis; + private $traverser; + private $defaultStrategy = false; + private $safeVars = []; + + public function __construct() + { + $this->safeAnalysis = new SafeAnalysisNodeVisitor(); + } + + public function enterNode(Node $node, Environment $env): Node + { + if ($node instanceof ModuleNode) { + if ($env->hasExtension(EscaperExtension::class) && $defaultStrategy = $env->getExtension(EscaperExtension::class)->getDefaultStrategy($node->getTemplateName())) { + $this->defaultStrategy = $defaultStrategy; + } + $this->safeVars = []; + $this->blocks = []; + } elseif ($node instanceof AutoEscapeNode) { + $this->statusStack[] = $node->getAttribute('value'); + } elseif ($node instanceof BlockNode) { + $this->statusStack[] = isset($this->blocks[$node->getAttribute('name')]) ? $this->blocks[$node->getAttribute('name')] : $this->needEscaping($env); + } elseif ($node instanceof ImportNode) { + $this->safeVars[] = $node->getNode('var')->getAttribute('name'); + } + + return $node; + } + + public function leaveNode(Node $node, Environment $env): ?Node + { + if ($node instanceof ModuleNode) { + $this->defaultStrategy = false; + $this->safeVars = []; + $this->blocks = []; + } elseif ($node instanceof FilterExpression) { + return $this->preEscapeFilterNode($node, $env); + } elseif ($node instanceof PrintNode && false !== $type = $this->needEscaping($env)) { + $expression = $node->getNode('expr'); + if ($expression instanceof ConditionalExpression && $this->shouldUnwrapConditional($expression, $env, $type)) { + return new DoNode($this->unwrapConditional($expression, $env, $type), $expression->getTemplateLine()); + } + + return $this->escapePrintNode($node, $env, $type); + } + + if ($node instanceof AutoEscapeNode || $node instanceof BlockNode) { + array_pop($this->statusStack); + } elseif ($node instanceof BlockReferenceNode) { + $this->blocks[$node->getAttribute('name')] = $this->needEscaping($env); + } + + return $node; + } + + private function shouldUnwrapConditional(ConditionalExpression $expression, Environment $env, string $type): bool + { + $expr2Safe = $this->isSafeFor($type, $expression->getNode('expr2'), $env); + $expr3Safe = $this->isSafeFor($type, $expression->getNode('expr3'), $env); + + return $expr2Safe !== $expr3Safe; + } + + private function unwrapConditional(ConditionalExpression $expression, Environment $env, string $type): ConditionalExpression + { + // convert "echo a ? b : c" to "a ? echo b : echo c" recursively + $expr2 = $expression->getNode('expr2'); + if ($expr2 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr2, $env, $type)) { + $expr2 = $this->unwrapConditional($expr2, $env, $type); + } else { + $expr2 = $this->escapeInlinePrintNode(new InlinePrint($expr2, $expr2->getTemplateLine()), $env, $type); + } + $expr3 = $expression->getNode('expr3'); + if ($expr3 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr3, $env, $type)) { + $expr3 = $this->unwrapConditional($expr3, $env, $type); + } else { + $expr3 = $this->escapeInlinePrintNode(new InlinePrint($expr3, $expr3->getTemplateLine()), $env, $type); + } + + return new ConditionalExpression($expression->getNode('expr1'), $expr2, $expr3, $expression->getTemplateLine()); + } + + private function escapeInlinePrintNode(InlinePrint $node, Environment $env, string $type): Node + { + $expression = $node->getNode('node'); + + if ($this->isSafeFor($type, $expression, $env)) { + return $node; + } + + return new InlinePrint($this->getEscaperFilter($type, $expression), $node->getTemplateLine()); + } + + private function escapePrintNode(PrintNode $node, Environment $env, string $type): Node + { + 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()); + } + + private function preEscapeFilterNode(FilterExpression $filter, Environment $env): FilterExpression + { + $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; + } + + private function isSafeFor(string $type, Node $expression, Environment $env): bool + { + $safe = $this->safeAnalysis->getSafe($expression); + + if (null === $safe) { + if (null === $this->traverser) { + $this->traverser = new NodeTraverser($env, [$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); + } + + private function needEscaping(Environment $env) + { + if (\count($this->statusStack)) { + return $this->statusStack[\count($this->statusStack) - 1]; + } + + return $this->defaultStrategy ? $this->defaultStrategy : false; + } + + private function getEscaperFilter(string $type, Node $node): FilterExpression + { + $line = $node->getTemplateLine(); + $name = new ConstantExpression('escape', $line); + $args = new Node([new ConstantExpression($type, $line), new ConstantExpression(null, $line), new ConstantExpression(true, $line)]); + + return new FilterExpression($node, $name, $args, $line); + } + + public function getPriority(): int + { + return 0; + } +} diff --git a/site/www/_rem/lib/twig/NodeVisitor/MacroAutoImportNodeVisitor.php b/site/www/_rem/lib/twig/NodeVisitor/MacroAutoImportNodeVisitor.php new file mode 100644 index 0000000..af477e6 --- /dev/null +++ b/site/www/_rem/lib/twig/NodeVisitor/MacroAutoImportNodeVisitor.php @@ -0,0 +1,74 @@ + + * + * @internal + */ +final class MacroAutoImportNodeVisitor implements NodeVisitorInterface +{ + private $inAModule = false; + private $hasMacroCalls = false; + + public function enterNode(Node $node, Environment $env): Node + { + if ($node instanceof ModuleNode) { + $this->inAModule = true; + $this->hasMacroCalls = false; + } + + return $node; + } + + public function leaveNode(Node $node, Environment $env): Node + { + if ($node instanceof ModuleNode) { + $this->inAModule = false; + if ($this->hasMacroCalls) { + $node->getNode('constructor_end')->setNode('_auto_macro_import', new ImportNode(new NameExpression('_self', 0), new AssignNameExpression('_self', 0), 0, 'import', true)); + } + } elseif ($this->inAModule) { + if ( + $node instanceof GetAttrExpression && + $node->getNode('node') instanceof NameExpression && + '_self' === $node->getNode('node')->getAttribute('name') && + $node->getNode('attribute') instanceof ConstantExpression + ) { + $this->hasMacroCalls = true; + + $name = $node->getNode('attribute')->getAttribute('value'); + $node = new MethodCallExpression($node->getNode('node'), 'macro_'.$name, $node->getNode('arguments'), $node->getTemplateLine()); + $node->setAttribute('safe', true); + } + } + + return $node; + } + + public function getPriority(): int + { + // we must be ran before auto-escaping + return -10; + } +} diff --git a/site/www/_rem/lib/twig/NodeVisitor/NodeVisitorInterface.php b/site/www/_rem/lib/twig/NodeVisitor/NodeVisitorInterface.php new file mode 100644 index 0000000..59e836d --- /dev/null +++ b/site/www/_rem/lib/twig/NodeVisitor/NodeVisitorInterface.php @@ -0,0 +1,46 @@ + + */ +interface NodeVisitorInterface +{ + /** + * Called before child nodes are visited. + * + * @return Node The modified node + */ + public function enterNode(Node $node, Environment $env): Node; + + /** + * Called after child nodes are visited. + * + * @return Node|null The modified node or null if the node must be removed + */ + public function leaveNode(Node $node, Environment $env): ?Node; + + /** + * 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/site/www/_rem/lib/twig/NodeVisitor/OptimizerNodeVisitor.php b/site/www/_rem/lib/twig/NodeVisitor/OptimizerNodeVisitor.php new file mode 100644 index 0000000..7ac75e4 --- /dev/null +++ b/site/www/_rem/lib/twig/NodeVisitor/OptimizerNodeVisitor.php @@ -0,0 +1,217 @@ + + * + * @internal + */ +final class OptimizerNodeVisitor implements NodeVisitorInterface +{ + public const OPTIMIZE_ALL = -1; + public const OPTIMIZE_NONE = 0; + public const OPTIMIZE_FOR = 2; + public const OPTIMIZE_RAW_FILTER = 4; + + private $loops = []; + private $loopsTargets = []; + private $optimizers; + + /** + * @param int $optimizers The optimizer mode + */ + public function __construct(int $optimizers = -1) + { + if ($optimizers > (self::OPTIMIZE_FOR | self::OPTIMIZE_RAW_FILTER)) { + throw new \InvalidArgumentException(sprintf('Optimizer mode "%s" is not valid.', $optimizers)); + } + + $this->optimizers = $optimizers; + } + + public function enterNode(Node $node, Environment $env): Node + { + if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) { + $this->enterOptimizeFor($node, $env); + } + + return $node; + } + + public function leaveNode(Node $node, Environment $env): ?Node + { + 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); + + return $node; + } + + /** + * Optimizes print nodes. + * + * It replaces: + * + * * "echo $this->render(Parent)Block()" with "$this->display(Parent)Block()" + */ + private function optimizePrintNode(Node $node, Environment $env): Node + { + if (!$node instanceof PrintNode) { + return $node; + } + + $exprNode = $node->getNode('expr'); + if ( + $exprNode instanceof BlockReferenceExpression || + $exprNode instanceof ParentExpression + ) { + $exprNode->setAttribute('output', true); + + return $exprNode; + } + + return $node; + } + + /** + * Removes "raw" filters. + */ + private function optimizeRawFilter(Node $node, Environment $env): Node + { + if ($node instanceof FilterExpression && 'raw' == $node->getNode('filter')->getAttribute('value')) { + return $node->getNode('node'); + } + + return $node; + } + + /** + * Optimizes "for" tag by removing the "loop" variable creation whenever possible. + */ + private function enterOptimizeFor(Node $node, Environment $env): void + { + if ($node instanceof ForNode) { + // 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 NameExpression && 'loop' === $node->getAttribute('name')) { + $node->setAttribute('always_defined', true); + $this->addLoopToCurrent(); + } + + // optimize access to loop targets + elseif ($node instanceof NameExpression && \in_array($node->getAttribute('name'), $this->loopsTargets)) { + $node->setAttribute('always_defined', true); + } + + // block reference + elseif ($node instanceof BlockReferenceNode || $node instanceof BlockReferenceExpression) { + $this->addLoopToCurrent(); + } + + // include without the only attribute + elseif ($node instanceof IncludeNode && !$node->getAttribute('only')) { + $this->addLoopToAll(); + } + + // include function without the with_context=false parameter + elseif ($node instanceof FunctionExpression + && '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 GetAttrExpression + && (!$node->getNode('attribute') instanceof ConstantExpression + || 'parent' === $node->getNode('attribute')->getAttribute('value') + ) + && (true === $this->loops[0]->getAttribute('with_loop') + || ($node->getNode('node') instanceof NameExpression + && 'loop' === $node->getNode('node')->getAttribute('name') + ) + ) + ) { + $this->addLoopToAll(); + } + } + + /** + * Optimizes "for" tag by removing the "loop" variable creation whenever possible. + */ + private function leaveOptimizeFor(Node $node, Environment $env): void + { + if ($node instanceof ForNode) { + array_shift($this->loops); + array_shift($this->loopsTargets); + array_shift($this->loopsTargets); + } + } + + private function addLoopToCurrent(): void + { + $this->loops[0]->setAttribute('with_loop', true); + } + + private function addLoopToAll(): void + { + foreach ($this->loops as $loop) { + $loop->setAttribute('with_loop', true); + } + } + + public function getPriority(): int + { + return 255; + } +} diff --git a/site/www/_rem/lib/twig/NodeVisitor/SafeAnalysisNodeVisitor.php b/site/www/_rem/lib/twig/NodeVisitor/SafeAnalysisNodeVisitor.php new file mode 100644 index 0000000..90d6f2e --- /dev/null +++ b/site/www/_rem/lib/twig/NodeVisitor/SafeAnalysisNodeVisitor.php @@ -0,0 +1,160 @@ +safeVars = $safeVars; + } + + public function getSafe(Node $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']; + } + } + + private function setSafe(Node $node, array $safe): void + { + $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][] = [ + 'key' => $node, + 'value' => $safe, + ]; + } + + public function enterNode(Node $node, Environment $env): Node + { + return $node; + } + + public function leaveNode(Node $node, Environment $env): ?Node + { + if ($node instanceof ConstantExpression) { + // constants are marked safe for all + $this->setSafe($node, ['all']); + } elseif ($node instanceof BlockReferenceExpression) { + // blocks are safe by definition + $this->setSafe($node, ['all']); + } elseif ($node instanceof ParentExpression) { + // parent block is safe by definition + $this->setSafe($node, ['all']); + } elseif ($node instanceof ConditionalExpression) { + // 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 FilterExpression) { + // filter expression is safe when the filter is safe + $name = $node->getNode('filter')->getAttribute('value'); + $args = $node->getNode('arguments'); + if ($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, []); + } + } elseif ($node instanceof FunctionExpression) { + // function expression is safe when the function is safe + $name = $node->getAttribute('name'); + $args = $node->getNode('arguments'); + if ($function = $env->getFunction($name)) { + $this->setSafe($node, $function->getSafe($args)); + } else { + $this->setSafe($node, []); + } + } elseif ($node instanceof MethodCallExpression) { + if ($node->getAttribute('safe')) { + $this->setSafe($node, ['all']); + } else { + $this->setSafe($node, []); + } + } elseif ($node instanceof GetAttrExpression && $node->getNode('node') instanceof NameExpression) { + $name = $node->getNode('node')->getAttribute('name'); + if (\in_array($name, $this->safeVars)) { + $this->setSafe($node, ['all']); + } else { + $this->setSafe($node, []); + } + } else { + $this->setSafe($node, []); + } + + return $node; + } + + private function intersectSafe(array $a = null, array $b = null): array + { + if (null === $a || null === $b) { + return []; + } + + if (\in_array('all', $a)) { + return $b; + } + + if (\in_array('all', $b)) { + return $a; + } + + return array_intersect($a, $b); + } + + public function getPriority(): int + { + return 0; + } +} diff --git a/site/www/_rem/lib/twig/NodeVisitor/SandboxNodeVisitor.php b/site/www/_rem/lib/twig/NodeVisitor/SandboxNodeVisitor.php new file mode 100644 index 0000000..1446cee --- /dev/null +++ b/site/www/_rem/lib/twig/NodeVisitor/SandboxNodeVisitor.php @@ -0,0 +1,136 @@ + + * + * @internal + */ +final class SandboxNodeVisitor implements NodeVisitorInterface +{ + private $inAModule = false; + private $tags; + private $filters; + private $functions; + private $needsToStringWrap = false; + + public function enterNode(Node $node, Environment $env): Node + { + if ($node instanceof ModuleNode) { + $this->inAModule = true; + $this->tags = []; + $this->filters = []; + $this->functions = []; + + 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 FilterExpression && !isset($this->filters[$node->getNode('filter')->getAttribute('value')])) { + $this->filters[$node->getNode('filter')->getAttribute('value')] = $node; + } + + // look for functions + if ($node instanceof FunctionExpression && !isset($this->functions[$node->getAttribute('name')])) { + $this->functions[$node->getAttribute('name')] = $node; + } + + // the .. operator is equivalent to the range() function + if ($node instanceof RangeBinary && !isset($this->functions['range'])) { + $this->functions['range'] = $node; + } + + if ($node instanceof PrintNode) { + $this->needsToStringWrap = true; + $this->wrapNode($node, 'expr'); + } + + if ($node instanceof SetNode && !$node->getAttribute('capture')) { + $this->needsToStringWrap = true; + } + + // wrap outer nodes that can implicitly call __toString() + if ($this->needsToStringWrap) { + if ($node instanceof ConcatBinary) { + $this->wrapNode($node, 'left'); + $this->wrapNode($node, 'right'); + } + if ($node instanceof FilterExpression) { + $this->wrapNode($node, 'node'); + $this->wrapArrayNode($node, 'arguments'); + } + if ($node instanceof FunctionExpression) { + $this->wrapArrayNode($node, 'arguments'); + } + } + } + + return $node; + } + + public function leaveNode(Node $node, Environment $env): ?Node + { + if ($node instanceof ModuleNode) { + $this->inAModule = false; + + $node->setNode('constructor_end', new Node([new CheckSecurityCallNode(), $node->getNode('constructor_end')])); + $node->setNode('class_end', new Node([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('class_end')])); + } elseif ($this->inAModule) { + if ($node instanceof PrintNode || $node instanceof SetNode) { + $this->needsToStringWrap = false; + } + } + + return $node; + } + + private function wrapNode(Node $node, string $name): void + { + $expr = $node->getNode($name); + if ($expr instanceof NameExpression || $expr instanceof GetAttrExpression) { + $node->setNode($name, new CheckToStringNode($expr)); + } + } + + private function wrapArrayNode(Node $node, string $name): void + { + $args = $node->getNode($name); + foreach ($args as $name => $_) { + $this->wrapNode($args, $name); + } + } + + public function getPriority(): int + { + return 0; + } +} diff --git a/site/www/_rem/lib/twig/Parser.php b/site/www/_rem/lib/twig/Parser.php new file mode 100644 index 0000000..d0e77b3 --- /dev/null +++ b/site/www/_rem/lib/twig/Parser.php @@ -0,0 +1,349 @@ + + */ +class Parser +{ + private $stack = []; + private $stream; + private $parent; + private $visitors; + private $expressionParser; + private $blocks; + private $blockStack; + private $macros; + private $env; + private $importedSymbols; + private $traits; + private $embeddedTemplates = []; + private $varNameSalt = 0; + + public function __construct(Environment $env) + { + $this->env = $env; + } + + public function getVarName(): string + { + return sprintf('__internal_parse_%d', $this->varNameSalt++); + } + + public function parse(TokenStream $stream, $test = null, bool $dropNeedle = false): ModuleNode + { + $vars = get_object_vars($this); + unset($vars['stack'], $vars['env'], $vars['handlers'], $vars['visitors'], $vars['expressionParser'], $vars['reservedMacroNames']); + $this->stack[] = $vars; + + // node visitors + if (null === $this->visitors) { + $this->visitors = $this->env->getNodeVisitors(); + } + + if (null === $this->expressionParser) { + $this->expressionParser = new ExpressionParser($this, $this->env); + } + + $this->stream = $stream; + $this->parent = null; + $this->blocks = []; + $this->macros = []; + $this->traits = []; + $this->blockStack = []; + $this->importedSymbols = [[]]; + $this->embeddedTemplates = []; + $this->varNameSalt = 0; + + try { + $body = $this->subparse($test, $dropNeedle); + + if (null !== $this->parent && null === $body = $this->filterBodyNodes($body)) { + $body = new Node(); + } + } catch (SyntaxError $e) { + if (!$e->getSourceContext()) { + $e->setSourceContext($this->stream->getSourceContext()); + } + + if (!$e->getTemplateLine()) { + $e->setTemplateLine($this->stream->getCurrent()->getLine()); + } + + throw $e; + } + + $node = new ModuleNode(new BodyNode([$body]), $this->parent, new Node($this->blocks), new Node($this->macros), new Node($this->traits), $this->embeddedTemplates, $stream->getSourceContext()); + + $traverser = new 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, bool $dropNeedle = false): Node + { + $lineno = $this->getCurrentToken()->getLine(); + $rv = []; + while (!$this->stream->isEOF()) { + switch ($this->getCurrentToken()->getType()) { + case /* Token::TEXT_TYPE */ 0: + $token = $this->stream->next(); + $rv[] = new TextNode($token->getValue(), $token->getLine()); + break; + + case /* Token::VAR_START_TYPE */ 2: + $token = $this->stream->next(); + $expr = $this->expressionParser->parseExpression(); + $this->stream->expect(/* Token::VAR_END_TYPE */ 4); + $rv[] = new PrintNode($expr, $token->getLine()); + break; + + case /* Token::BLOCK_START_TYPE */ 1: + $this->stream->next(); + $token = $this->getCurrentToken(); + + if (/* Token::NAME_TYPE */ 5 !== $token->getType()) { + throw new SyntaxError('A block must start with a tag name.', $token->getLine(), $this->stream->getSourceContext()); + } + + if (null !== $test && $test($token)) { + if ($dropNeedle) { + $this->stream->next(); + } + + if (1 === \count($rv)) { + return $rv[0]; + } + + return new Node($rv, [], $lineno); + } + + if (!$subparser = $this->env->getTokenParser($token->getValue())) { + if (null !== $test) { + $e = new SyntaxError(sprintf('Unexpected "%s" tag', $token->getValue()), $token->getLine(), $this->stream->getSourceContext()); + + if (\is_array($test) && isset($test[0]) && $test[0] instanceof TokenParserInterface) { + $e->appendMessage(sprintf(' (expecting closing tag for the "%s" tag defined near line %s).', $test[0]->getTag(), $lineno)); + } + } else { + $e = new SyntaxError(sprintf('Unknown "%s" tag.', $token->getValue()), $token->getLine(), $this->stream->getSourceContext()); + $e->addSuggestions($token->getValue(), array_keys($this->env->getTokenParsers())); + } + + throw $e; + } + + $this->stream->next(); + + $subparser->setParser($this); + $node = $subparser->parse($token); + if (null !== $node) { + $rv[] = $node; + } + break; + + default: + throw new SyntaxError('Lexer or parser ended up in unsupported state.', $this->getCurrentToken()->getLine(), $this->stream->getSourceContext()); + } + } + + if (1 === \count($rv)) { + return $rv[0]; + } + + return new Node($rv, [], $lineno); + } + + public function getBlockStack(): array + { + return $this->blockStack; + } + + public function peekBlockStack() + { + return $this->blockStack[\count($this->blockStack) - 1] ?? null; + } + + public function popBlockStack(): void + { + array_pop($this->blockStack); + } + + public function pushBlockStack($name): void + { + $this->blockStack[] = $name; + } + + public function hasBlock(string $name): bool + { + return isset($this->blocks[$name]); + } + + public function getBlock(string $name): Node + { + return $this->blocks[$name]; + } + + public function setBlock(string $name, BlockNode $value): void + { + $this->blocks[$name] = new BodyNode([$value], [], $value->getTemplateLine()); + } + + public function hasMacro(string $name): bool + { + return isset($this->macros[$name]); + } + + public function setMacro(string $name, MacroNode $node): void + { + $this->macros[$name] = $node; + } + + public function addTrait($trait): void + { + $this->traits[] = $trait; + } + + public function hasTraits(): bool + { + return \count($this->traits) > 0; + } + + public function embedTemplate(ModuleNode $template) + { + $template->setIndex(mt_rand()); + + $this->embeddedTemplates[] = $template; + } + + public function addImportedSymbol(string $type, string $alias, string $name = null, AbstractExpression $node = null): void + { + $this->importedSymbols[0][$type][$alias] = ['name' => $name, 'node' => $node]; + } + + public function getImportedSymbol(string $type, string $alias) + { + // if the symbol does not exist in the current scope (0), try in the main/global scope (last index) + return $this->importedSymbols[0][$type][$alias] ?? ($this->importedSymbols[\count($this->importedSymbols) - 1][$type][$alias] ?? null); + } + + public function isMainScope(): bool + { + return 1 === \count($this->importedSymbols); + } + + public function pushLocalScope(): void + { + array_unshift($this->importedSymbols, []); + } + + public function popLocalScope(): void + { + array_shift($this->importedSymbols); + } + + public function getExpressionParser(): ExpressionParser + { + return $this->expressionParser; + } + + public function getParent(): ?Node + { + return $this->parent; + } + + public function setParent(?Node $parent): void + { + $this->parent = $parent; + } + + public function getStream(): TokenStream + { + return $this->stream; + } + + public function getCurrentToken(): Token + { + return $this->stream->getCurrent(); + } + + private function filterBodyNodes(Node $node, bool $nested = false): ?Node + { + // check that the body does not contain non-empty output nodes + if ( + ($node instanceof TextNode && !ctype_space($node->getAttribute('data'))) + || + (!$node instanceof TextNode && !$node instanceof BlockReferenceNode && $node instanceof NodeOutputInterface) + ) { + if (false !== strpos((string) $node, \chr(0xEF).\chr(0xBB).\chr(0xBF))) { + $t = substr($node->getAttribute('data'), 3); + if ('' === $t || ctype_space($t)) { + // bypass empty nodes starting with a BOM + return null; + } + } + + throw new SyntaxError('A template that extends another one cannot include content outside Twig blocks. Did you forget to put the content inside a {% block %} tag?', $node->getTemplateLine(), $this->stream->getSourceContext()); + } + + // bypass nodes that "capture" the output + if ($node instanceof NodeCaptureInterface) { + // a "block" tag in such a node will serve as a block definition AND be displayed in place as well + return $node; + } + + // "block" tags that are not captured (see above) are only used for defining + // the content of the block. In such a case, nesting it does not work as + // expected as the definition is not part of the default template code flow. + if ($nested && $node instanceof BlockReferenceNode) { + throw new SyntaxError('A block definition cannot be nested under non-capturing nodes.', $node->getTemplateLine(), $this->stream->getSourceContext()); + } + + if ($node instanceof NodeOutputInterface) { + return null; + } + + // here, $nested means "being at the root level of a child template" + // we need to discard the wrapping "Node" for the "body" node + $nested = $nested || Node::class !== \get_class($node); + foreach ($node as $k => $n) { + if (null !== $n && null === $this->filterBodyNodes($n, $nested)) { + $node->removeNode($k); + } + } + + return $node; + } +} diff --git a/site/www/_rem/lib/twig/Profiler/Dumper/BaseDumper.php b/site/www/_rem/lib/twig/Profiler/Dumper/BaseDumper.php new file mode 100644 index 0000000..4da43e4 --- /dev/null +++ b/site/www/_rem/lib/twig/Profiler/Dumper/BaseDumper.php @@ -0,0 +1,63 @@ + + */ +abstract class BaseDumper +{ + private $root; + + public function dump(Profile $profile): string + { + return $this->dumpProfile($profile); + } + + abstract protected function formatTemplate(Profile $profile, $prefix): string; + + abstract protected function formatNonTemplate(Profile $profile, $prefix): string; + + abstract protected function formatTime(Profile $profile, $percent): string; + + private function dumpProfile(Profile $profile, $prefix = '', $sibling = false): string + { + 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/site/www/_rem/lib/twig/Profiler/Dumper/BlackfireDumper.php b/site/www/_rem/lib/twig/Profiler/Dumper/BlackfireDumper.php new file mode 100644 index 0000000..03abe0f --- /dev/null +++ b/site/www/_rem/lib/twig/Profiler/Dumper/BlackfireDumper.php @@ -0,0 +1,72 @@ + + */ +final class BlackfireDumper +{ + public function dump(Profile $profile): string + { + $data = []; + $this->dumpProfile('main()', $profile, $data); + $this->dumpChildren('main()', $profile, $data); + + $start = sprintf('%f', microtime(true)); + $str = << $values) { + $str .= "$name//{$values['ct']} {$values['wt']} {$values['mu']} {$values['pmu']}\n"; + } + + return $str; + } + + private function dumpChildren(string $parent, 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(string $edge, Profile $profile, &$data) + { + if (isset($data[$edge])) { + ++$data[$edge]['ct']; + $data[$edge]['wt'] += floor($profile->getDuration() * 1000000); + $data[$edge]['mu'] += $profile->getMemoryUsage(); + $data[$edge]['pmu'] += $profile->getPeakMemoryUsage(); + } else { + $data[$edge] = [ + 'ct' => 1, + 'wt' => floor($profile->getDuration() * 1000000), + 'mu' => $profile->getMemoryUsage(), + 'pmu' => $profile->getPeakMemoryUsage(), + ]; + } + } +} diff --git a/site/www/_rem/lib/twig/Profiler/Dumper/HtmlDumper.php b/site/www/_rem/lib/twig/Profiler/Dumper/HtmlDumper.php new file mode 100644 index 0000000..1f2433b --- /dev/null +++ b/site/www/_rem/lib/twig/Profiler/Dumper/HtmlDumper.php @@ -0,0 +1,47 @@ + + */ +final class HtmlDumper extends BaseDumper +{ + private static $colors = [ + 'block' => '#dfd', + 'macro' => '#ddf', + 'template' => '#ffd', + 'big' => '#d44', + ]; + + public function dump(Profile $profile): string + { + return '
    '.parent::dump($profile).'
    '; + } + + protected function formatTemplate(Profile $profile, $prefix): string + { + return sprintf('%s└ %s', $prefix, self::$colors['template'], $profile->getTemplate()); + } + + protected function formatNonTemplate(Profile $profile, $prefix): string + { + 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(Profile $profile, $percent): string + { + return sprintf('%.2fms/%.0f%%', $percent > 20 ? self::$colors['big'] : 'auto', $profile->getDuration() * 1000, $percent); + } +} diff --git a/site/www/_rem/lib/twig/Profiler/Dumper/TextDumper.php b/site/www/_rem/lib/twig/Profiler/Dumper/TextDumper.php new file mode 100644 index 0000000..31561c4 --- /dev/null +++ b/site/www/_rem/lib/twig/Profiler/Dumper/TextDumper.php @@ -0,0 +1,35 @@ + + */ +final class TextDumper extends BaseDumper +{ + protected function formatTemplate(Profile $profile, $prefix): string + { + return sprintf('%s└ %s', $prefix, $profile->getTemplate()); + } + + protected function formatNonTemplate(Profile $profile, $prefix): string + { + return sprintf('%s└ %s::%s(%s)', $prefix, $profile->getTemplate(), $profile->getType(), $profile->getName()); + } + + protected function formatTime(Profile $profile, $percent): string + { + return sprintf('%.2fms/%.0f%%', $profile->getDuration() * 1000, $percent); + } +} diff --git a/site/www/_rem/lib/twig/Profiler/Node/EnterProfileNode.php b/site/www/_rem/lib/twig/Profiler/Node/EnterProfileNode.php new file mode 100644 index 0000000..1494baf --- /dev/null +++ b/site/www/_rem/lib/twig/Profiler/Node/EnterProfileNode.php @@ -0,0 +1,42 @@ + + */ +class EnterProfileNode extends Node +{ + public function __construct(string $extensionName, string $type, string $name, string $varName) + { + parent::__construct([], ['extension_name' => $extensionName, 'name' => $name, 'type' => $type, 'var_name' => $varName]); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->write(sprintf('$%s = $this->extensions[', $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/site/www/_rem/lib/twig/Profiler/Node/LeaveProfileNode.php b/site/www/_rem/lib/twig/Profiler/Node/LeaveProfileNode.php new file mode 100644 index 0000000..94cebba --- /dev/null +++ b/site/www/_rem/lib/twig/Profiler/Node/LeaveProfileNode.php @@ -0,0 +1,36 @@ + + */ +class LeaveProfileNode extends Node +{ + public function __construct(string $varName) + { + parent::__construct([], ['var_name' => $varName]); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->write("\n") + ->write(sprintf("\$%s->leave(\$%s);\n\n", $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof')) + ; + } +} diff --git a/site/www/_rem/lib/twig/Profiler/NodeVisitor/ProfilerNodeVisitor.php b/site/www/_rem/lib/twig/Profiler/NodeVisitor/ProfilerNodeVisitor.php new file mode 100644 index 0000000..91abee8 --- /dev/null +++ b/site/www/_rem/lib/twig/Profiler/NodeVisitor/ProfilerNodeVisitor.php @@ -0,0 +1,70 @@ + + */ +final class ProfilerNodeVisitor implements NodeVisitorInterface +{ + private $extensionName; + private $varName; + + public function __construct(string $extensionName) + { + $this->extensionName = $extensionName; + $this->varName = sprintf('__internal_%s', hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $extensionName)); + } + + public function enterNode(Node $node, Environment $env): Node + { + return $node; + } + + public function leaveNode(Node $node, Environment $env): ?Node + { + if ($node instanceof ModuleNode) { + $node->setNode('display_start', new Node([new EnterProfileNode($this->extensionName, Profile::TEMPLATE, $node->getTemplateName(), $this->varName), $node->getNode('display_start')])); + $node->setNode('display_end', new Node([new LeaveProfileNode($this->varName), $node->getNode('display_end')])); + } elseif ($node instanceof BlockNode) { + $node->setNode('body', new BodyNode([ + new EnterProfileNode($this->extensionName, Profile::BLOCK, $node->getAttribute('name'), $this->varName), + $node->getNode('body'), + new LeaveProfileNode($this->varName), + ])); + } elseif ($node instanceof MacroNode) { + $node->setNode('body', new BodyNode([ + new EnterProfileNode($this->extensionName, Profile::MACRO, $node->getAttribute('name'), $this->varName), + $node->getNode('body'), + new LeaveProfileNode($this->varName), + ])); + } + + return $node; + } + + public function getPriority(): int + { + return 0; + } +} diff --git a/site/www/_rem/lib/twig/Profiler/Profile.php b/site/www/_rem/lib/twig/Profiler/Profile.php new file mode 100644 index 0000000..252ca9b --- /dev/null +++ b/site/www/_rem/lib/twig/Profiler/Profile.php @@ -0,0 +1,181 @@ + + */ +final class Profile implements \IteratorAggregate, \Serializable +{ + public const ROOT = 'ROOT'; + public const BLOCK = 'block'; + public const TEMPLATE = 'template'; + public const MACRO = 'macro'; + + private $template; + private $name; + private $type; + private $starts = []; + private $ends = []; + private $profiles = []; + + public function __construct(string $template = 'main', string $type = self::ROOT, string $name = 'main') + { + $this->template = $template; + $this->type = $type; + $this->name = 0 === strpos($name, '__internal_') ? 'INTERNAL' : $name; + $this->enter(); + } + + public function getTemplate(): string + { + return $this->template; + } + + public function getType(): string + { + return $this->type; + } + + public function getName(): string + { + return $this->name; + } + + public function isRoot(): bool + { + return self::ROOT === $this->type; + } + + public function isTemplate(): bool + { + return self::TEMPLATE === $this->type; + } + + public function isBlock(): bool + { + return self::BLOCK === $this->type; + } + + public function isMacro(): bool + { + return self::MACRO === $this->type; + } + + /** + * @return Profile[] + */ + public function getProfiles(): array + { + return $this->profiles; + } + + public function addProfile(self $profile): void + { + $this->profiles[] = $profile; + } + + /** + * Returns the duration in microseconds. + */ + public function getDuration(): float + { + 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. + */ + public function getMemoryUsage(): int + { + return isset($this->ends['mu']) && isset($this->starts['mu']) ? $this->ends['mu'] - $this->starts['mu'] : 0; + } + + /** + * Returns the peak memory usage in bytes. + */ + public function getPeakMemoryUsage(): int + { + return isset($this->ends['pmu']) && isset($this->starts['pmu']) ? $this->ends['pmu'] - $this->starts['pmu'] : 0; + } + + /** + * Starts the profiling. + */ + public function enter(): void + { + $this->starts = [ + 'wt' => microtime(true), + 'mu' => memory_get_usage(), + 'pmu' => memory_get_peak_usage(), + ]; + } + + /** + * Stops the profiling. + */ + public function leave(): void + { + $this->ends = [ + 'wt' => microtime(true), + 'mu' => memory_get_usage(), + 'pmu' => memory_get_peak_usage(), + ]; + } + + public function reset(): void + { + $this->starts = $this->ends = $this->profiles = []; + $this->enter(); + } + + public function getIterator(): \Traversable + { + return new \ArrayIterator($this->profiles); + } + + public function serialize(): string + { + return serialize($this->__serialize()); + } + + public function unserialize($data): void + { + $this->__unserialize(unserialize($data)); + } + + /** + * @internal + */ + public function __serialize(): array + { + return [$this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles]; + } + + /** + * @internal + */ + public function __unserialize(array $data): void + { + list($this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles) = $data; + } +} diff --git a/site/www/_rem/lib/twig/RuntimeLoader/ContainerRuntimeLoader.php b/site/www/_rem/lib/twig/RuntimeLoader/ContainerRuntimeLoader.php new file mode 100644 index 0000000..b360d7b --- /dev/null +++ b/site/www/_rem/lib/twig/RuntimeLoader/ContainerRuntimeLoader.php @@ -0,0 +1,37 @@ + + * @author Robin Chalas + */ +class ContainerRuntimeLoader implements RuntimeLoaderInterface +{ + private $container; + + public function __construct(ContainerInterface $container) + { + $this->container = $container; + } + + public function load(string $class) + { + return $this->container->has($class) ? $this->container->get($class) : null; + } +} diff --git a/site/www/_rem/lib/twig/RuntimeLoader/FactoryRuntimeLoader.php b/site/www/_rem/lib/twig/RuntimeLoader/FactoryRuntimeLoader.php new file mode 100644 index 0000000..1306483 --- /dev/null +++ b/site/www/_rem/lib/twig/RuntimeLoader/FactoryRuntimeLoader.php @@ -0,0 +1,41 @@ + + */ +class FactoryRuntimeLoader implements RuntimeLoaderInterface +{ + private $map; + + /** + * @param array $map An array where keys are class names and values factory callables + */ + public function __construct(array $map = []) + { + $this->map = $map; + } + + public function load(string $class) + { + if (!isset($this->map[$class])) { + return null; + } + + $runtimeFactory = $this->map[$class]; + + return $runtimeFactory(); + } +} diff --git a/site/www/_rem/lib/twig/RuntimeLoader/RuntimeLoaderInterface.php b/site/www/_rem/lib/twig/RuntimeLoader/RuntimeLoaderInterface.php new file mode 100644 index 0000000..9e5b204 --- /dev/null +++ b/site/www/_rem/lib/twig/RuntimeLoader/RuntimeLoaderInterface.php @@ -0,0 +1,27 @@ + + */ +interface RuntimeLoaderInterface +{ + /** + * Creates the runtime implementation of a Twig element (filter/function/test). + * + * @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(string $class); +} diff --git a/site/www/_rem/lib/twig/Sandbox/SecurityError.php b/site/www/_rem/lib/twig/Sandbox/SecurityError.php new file mode 100644 index 0000000..30a404f --- /dev/null +++ b/site/www/_rem/lib/twig/Sandbox/SecurityError.php @@ -0,0 +1,23 @@ + + */ +class SecurityError extends Error +{ +} diff --git a/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedFilterError.php b/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedFilterError.php new file mode 100644 index 0000000..02d3063 --- /dev/null +++ b/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedFilterError.php @@ -0,0 +1,33 @@ + + */ +final class SecurityNotAllowedFilterError extends SecurityError +{ + private $filterName; + + public function __construct(string $message, string $functionName) + { + parent::__construct($message); + $this->filterName = $functionName; + } + + public function getFilterName(): string + { + return $this->filterName; + } +} diff --git a/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedFunctionError.php b/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedFunctionError.php new file mode 100644 index 0000000..4f76dc6 --- /dev/null +++ b/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedFunctionError.php @@ -0,0 +1,33 @@ + + */ +final class SecurityNotAllowedFunctionError extends SecurityError +{ + private $functionName; + + public function __construct(string $message, string $functionName) + { + parent::__construct($message); + $this->functionName = $functionName; + } + + public function getFunctionName(): string + { + return $this->functionName; + } +} diff --git a/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedMethodError.php b/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedMethodError.php new file mode 100644 index 0000000..8df9d0b --- /dev/null +++ b/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedMethodError.php @@ -0,0 +1,40 @@ + + */ +final class SecurityNotAllowedMethodError extends SecurityError +{ + private $className; + private $methodName; + + public function __construct(string $message, string $className, string $methodName) + { + parent::__construct($message); + $this->className = $className; + $this->methodName = $methodName; + } + + public function getClassName(): string + { + return $this->className; + } + + public function getMethodName() + { + return $this->methodName; + } +} diff --git a/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedPropertyError.php b/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedPropertyError.php new file mode 100644 index 0000000..42ec4f3 --- /dev/null +++ b/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedPropertyError.php @@ -0,0 +1,40 @@ + + */ +final class SecurityNotAllowedPropertyError extends SecurityError +{ + private $className; + private $propertyName; + + public function __construct(string $message, string $className, string $propertyName) + { + parent::__construct($message); + $this->className = $className; + $this->propertyName = $propertyName; + } + + public function getClassName(): string + { + return $this->className; + } + + public function getPropertyName() + { + return $this->propertyName; + } +} diff --git a/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedTagError.php b/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedTagError.php new file mode 100644 index 0000000..4522150 --- /dev/null +++ b/site/www/_rem/lib/twig/Sandbox/SecurityNotAllowedTagError.php @@ -0,0 +1,33 @@ + + */ +final class SecurityNotAllowedTagError extends SecurityError +{ + private $tagName; + + public function __construct(string $message, string $tagName) + { + parent::__construct($message); + $this->tagName = $tagName; + } + + public function getTagName(): string + { + return $this->tagName; + } +} diff --git a/site/www/_rem/lib/twig/Sandbox/SecurityPolicy.php b/site/www/_rem/lib/twig/Sandbox/SecurityPolicy.php new file mode 100644 index 0000000..2fc0d01 --- /dev/null +++ b/site/www/_rem/lib/twig/Sandbox/SecurityPolicy.php @@ -0,0 +1,126 @@ + + */ +final class SecurityPolicy implements SecurityPolicyInterface +{ + private $allowedTags; + private $allowedFilters; + private $allowedMethods; + private $allowedProperties; + private $allowedFunctions; + + public function __construct(array $allowedTags = [], array $allowedFilters = [], array $allowedMethods = [], array $allowedProperties = [], array $allowedFunctions = []) + { + $this->allowedTags = $allowedTags; + $this->allowedFilters = $allowedFilters; + $this->setAllowedMethods($allowedMethods); + $this->allowedProperties = $allowedProperties; + $this->allowedFunctions = $allowedFunctions; + } + + public function setAllowedTags(array $tags): void + { + $this->allowedTags = $tags; + } + + public function setAllowedFilters(array $filters): void + { + $this->allowedFilters = $filters; + } + + public function setAllowedMethods(array $methods): void + { + $this->allowedMethods = []; + foreach ($methods as $class => $m) { + $this->allowedMethods[$class] = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, \is_array($m) ? $m : [$m]); + } + } + + public function setAllowedProperties(array $properties): void + { + $this->allowedProperties = $properties; + } + + public function setAllowedFunctions(array $functions): void + { + $this->allowedFunctions = $functions; + } + + public function checkSecurity($tags, $filters, $functions): void + { + foreach ($tags as $tag) { + if (!\in_array($tag, $this->allowedTags)) { + throw new SecurityNotAllowedTagError(sprintf('Tag "%s" is not allowed.', $tag), $tag); + } + } + + foreach ($filters as $filter) { + if (!\in_array($filter, $this->allowedFilters)) { + throw new SecurityNotAllowedFilterError(sprintf('Filter "%s" is not allowed.', $filter), $filter); + } + } + + foreach ($functions as $function) { + if (!\in_array($function, $this->allowedFunctions)) { + throw new SecurityNotAllowedFunctionError(sprintf('Function "%s" is not allowed.', $function), $function); + } + } + } + + public function checkMethodAllowed($obj, $method): void + { + if ($obj instanceof Template || $obj instanceof Markup) { + return; + } + + $allowed = false; + $method = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); + foreach ($this->allowedMethods as $class => $methods) { + if ($obj instanceof $class) { + $allowed = \in_array($method, $methods); + + break; + } + } + + if (!$allowed) { + $class = \get_class($obj); + throw new SecurityNotAllowedMethodError(sprintf('Calling "%s" method on a "%s" object is not allowed.', $method, $class), $class, $method); + } + } + + public function checkPropertyAllowed($obj, $property): void + { + $allowed = false; + foreach ($this->allowedProperties as $class => $properties) { + if ($obj instanceof $class) { + $allowed = \in_array($property, \is_array($properties) ? $properties : [$properties]); + + break; + } + } + + if (!$allowed) { + $class = \get_class($obj); + throw new SecurityNotAllowedPropertyError(sprintf('Calling "%s" property on a "%s" object is not allowed.', $property, $class), $class, $property); + } + } +} diff --git a/site/www/_rem/lib/twig/Sandbox/SecurityPolicyInterface.php b/site/www/_rem/lib/twig/Sandbox/SecurityPolicyInterface.php new file mode 100644 index 0000000..4cb479d --- /dev/null +++ b/site/www/_rem/lib/twig/Sandbox/SecurityPolicyInterface.php @@ -0,0 +1,35 @@ + + */ +interface SecurityPolicyInterface +{ + /** + * @throws SecurityError + */ + public function checkSecurity($tags, $filters, $functions): void; + + /** + * @throws SecurityNotAllowedMethodError + */ + public function checkMethodAllowed($obj, $method): void; + + /** + * @throws SecurityNotAllowedPropertyError + */ + public function checkPropertyAllowed($obj, $method): void; +} diff --git a/site/www/_rem/lib/twig/Source.php b/site/www/_rem/lib/twig/Source.php new file mode 100644 index 0000000..3cb0240 --- /dev/null +++ b/site/www/_rem/lib/twig/Source.php @@ -0,0 +1,51 @@ + + */ +final class 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(string $code, string $name, string $path = '') + { + $this->code = $code; + $this->name = $name; + $this->path = $path; + } + + public function getCode(): string + { + return $this->code; + } + + public function getName(): string + { + return $this->name; + } + + public function getPath(): string + { + return $this->path; + } +} diff --git a/site/www/_rem/lib/twig/Template.php b/site/www/_rem/lib/twig/Template.php new file mode 100644 index 0000000..e04bd04 --- /dev/null +++ b/site/www/_rem/lib/twig/Template.php @@ -0,0 +1,422 @@ +load() + * instead, which returns an instance of \Twig\TemplateWrapper. + * + * @author Fabien Potencier + * + * @internal + */ +abstract class Template +{ + public const ANY_CALL = 'any'; + public const ARRAY_CALL = 'array'; + public const METHOD_CALL = 'method'; + + protected $parent; + protected $parents = []; + protected $env; + protected $blocks = []; + protected $traits = []; + protected $extensions = []; + protected $sandbox; + + public function __construct(Environment $env) + { + $this->env = $env; + $this->extensions = $env->getExtensions(); + } + + /** + * Returns the template name. + * + * @return string The template name + */ + abstract public function getTemplateName(); + + /** + * Returns debug information about the template. + * + * @return array Debug information + */ + abstract public function getDebugInfo(); + + /** + * Returns information about the original template source code. + * + * @return Source + */ + abstract public function getSourceContext(); + + /** + * Returns the parent template. + * + * This method is for internal use only and should never be called + * directly. + * + * @return Template|TemplateWrapper|false The parent template or false if there is no parent + */ + 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 || $parent instanceof TemplateWrapper) { + return $this->parents[$parent->getSourceContext()->getName()] = $parent; + } + + if (!isset($this->parents[$parent])) { + $this->parents[$parent] = $this->loadTemplate($parent); + } + } catch (LoaderError $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 + */ + public function displayParentBlock($name, array $context, array $blocks = []) + { + 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 RuntimeError(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 + */ + public function displayBlock($name, array $context, array $blocks = [], $useBlocks = true, self $templateContext = null) + { + 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 (Error $e) { + if (!$e->getSourceContext()) { + $e->setSourceContext($template->getSourceContext()); + } + + // this is mostly useful for \Twig\Error\LoaderError exceptions + // see \Twig\Error\LoaderError + if (-1 === $e->getTemplateLine()) { + $e->guess(); + } + + throw $e; + } catch (\Exception $e) { + $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e); + $e->guess(); + + throw $e; + } + } elseif (false !== $parent = $this->getParent($context)) { + $parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false, $templateContext ?? $this); + } elseif (isset($blocks[$name])) { + throw new RuntimeError(sprintf('Block "%s" should not call parent() in "%s" as the block does not exist in the parent template "%s".', $name, $blocks[$name][0]->getTemplateName(), $this->getTemplateName()), -1, $blocks[$name][0]->getSourceContext()); + } else { + throw new RuntimeError(sprintf('Block "%s" on template "%s" does not exist.', $name, $this->getTemplateName()), -1, ($templateContext ?? $this)->getSourceContext()); + } + } + + /** + * 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 + */ + public function renderParentBlock($name, array $context, array $blocks = []) + { + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + $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 + */ + public function renderBlock($name, array $context, array $blocks = [], $useBlocks = true) + { + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + $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 + */ + public function hasBlock($name, array $context, array $blocks = []) + { + 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 + */ + public function getBlockNames(array $context, array $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); + } + + /** + * @return Template|TemplateWrapper + */ + protected function loadTemplate($template, $templateName = null, $line = null, $index = null) + { + try { + if (\is_array($template)) { + return $this->env->resolveTemplate($template); + } + + if ($template instanceof self || $template instanceof TemplateWrapper) { + return $template; + } + + if ($template === $this->getTemplateName()) { + $class = static::class; + if (false !== $pos = strrpos($class, '___', -1)) { + $class = substr($class, 0, $pos); + } + } else { + $class = $this->env->getTemplateClass($template); + } + + return $this->env->loadTemplate($class, $template, $index); + } catch (Error $e) { + if (!$e->getSourceContext()) { + $e->setSourceContext($templateName ? new Source('', $templateName) : $this->getSourceContext()); + } + + if ($e->getTemplateLine() > 0) { + throw $e; + } + + if (!$line) { + $e->guess(); + } else { + $e->setTemplateLine($line); + } + + throw $e; + } + } + + /** + * @internal + * + * @return Template + */ + public function unwrap() + { + return $this; + } + + /** + * Returns all blocks. + * + * This method is for internal use only and should never be called + * directly. + * + * @return array An array of blocks + */ + public function getBlocks() + { + return $this->blocks; + } + + public function display(array $context, array $blocks = []) + { + $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks)); + } + + public function render(array $context) + { + $level = ob_get_level(); + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + try { + $this->display($context); + } catch (\Throwable $e) { + while (ob_get_level() > $level) { + ob_end_clean(); + } + + throw $e; + } + + return ob_get_clean(); + } + + protected function displayWithErrorHandling(array $context, array $blocks = []) + { + try { + $this->doDisplay($context, $blocks); + } catch (Error $e) { + if (!$e->getSourceContext()) { + $e->setSourceContext($this->getSourceContext()); + } + + // this is mostly useful for \Twig\Error\LoaderError exceptions + // see \Twig\Error\LoaderError + if (-1 === $e->getTemplateLine()) { + $e->guess(); + } + + throw $e; + } catch (\Exception $e) { + $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e); + $e->guess(); + + throw $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 = []); +} diff --git a/site/www/_rem/lib/twig/TemplateWrapper.php b/site/www/_rem/lib/twig/TemplateWrapper.php new file mode 100644 index 0000000..c9c6b07 --- /dev/null +++ b/site/www/_rem/lib/twig/TemplateWrapper.php @@ -0,0 +1,109 @@ + + */ +final class 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(Environment $env, Template $template) + { + $this->env = $env; + $this->template = $template; + } + + public function render(array $context = []): string + { + // using func_get_args() allows to not expose the blocks argument + // as it should only be used by internal code + return $this->template->render($context, \func_get_args()[1] ?? []); + } + + public function display(array $context = []) + { + // using func_get_args() allows to not expose the blocks argument + // as it should only be used by internal code + $this->template->display($context, \func_get_args()[1] ?? []); + } + + public function hasBlock(string $name, array $context = []): bool + { + return $this->template->hasBlock($name, $context); + } + + /** + * @return string[] An array of defined template block names + */ + public function getBlockNames(array $context = []): array + { + return $this->template->getBlockNames($context); + } + + public function renderBlock(string $name, array $context = []): string + { + $context = $this->env->mergeGlobals($context); + $level = ob_get_level(); + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + try { + $this->template->displayBlock($name, $context); + } catch (\Throwable $e) { + while (ob_get_level() > $level) { + ob_end_clean(); + } + + throw $e; + } + + return ob_get_clean(); + } + + public function displayBlock(string $name, array $context = []) + { + $this->template->displayBlock($name, $this->env->mergeGlobals($context)); + } + + public function getSourceContext(): Source + { + return $this->template->getSourceContext(); + } + + public function getTemplateName(): string + { + return $this->template->getTemplateName(); + } + + /** + * @internal + * + * @return Template + */ + public function unwrap() + { + return $this->template; + } +} diff --git a/site/www/_rem/lib/twig/Test/IntegrationTestCase.php b/site/www/_rem/lib/twig/Test/IntegrationTestCase.php new file mode 100644 index 0000000..307302b --- /dev/null +++ b/site/www/_rem/lib/twig/Test/IntegrationTestCase.php @@ -0,0 +1,265 @@ + + * @author Karma Dordrak + */ +abstract class IntegrationTestCase extends TestCase +{ + /** + * @return string + */ + abstract protected function getFixturesDir(); + + /** + * @return RuntimeLoaderInterface[] + */ + protected function getRuntimeLoaders() + { + return []; + } + + /** + * @return ExtensionInterface[] + */ + protected function getExtensions() + { + return []; + } + + /** + * @return TwigFilter[] + */ + protected function getTwigFilters() + { + return []; + } + + /** + * @return TwigFunction[] + */ + protected function getTwigFunctions() + { + return []; + } + + /** + * @return TwigTest[] + */ + protected function getTwigTests() + { + return []; + } + + /** + * @dataProvider getTests + */ + public function testIntegration($file, $message, $condition, $templates, $exception, $outputs, $deprecation = '') + { + $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs, $deprecation); + } + + /** + * @dataProvider getLegacyTests + * @group legacy + */ + public function testLegacyIntegration($file, $message, $condition, $templates, $exception, $outputs, $deprecation = '') + { + $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs, $deprecation); + } + + public function getTests($name, $legacyTests = false) + { + $fixturesDir = realpath($this->getFixturesDir()); + $tests = []; + + 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*(?:--DEPRECATION--\s*(.*?))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)\s*(?:--DATA--\s*(.*))?\s*--EXCEPTION--\s*(.*)/sx', $test, $match)) { + $message = $match[1]; + $condition = $match[2]; + $deprecation = $match[3]; + $templates = self::parseTemplates($match[4]); + $exception = $match[6]; + $outputs = [[null, $match[5], null, '']]; + } elseif (preg_match('/--TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*(?:--DEPRECATION--\s*(.*?))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)--DATA--.*?--EXPECT--.*/s', $test, $match)) { + $message = $match[1]; + $condition = $match[2]; + $deprecation = $match[3]; + $templates = self::parseTemplates($match[4]); + $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[] = [str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs, $deprecation]; + } + + if ($legacyTests && empty($tests)) { + // add a dummy test to avoid a PHPUnit message + return [['not', '-', '', [], '', []]]; + } + + return $tests; + } + + public function getLegacyTests() + { + return $this->getTests('testLegacyIntegration', true); + } + + protected function doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs, $deprecation = '') + { + if (!$outputs) { + $this->markTestSkipped('no tests to run'); + } + + if ($condition) { + eval('$ret = '.$condition.';'); + if (!$ret) { + $this->markTestSkipped($condition); + } + } + + $loader = new ArrayLoader($templates); + + foreach ($outputs as $i => $match) { + $config = array_merge([ + 'cache' => false, + 'strict_variables' => true, + ], $match[2] ? eval($match[2].';') : []); + $twig = new Environment($loader, $config); + $twig->addGlobal('global', 'global'); + foreach ($this->getRuntimeLoaders() as $runtimeLoader) { + $twig->addRuntimeLoader($runtimeLoader); + } + + 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 + $p = new \ReflectionProperty($twig, 'templateClassPrefix'); + $p->setAccessible(true); + $p->setValue($twig, '__TwigTemplate_'.hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', uniqid(mt_rand(), true), false).'_'); + + $deprecations = []; + try { + $prevHandler = set_error_handler(function ($type, $msg, $file, $line, $context = []) use (&$deprecations, &$prevHandler) { + if (\E_USER_DEPRECATED === $type) { + $deprecations[] = $msg; + + return true; + } + + return $prevHandler ? $prevHandler($type, $msg, $file, $line, $context) : false; + }); + + $template = $twig->load('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, 'Exception message must end with a dot or a question mark.'); + + return; + } + + throw new Error(sprintf('%s: %s', \get_class($e), $e->getMessage()), -1, null, $e); + } finally { + restore_error_handler(); + } + + $this->assertSame($deprecation, implode("\n", $deprecations)); + + 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 Error(sprintf('%s: %s', \get_class($e), $e->getMessage()), -1, null, $e); + + $output = trim(sprintf('%s: %s', \get_class($e), $e->getMessage())); + } + + if (false !== $exception) { + list($class) = explode(':', $exception); + $constraintClass = class_exists('PHPUnit\Framework\Constraint\Exception') ? 'PHPUnit\Framework\Constraint\Exception' : 'PHPUnit_Framework_Constraint_Exception'; + $this->assertThat(null, new $constraintClass($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"; + echo $twig->compile($twig->parse($twig->tokenize($twig->getLoader()->getSourceContext($name)))); + } + } + $this->assertEquals($expected, $output, $message.' (in '.$file.')'); + } + } + + protected static function parseTemplates($test) + { + $templates = []; + preg_match_all('/--TEMPLATE(?:\((.*?)\))?--(.*?)(?=\-\-TEMPLATE|$)/s', $test, $matches, \PREG_SET_ORDER); + foreach ($matches as $match) { + $templates[($match[1] ?: 'index.twig')] = $match[2]; + } + + return $templates; + } +} diff --git a/site/www/_rem/lib/twig/Test/NodeTestCase.php b/site/www/_rem/lib/twig/Test/NodeTestCase.php new file mode 100644 index 0000000..3b8b2c8 --- /dev/null +++ b/site/www/_rem/lib/twig/Test/NodeTestCase.php @@ -0,0 +1,65 @@ +assertNodeCompilation($source, $node, $environment, $isPattern); + } + + public function assertNodeCompilation($source, Node $node, 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(Environment $environment = null) + { + return new Compiler(null === $environment ? $this->getEnvironment() : $environment); + } + + protected function getEnvironment() + { + return new Environment(new ArrayLoader([])); + } + + protected function getVariableGetter($name, $line = false) + { + $line = $line > 0 ? "// line $line\n" : ''; + + return sprintf('%s($context["%s"] ?? null)', $line, $name); + } + + protected function getAttributeGetter() + { + return 'twig_get_attribute($this->env, $this->source, '; + } +} diff --git a/site/www/_rem/lib/twig/Token.php b/site/www/_rem/lib/twig/Token.php new file mode 100644 index 0000000..53a6caf --- /dev/null +++ b/site/www/_rem/lib/twig/Token.php @@ -0,0 +1,178 @@ + + */ +final class Token +{ + private $value; + private $type; + private $lineno; + + public const EOF_TYPE = -1; + public const TEXT_TYPE = 0; + public const BLOCK_START_TYPE = 1; + public const VAR_START_TYPE = 2; + public const BLOCK_END_TYPE = 3; + public const VAR_END_TYPE = 4; + public const NAME_TYPE = 5; + public const NUMBER_TYPE = 6; + public const STRING_TYPE = 7; + public const OPERATOR_TYPE = 8; + public const PUNCTUATION_TYPE = 9; + public const INTERPOLATION_START_TYPE = 10; + public const INTERPOLATION_END_TYPE = 11; + public const ARROW_TYPE = 12; + + public function __construct(int $type, $value, int $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|string|int $type The type to test + * @param array|string|null $values The token value + */ + public function test($type, $values = null): bool + { + 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 + ); + } + + public function getLine(): int + { + return $this->lineno; + } + + public function getType(): int + { + return $this->type; + } + + public function getValue() + { + return $this->value; + } + + public static function typeToString(int $type, bool $short = false): string + { + 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; + case self::ARROW_TYPE: + $name = 'ARROW_TYPE'; + break; + default: + throw new \LogicException(sprintf('Token of type "%s" does not exist.', $type)); + } + + return $short ? $name : 'Twig\Token::'.$name; + } + + public static function typeToEnglish(int $type): string + { + 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'; + case self::ARROW_TYPE: + return 'arrow function'; + default: + throw new \LogicException(sprintf('Token of type "%s" does not exist.', $type)); + } + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/AbstractTokenParser.php b/site/www/_rem/lib/twig/TokenParser/AbstractTokenParser.php new file mode 100644 index 0000000..720ea67 --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/AbstractTokenParser.php @@ -0,0 +1,32 @@ + + */ +abstract class AbstractTokenParser implements TokenParserInterface +{ + /** + * @var Parser + */ + protected $parser; + + public function setParser(Parser $parser): void + { + $this->parser = $parser; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/ApplyTokenParser.php b/site/www/_rem/lib/twig/TokenParser/ApplyTokenParser.php new file mode 100644 index 0000000..4dbf304 --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/ApplyTokenParser.php @@ -0,0 +1,60 @@ +getLine(); + $name = $this->parser->getVarName(); + + $ref = new TempNameExpression($name, $lineno); + $ref->setAttribute('always_defined', true); + + $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag()); + + $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); + $body = $this->parser->subparse([$this, 'decideApplyEnd'], true); + $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); + + return new Node([ + new SetNode(true, $ref, $body, $lineno, $this->getTag()), + new PrintNode($filter, $lineno, $this->getTag()), + ]); + } + + public function decideApplyEnd(Token $token): bool + { + return $token->test('endapply'); + } + + public function getTag(): string + { + return 'apply'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/AutoEscapeTokenParser.php b/site/www/_rem/lib/twig/TokenParser/AutoEscapeTokenParser.php new file mode 100644 index 0000000..b674bea --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/AutoEscapeTokenParser.php @@ -0,0 +1,58 @@ +getLine(); + $stream = $this->parser->getStream(); + + if ($stream->test(/* Token::BLOCK_END_TYPE */ 3)) { + $value = 'html'; + } else { + $expr = $this->parser->getExpressionParser()->parseExpression(); + if (!$expr instanceof ConstantExpression) { + throw new SyntaxError('An escaping strategy must be a string or false.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + $value = $expr->getAttribute('value'); + } + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + return new AutoEscapeNode($value, $body, $lineno, $this->getTag()); + } + + public function decideBlockEnd(Token $token): bool + { + return $token->test('endautoescape'); + } + + public function getTag(): string + { + return 'autoescape'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/BlockTokenParser.php b/site/www/_rem/lib/twig/TokenParser/BlockTokenParser.php new file mode 100644 index 0000000..5878131 --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/BlockTokenParser.php @@ -0,0 +1,78 @@ + + * {% block title %}{% endblock %} - My Webpage + * {% endblock %} + * + * @internal + */ +final class BlockTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $lineno = $token->getLine(); + $stream = $this->parser->getStream(); + $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + if ($this->parser->hasBlock($name)) { + throw new SyntaxError(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 BlockNode($name, new Node([]), $lineno)); + $this->parser->pushLocalScope(); + $this->parser->pushBlockStack($name); + + if ($stream->nextIf(/* Token::BLOCK_END_TYPE */ 3)) { + $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); + if ($token = $stream->nextIf(/* Token::NAME_TYPE */ 5)) { + $value = $token->getValue(); + + if ($value != $name) { + throw new SyntaxError(sprintf('Expected endblock for block "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + } + } else { + $body = new Node([ + new PrintNode($this->parser->getExpressionParser()->parseExpression(), $lineno), + ]); + } + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + $block->setNode('body', $body); + $this->parser->popBlockStack(); + $this->parser->popLocalScope(); + + return new BlockReferenceNode($name, $lineno, $this->getTag()); + } + + public function decideBlockEnd(Token $token): bool + { + return $token->test('endblock'); + } + + public function getTag(): string + { + return 'block'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/DeprecatedTokenParser.php b/site/www/_rem/lib/twig/TokenParser/DeprecatedTokenParser.php new file mode 100644 index 0000000..31416c7 --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/DeprecatedTokenParser.php @@ -0,0 +1,43 @@ + + * + * @internal + */ +final class DeprecatedTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $expr = $this->parser->getExpressionParser()->parseExpression(); + + $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); + + return new DeprecatedNode($expr, $token->getLine(), $this->getTag()); + } + + public function getTag(): string + { + return 'deprecated'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/DoTokenParser.php b/site/www/_rem/lib/twig/TokenParser/DoTokenParser.php new file mode 100644 index 0000000..32c8f12 --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/DoTokenParser.php @@ -0,0 +1,38 @@ +parser->getExpressionParser()->parseExpression(); + + $this->parser->getStream()->expect(/* Token::BLOCK_END_TYPE */ 3); + + return new DoNode($expr, $token->getLine(), $this->getTag()); + } + + public function getTag(): string + { + return 'do'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/EmbedTokenParser.php b/site/www/_rem/lib/twig/TokenParser/EmbedTokenParser.php new file mode 100644 index 0000000..64b4f29 --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/EmbedTokenParser.php @@ -0,0 +1,73 @@ +parser->getStream(); + + $parent = $this->parser->getExpressionParser()->parseExpression(); + + list($variables, $only, $ignoreMissing) = $this->parseArguments(); + + $parentToken = $fakeParentToken = new Token(/* Token::STRING_TYPE */ 7, '__parent__', $token->getLine()); + if ($parent instanceof ConstantExpression) { + $parentToken = new Token(/* Token::STRING_TYPE */ 7, $parent->getAttribute('value'), $token->getLine()); + } elseif ($parent instanceof NameExpression) { + $parentToken = new Token(/* Token::NAME_TYPE */ 5, $parent->getAttribute('name'), $token->getLine()); + } + + // inject a fake parent to make the parent() function work + $stream->injectTokens([ + new Token(/* Token::BLOCK_START_TYPE */ 1, '', $token->getLine()), + new Token(/* Token::NAME_TYPE */ 5, 'extends', $token->getLine()), + $parentToken, + new Token(/* Token::BLOCK_END_TYPE */ 3, '', $token->getLine()), + ]); + + $module = $this->parser->parse($stream, [$this, 'decideBlockEnd'], true); + + // override the parent with the correct one + if ($fakeParentToken === $parentToken) { + $module->setNode('parent', $parent); + } + + $this->parser->embedTemplate($module); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + return new EmbedNode($module->getTemplateName(), $module->getAttribute('index'), $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); + } + + public function decideBlockEnd(Token $token): bool + { + return $token->test('endembed'); + } + + public function getTag(): string + { + return 'embed'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/ExtendsTokenParser.php b/site/www/_rem/lib/twig/TokenParser/ExtendsTokenParser.php new file mode 100644 index 0000000..0ca46dd --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/ExtendsTokenParser.php @@ -0,0 +1,52 @@ +parser->getStream(); + + if ($this->parser->peekBlockStack()) { + throw new SyntaxError('Cannot use "extend" in a block.', $token->getLine(), $stream->getSourceContext()); + } elseif (!$this->parser->isMainScope()) { + throw new SyntaxError('Cannot use "extend" in a macro.', $token->getLine(), $stream->getSourceContext()); + } + + if (null !== $this->parser->getParent()) { + throw new SyntaxError('Multiple extends tags are forbidden.', $token->getLine(), $stream->getSourceContext()); + } + $this->parser->setParent($this->parser->getExpressionParser()->parseExpression()); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + return new Node(); + } + + public function getTag(): string + { + return 'extends'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/FlushTokenParser.php b/site/www/_rem/lib/twig/TokenParser/FlushTokenParser.php new file mode 100644 index 0000000..02c74aa --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/FlushTokenParser.php @@ -0,0 +1,38 @@ +parser->getStream()->expect(/* Token::BLOCK_END_TYPE */ 3); + + return new FlushNode($token->getLine(), $this->getTag()); + } + + public function getTag(): string + { + return 'flush'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/ForTokenParser.php b/site/www/_rem/lib/twig/TokenParser/ForTokenParser.php new file mode 100644 index 0000000..bac8ba2 --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/ForTokenParser.php @@ -0,0 +1,78 @@ + + * {% for user in users %} + *
  • {{ user.username|e }}
  • + * {% endfor %} + * + * + * @internal + */ +final class ForTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $lineno = $token->getLine(); + $stream = $this->parser->getStream(); + $targets = $this->parser->getExpressionParser()->parseAssignmentExpression(); + $stream->expect(/* Token::OPERATOR_TYPE */ 8, 'in'); + $seq = $this->parser->getExpressionParser()->parseExpression(); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $body = $this->parser->subparse([$this, 'decideForFork']); + if ('else' == $stream->next()->getValue()) { + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $else = $this->parser->subparse([$this, 'decideForEnd'], true); + } else { + $else = null; + } + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + if (\count($targets) > 1) { + $keyTarget = $targets->getNode(0); + $keyTarget = new AssignNameExpression($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine()); + $valueTarget = $targets->getNode(1); + } else { + $keyTarget = new AssignNameExpression('_key', $lineno); + $valueTarget = $targets->getNode(0); + } + $valueTarget = new AssignNameExpression($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine()); + + return new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, $lineno, $this->getTag()); + } + + public function decideForFork(Token $token): bool + { + return $token->test(['else', 'endfor']); + } + + public function decideForEnd(Token $token): bool + { + return $token->test('endfor'); + } + + public function getTag(): string + { + return 'for'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/FromTokenParser.php b/site/www/_rem/lib/twig/TokenParser/FromTokenParser.php new file mode 100644 index 0000000..35098c2 --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/FromTokenParser.php @@ -0,0 +1,66 @@ +parser->getExpressionParser()->parseExpression(); + $stream = $this->parser->getStream(); + $stream->expect(/* Token::NAME_TYPE */ 5, 'import'); + + $targets = []; + do { + $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + + $alias = $name; + if ($stream->nextIf('as')) { + $alias = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + } + + $targets[$name] = $alias; + + if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + break; + } + } while (true); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + $var = new AssignNameExpression($this->parser->getVarName(), $token->getLine()); + $node = new ImportNode($macro, $var, $token->getLine(), $this->getTag(), $this->parser->isMainScope()); + + foreach ($targets as $name => $alias) { + $this->parser->addImportedSymbol('function', $alias, 'macro_'.$name, $var); + } + + return $node; + } + + public function getTag(): string + { + return 'from'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/IfTokenParser.php b/site/www/_rem/lib/twig/TokenParser/IfTokenParser.php new file mode 100644 index 0000000..c0fe6df --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/IfTokenParser.php @@ -0,0 +1,89 @@ + + * {% for user in users %} + *
  • {{ user.username|e }}
  • + * {% endfor %} + * + * {% endif %} + * + * @internal + */ +final class IfTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $lineno = $token->getLine(); + $expr = $this->parser->getExpressionParser()->parseExpression(); + $stream = $this->parser->getStream(); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $body = $this->parser->subparse([$this, 'decideIfFork']); + $tests = [$expr, $body]; + $else = null; + + $end = false; + while (!$end) { + switch ($stream->next()->getValue()) { + case 'else': + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $else = $this->parser->subparse([$this, 'decideIfEnd']); + break; + + case 'elseif': + $expr = $this->parser->getExpressionParser()->parseExpression(); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $body = $this->parser->subparse([$this, 'decideIfFork']); + $tests[] = $expr; + $tests[] = $body; + break; + + case 'endif': + $end = true; + break; + + default: + throw new SyntaxError(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(/* Token::BLOCK_END_TYPE */ 3); + + return new IfNode(new Node($tests), $else, $lineno, $this->getTag()); + } + + public function decideIfFork(Token $token): bool + { + return $token->test(['elseif', 'else', 'endif']); + } + + public function decideIfEnd(Token $token): bool + { + return $token->test(['endif']); + } + + public function getTag(): string + { + return 'if'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/ImportTokenParser.php b/site/www/_rem/lib/twig/TokenParser/ImportTokenParser.php new file mode 100644 index 0000000..44cb4da --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/ImportTokenParser.php @@ -0,0 +1,44 @@ +parser->getExpressionParser()->parseExpression(); + $this->parser->getStream()->expect(/* Token::NAME_TYPE */ 5, 'as'); + $var = new AssignNameExpression($this->parser->getStream()->expect(/* Token::NAME_TYPE */ 5)->getValue(), $token->getLine()); + $this->parser->getStream()->expect(/* Token::BLOCK_END_TYPE */ 3); + + $this->parser->addImportedSymbol('template', $var->getAttribute('name')); + + return new ImportNode($macro, $var, $token->getLine(), $this->getTag(), $this->parser->isMainScope()); + } + + public function getTag(): string + { + return 'import'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/IncludeTokenParser.php b/site/www/_rem/lib/twig/TokenParser/IncludeTokenParser.php new file mode 100644 index 0000000..28beb8a --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/IncludeTokenParser.php @@ -0,0 +1,69 @@ +parser->getExpressionParser()->parseExpression(); + + list($variables, $only, $ignoreMissing) = $this->parseArguments(); + + return new IncludeNode($expr, $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); + } + + protected function parseArguments() + { + $stream = $this->parser->getStream(); + + $ignoreMissing = false; + if ($stream->nextIf(/* Token::NAME_TYPE */ 5, 'ignore')) { + $stream->expect(/* Token::NAME_TYPE */ 5, 'missing'); + + $ignoreMissing = true; + } + + $variables = null; + if ($stream->nextIf(/* Token::NAME_TYPE */ 5, 'with')) { + $variables = $this->parser->getExpressionParser()->parseExpression(); + } + + $only = false; + if ($stream->nextIf(/* Token::NAME_TYPE */ 5, 'only')) { + $only = true; + } + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + return [$variables, $only, $ignoreMissing]; + } + + public function getTag(): string + { + return 'include'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/MacroTokenParser.php b/site/www/_rem/lib/twig/TokenParser/MacroTokenParser.php new file mode 100644 index 0000000..f584927 --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/MacroTokenParser.php @@ -0,0 +1,66 @@ + + * {% endmacro %} + * + * @internal + */ +final class MacroTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $lineno = $token->getLine(); + $stream = $this->parser->getStream(); + $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + + $arguments = $this->parser->getExpressionParser()->parseArguments(true, true); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $this->parser->pushLocalScope(); + $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); + if ($token = $stream->nextIf(/* Token::NAME_TYPE */ 5)) { + $value = $token->getValue(); + + if ($value != $name) { + throw new SyntaxError(sprintf('Expected endmacro for macro "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + } + $this->parser->popLocalScope(); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + $this->parser->setMacro($name, new MacroNode($name, new BodyNode([$body]), $arguments, $lineno, $this->getTag())); + + return new Node(); + } + + public function decideBlockEnd(Token $token): bool + { + return $token->test('endmacro'); + } + + public function getTag(): string + { + return 'macro'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/SandboxTokenParser.php b/site/www/_rem/lib/twig/TokenParser/SandboxTokenParser.php new file mode 100644 index 0000000..c919556 --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/SandboxTokenParser.php @@ -0,0 +1,66 @@ +parser->getStream(); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + // in a sandbox tag, only include tags are allowed + if (!$body instanceof IncludeNode) { + foreach ($body as $node) { + if ($node instanceof TextNode && ctype_space($node->getAttribute('data'))) { + continue; + } + + if (!$node instanceof IncludeNode) { + throw new SyntaxError('Only "include" tags are allowed within a "sandbox" section.', $node->getTemplateLine(), $stream->getSourceContext()); + } + } + } + + return new SandboxNode($body, $token->getLine(), $this->getTag()); + } + + public function decideBlockEnd(Token $token): bool + { + return $token->test('endsandbox'); + } + + public function getTag(): string + { + return 'sandbox'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/SetTokenParser.php b/site/www/_rem/lib/twig/TokenParser/SetTokenParser.php new file mode 100644 index 0000000..2fbdfe0 --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/SetTokenParser.php @@ -0,0 +1,73 @@ +getLine(); + $stream = $this->parser->getStream(); + $names = $this->parser->getExpressionParser()->parseAssignmentExpression(); + + $capture = false; + if ($stream->nextIf(/* Token::OPERATOR_TYPE */ 8, '=')) { + $values = $this->parser->getExpressionParser()->parseMultitargetExpression(); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + if (\count($names) !== \count($values)) { + throw new SyntaxError('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 SyntaxError('When using set with a block, you cannot have a multi-target.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + $values = $this->parser->subparse([$this, 'decideBlockEnd'], true); + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + } + + return new SetNode($capture, $names, $values, $lineno, $this->getTag()); + } + + public function decideBlockEnd(Token $token): bool + { + return $token->test('endset'); + } + + public function getTag(): string + { + return 'set'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/TokenParserInterface.php b/site/www/_rem/lib/twig/TokenParser/TokenParserInterface.php new file mode 100644 index 0000000..bb8db3e --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/TokenParserInterface.php @@ -0,0 +1,46 @@ + + */ +interface TokenParserInterface +{ + /** + * Sets the parser associated with this token parser. + */ + public function setParser(Parser $parser): void; + + /** + * Parses a token and returns a node. + * + * @return Node + * + * @throws SyntaxError + */ + public function parse(Token $token); + + /** + * Gets the tag name associated with this token parser. + * + * @return string + */ + public function getTag(); +} diff --git a/site/www/_rem/lib/twig/TokenParser/UseTokenParser.php b/site/www/_rem/lib/twig/TokenParser/UseTokenParser.php new file mode 100644 index 0000000..d0a2de4 --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/UseTokenParser.php @@ -0,0 +1,73 @@ +parser->getExpressionParser()->parseExpression(); + $stream = $this->parser->getStream(); + + if (!$template instanceof ConstantExpression) { + throw new SyntaxError('The template references in a "use" statement must be a string.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + + $targets = []; + if ($stream->nextIf('with')) { + do { + $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + + $alias = $name; + if ($stream->nextIf('as')) { + $alias = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + } + + $targets[$name] = new ConstantExpression($alias, -1); + + if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + break; + } + } while (true); + } + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + $this->parser->addTrait(new Node(['template' => $template, 'targets' => new Node($targets)])); + + return new Node(); + } + + public function getTag(): string + { + return 'use'; + } +} diff --git a/site/www/_rem/lib/twig/TokenParser/WithTokenParser.php b/site/www/_rem/lib/twig/TokenParser/WithTokenParser.php new file mode 100644 index 0000000..7d8cbe2 --- /dev/null +++ b/site/www/_rem/lib/twig/TokenParser/WithTokenParser.php @@ -0,0 +1,56 @@ + + * + * @internal + */ +final class WithTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $stream = $this->parser->getStream(); + + $variables = null; + $only = false; + if (!$stream->test(/* Token::BLOCK_END_TYPE */ 3)) { + $variables = $this->parser->getExpressionParser()->parseExpression(); + $only = (bool) $stream->nextIf(/* Token::NAME_TYPE */ 5, 'only'); + } + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + $body = $this->parser->subparse([$this, 'decideWithEnd'], true); + + $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + + return new WithNode($body, $variables, $only, $token->getLine(), $this->getTag()); + } + + public function decideWithEnd(Token $token): bool + { + return $token->test('endwith'); + } + + public function getTag(): string + { + return 'with'; + } +} diff --git a/site/www/_rem/lib/twig/TokenStream.php b/site/www/_rem/lib/twig/TokenStream.php new file mode 100644 index 0000000..1eac11a --- /dev/null +++ b/site/www/_rem/lib/twig/TokenStream.php @@ -0,0 +1,132 @@ + + */ +final class TokenStream +{ + private $tokens; + private $current = 0; + private $source; + + public function __construct(array $tokens, Source $source = null) + { + $this->tokens = $tokens; + $this->source = $source ?: new Source('', ''); + } + + 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. + */ + public function next(): Token + { + if (!isset($this->tokens[++$this->current])) { + throw new SyntaxError('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 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. + */ + public function expect($type, $value = null, string $message = null): Token + { + $token = $this->tokens[$this->current]; + if (!$token->test($type, $value)) { + $line = $token->getLine(); + throw new SyntaxError(sprintf('%sUnexpected token "%s"%s ("%s" expected%s).', + $message ? $message.'. ' : '', + Token::typeToEnglish($token->getType()), + $token->getValue() ? sprintf(' of value "%s"', $token->getValue()) : '', + Token::typeToEnglish($type), $value ? sprintf(' with value "%s"', $value) : ''), + $line, + $this->source + ); + } + $this->next(); + + return $token; + } + + /** + * Looks at the next token. + */ + public function look(int $number = 1): Token + { + if (!isset($this->tokens[$this->current + $number])) { + throw new SyntaxError('Unexpected end of template.', $this->tokens[$this->current + $number - 1]->getLine(), $this->source); + } + + return $this->tokens[$this->current + $number]; + } + + /** + * Tests the current token. + */ + public function test($primary, $secondary = null): bool + { + return $this->tokens[$this->current]->test($primary, $secondary); + } + + /** + * Checks if end of stream was reached. + */ + public function isEOF(): bool + { + return /* Token::EOF_TYPE */ -1 === $this->tokens[$this->current]->getType(); + } + + public function getCurrent(): Token + { + return $this->tokens[$this->current]; + } + + /** + * Gets the source associated with this stream. + * + * @internal + */ + public function getSourceContext(): Source + { + return $this->source; + } +} diff --git a/site/www/_rem/lib/twig/TwigFilter.php b/site/www/_rem/lib/twig/TwigFilter.php new file mode 100644 index 0000000..94e5f9b --- /dev/null +++ b/site/www/_rem/lib/twig/TwigFilter.php @@ -0,0 +1,134 @@ + + * + * @see https://twig.symfony.com/doc/templates.html#filters + */ +final class TwigFilter +{ + private $name; + private $callable; + private $options; + private $arguments = []; + + /** + * @param callable|null $callable A callable implementing the filter. If null, you need to overwrite the "node_class" option to customize compilation. + */ + public function __construct(string $name, $callable = null, array $options = []) + { + $this->name = $name; + $this->callable = $callable; + $this->options = array_merge([ + 'needs_environment' => false, + 'needs_context' => false, + 'is_variadic' => false, + 'is_safe' => null, + 'is_safe_callback' => null, + 'pre_escape' => null, + 'preserves_safety' => null, + 'node_class' => FilterExpression::class, + 'deprecated' => false, + 'alternative' => null, + ], $options); + } + + public function getName(): string + { + return $this->name; + } + + /** + * Returns the callable to execute for this filter. + * + * @return callable|null + */ + public function getCallable() + { + return $this->callable; + } + + public function getNodeClass(): string + { + return $this->options['node_class']; + } + + public function setArguments(array $arguments): void + { + $this->arguments = $arguments; + } + + public function getArguments(): array + { + return $this->arguments; + } + + public function needsEnvironment(): bool + { + return $this->options['needs_environment']; + } + + public function needsContext(): bool + { + return $this->options['needs_context']; + } + + public function getSafe(Node $filterArgs): ?array + { + if (null !== $this->options['is_safe']) { + return $this->options['is_safe']; + } + + if (null !== $this->options['is_safe_callback']) { + return $this->options['is_safe_callback']($filterArgs); + } + + return null; + } + + public function getPreservesSafety(): ?array + { + return $this->options['preserves_safety']; + } + + public function getPreEscape(): ?string + { + return $this->options['pre_escape']; + } + + public function isVariadic(): bool + { + return $this->options['is_variadic']; + } + + public function isDeprecated(): bool + { + return (bool) $this->options['deprecated']; + } + + public function getDeprecatedVersion(): string + { + return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; + } + + public function getAlternative(): ?string + { + return $this->options['alternative']; + } +} diff --git a/site/www/_rem/lib/twig/TwigFunction.php b/site/www/_rem/lib/twig/TwigFunction.php new file mode 100644 index 0000000..494d45b --- /dev/null +++ b/site/www/_rem/lib/twig/TwigFunction.php @@ -0,0 +1,122 @@ + + * + * @see https://twig.symfony.com/doc/templates.html#functions + */ +final class TwigFunction +{ + private $name; + private $callable; + private $options; + private $arguments = []; + + /** + * @param callable|null $callable A callable implementing the function. If null, you need to overwrite the "node_class" option to customize compilation. + */ + public function __construct(string $name, $callable = null, array $options = []) + { + $this->name = $name; + $this->callable = $callable; + $this->options = array_merge([ + 'needs_environment' => false, + 'needs_context' => false, + 'is_variadic' => false, + 'is_safe' => null, + 'is_safe_callback' => null, + 'node_class' => FunctionExpression::class, + 'deprecated' => false, + 'alternative' => null, + ], $options); + } + + public function getName(): string + { + return $this->name; + } + + /** + * Returns the callable to execute for this function. + * + * @return callable|null + */ + public function getCallable() + { + return $this->callable; + } + + public function getNodeClass(): string + { + return $this->options['node_class']; + } + + public function setArguments(array $arguments): void + { + $this->arguments = $arguments; + } + + public function getArguments(): array + { + return $this->arguments; + } + + public function needsEnvironment(): bool + { + return $this->options['needs_environment']; + } + + public function needsContext(): bool + { + return $this->options['needs_context']; + } + + public function getSafe(Node $functionArgs): ?array + { + if (null !== $this->options['is_safe']) { + return $this->options['is_safe']; + } + + if (null !== $this->options['is_safe_callback']) { + return $this->options['is_safe_callback']($functionArgs); + } + + return []; + } + + public function isVariadic(): bool + { + return (bool) $this->options['is_variadic']; + } + + public function isDeprecated(): bool + { + return (bool) $this->options['deprecated']; + } + + public function getDeprecatedVersion(): string + { + return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; + } + + public function getAlternative(): ?string + { + return $this->options['alternative']; + } +} diff --git a/site/www/_rem/lib/twig/TwigTest.php b/site/www/_rem/lib/twig/TwigTest.php new file mode 100644 index 0000000..4c18632 --- /dev/null +++ b/site/www/_rem/lib/twig/TwigTest.php @@ -0,0 +1,100 @@ + + * + * @see https://twig.symfony.com/doc/templates.html#test-operator + */ +final class TwigTest +{ + private $name; + private $callable; + private $options; + private $arguments = []; + + /** + * @param callable|null $callable A callable implementing the test. If null, you need to overwrite the "node_class" option to customize compilation. + */ + public function __construct(string $name, $callable = null, array $options = []) + { + $this->name = $name; + $this->callable = $callable; + $this->options = array_merge([ + 'is_variadic' => false, + 'node_class' => TestExpression::class, + 'deprecated' => false, + 'alternative' => null, + 'one_mandatory_argument' => false, + ], $options); + } + + public function getName(): string + { + return $this->name; + } + + /** + * Returns the callable to execute for this test. + * + * @return callable|null + */ + public function getCallable() + { + return $this->callable; + } + + public function getNodeClass(): string + { + return $this->options['node_class']; + } + + public function setArguments(array $arguments): void + { + $this->arguments = $arguments; + } + + public function getArguments(): array + { + return $this->arguments; + } + + public function isVariadic(): bool + { + return (bool) $this->options['is_variadic']; + } + + public function isDeprecated(): bool + { + return (bool) $this->options['deprecated']; + } + + public function getDeprecatedVersion(): string + { + return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; + } + + public function getAlternative(): ?string + { + return $this->options['alternative']; + } + + public function hasOneMandatoryArgument(): bool + { + return (bool) $this->options['one_mandatory_argument']; + } +} diff --git a/site/www/_rem/lib/twig/Util/DeprecationCollector.php b/site/www/_rem/lib/twig/Util/DeprecationCollector.php new file mode 100644 index 0000000..378b666 --- /dev/null +++ b/site/www/_rem/lib/twig/Util/DeprecationCollector.php @@ -0,0 +1,77 @@ + + */ +final class DeprecationCollector +{ + private $twig; + + public function __construct(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(string $dir, string $ext = '.twig'): array + { + $iterator = new \RegexIterator( + new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($dir), \RecursiveIteratorIterator::LEAVES_ONLY + ), '{'.preg_quote($ext).'$}' + ); + + return $this->collect(new 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): array + { + $deprecations = []; + set_error_handler(function ($type, $msg) use (&$deprecations) { + if (\E_USER_DEPRECATED === $type) { + $deprecations[] = $msg; + } + }); + + foreach ($iterator as $name => $contents) { + try { + $this->twig->parse($this->twig->tokenize(new Source($contents, $name))); + } catch (SyntaxError $e) { + // ignore templates containing syntax errors + } + } + + restore_error_handler(); + + return $deprecations; + } +} diff --git a/site/www/_rem/lib/twig/Util/TemplateDirIterator.php b/site/www/_rem/lib/twig/Util/TemplateDirIterator.php new file mode 100644 index 0000000..3bef14b --- /dev/null +++ b/site/www/_rem/lib/twig/Util/TemplateDirIterator.php @@ -0,0 +1,36 @@ + + */ +class TemplateDirIterator extends \IteratorIterator +{ + /** + * @return mixed + */ + #[\ReturnTypeWillChange] + public function current() + { + return file_get_contents(parent::current()); + } + + /** + * @return mixed + */ + #[\ReturnTypeWillChange] + public function key() + { + return (string) parent::key(); + } +} diff --git a/site/www/_rem/lib_/Twig/BaseNodeVisitor.php b/site/www/_rem/lib_/Twig/BaseNodeVisitor.php new file mode 100644 index 0000000..9ba3342 --- /dev/null +++ b/site/www/_rem/lib_/Twig/BaseNodeVisitor.php @@ -0,0 +1,54 @@ + + */ +abstract class Twig_BaseNodeVisitor implements Twig_NodeVisitorInterface +{ + /** + * {@inheritdoc} + */ + final public function enterNode(Twig_Node $node, Twig_Environment $env) + { + return $this->doEnterNode($node, $env); + } + + /** + * {@inheritdoc} + */ + final public function leaveNode(Twig_Node $node, Twig_Environment $env) + { + return $this->doLeaveNode($node, $env); + } + + /** + * Called before child nodes are visited. + * + * @param Twig_Node $node The node to visit + * @param Twig_Environment $env The Twig environment instance + * + * @return Twig_Node The modified node + */ + abstract protected function doEnterNode(Twig_Node $node, Twig_Environment $env); + + /** + * Called after child nodes are visited. + * + * @param Twig_Node $node The node to visit + * @param Twig_Environment $env The Twig environment instance + * + * @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/site/www/_rem/lib_/Twig/Cache/Filesystem.php b/site/www/_rem/lib_/Twig/Cache/Filesystem.php new file mode 100644 index 0000000..9e70ca9 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Cache/Filesystem.php @@ -0,0 +1,98 @@ + + */ +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; + } + + /** + * {@inheritdoc} + */ + public function generateKey($name, $className) + { + $hash = hash('sha256', $className); + + return $this->directory.$hash[0].$hash[1].'/'.$hash.'.php'; + } + + /** + * {@inheritdoc} + */ + public function load($key) + { + if (file_exists($key)) { + @include_once $key; + } + } + + /** + * {@inheritdoc} + */ + public function write($key, $content) + { + $dir = dirname($key); + if (!is_dir($dir)) { + if (false === @mkdir($dir, 0777, true) && !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)); + } + + /** + * {@inheritdoc} + */ + public function getTimestamp($key) + { + if (!file_exists($key)) { + return 0; + } + + return (int) @filemtime($key); + } +} diff --git a/site/www/_rem/lib_/Twig/Cache/Null.php b/site/www/_rem/lib_/Twig/Cache/Null.php new file mode 100644 index 0000000..fde8c80 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Cache/Null.php @@ -0,0 +1,48 @@ + + */ +class Twig_Cache_Null implements Twig_CacheInterface +{ + /** + * {@inheritdoc} + */ + public function generateKey($name, $className) + { + return ''; + } + + /** + * {@inheritdoc} + */ + public function write($key, $content) + { + } + + /** + * {@inheritdoc} + */ + public function load($key) + { + } + + /** + * {@inheritdoc} + */ + public function getTimestamp($key) + { + return 0; + } +} diff --git a/site/www/_rem/lib_/Twig/CacheInterface.php b/site/www/_rem/lib_/Twig/CacheInterface.php new file mode 100644 index 0000000..9b17e0f --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Compiler.php b/site/www/_rem/lib_/Twig/Compiler.php new file mode 100644 index 0000000..dcdc8b9 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Compiler.php @@ -0,0 +1,267 @@ + + */ +class Twig_Compiler +{ + private $lastLine; + private $source; + private $indentation; + private $env; + private $debugInfo = array(); + private $sourceOffset; + private $sourceLine; + + /** + * Constructor. + * + * @param Twig_Environment $env The twig environment instance + */ + public function __construct(Twig_Environment $env) + { + $this->env = $env; + } + + /** + * Returns the environment instance related to this compiler. + * + * @return Twig_Environment The environment instance + */ + 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_Node $node The node to compile + * @param int $indentation The current indentation + * + * @return Twig_Compiler The current compiler instance + */ + public function compile(Twig_Node $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; + + $node->compile($this); + + return $this; + } + + public function subcompile(Twig_Node $node, $raw = true) + { + if (false === $raw) { + $this->addIndentation(); + } + + $node->compile($this); + + return $this; + } + + /** + * Adds a raw string to the compiled code. + * + * @param string $string The string + * + * @return Twig_Compiler The current compiler instance + */ + public function raw($string) + { + $this->source .= $string; + + return $this; + } + + /** + * Writes a string to the compiled code by adding indentation. + * + * @return Twig_Compiler The current compiler instance + */ + public function write() + { + $strings = func_get_args(); + foreach ($strings as $string) { + $this->addIndentation(); + $this->source .= $string; + } + + return $this; + } + + /** + * Appends an indentation to the current PHP code after compilation. + * + * @return Twig_Compiler The current compiler instance + */ + public function addIndentation() + { + $this->source .= str_repeat(' ', $this->indentation * 4); + + return $this; + } + + /** + * Adds a quoted string to the compiled code. + * + * @param string $value The string + * + * @return Twig_Compiler The current compiler instance + */ + 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 Twig_Compiler The current compiler instance + */ + 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. + * + * @param Twig_Node $node The related twig node + * + * @return Twig_Compiler The current compiler instance + */ + public function addDebugInfo(Twig_Node $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) { + // 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 Twig_Compiler The current compiler instance + */ + public function indent($step = 1) + { + $this->indentation += $step; + + return $this; + } + + /** + * Outdents the generated code. + * + * @param int $step The number of indentation to remove + * + * @return Twig_Compiler The current compiler instance + * + * @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/site/www/_rem/lib_/Twig/Environment.php b/site/www/_rem/lib_/Twig/Environment.php new file mode 100644 index 0000000..80c3f2d --- /dev/null +++ b/site/www/_rem/lib_/Twig/Environment.php @@ -0,0 +1,960 @@ + + */ +class Twig_Environment +{ + const VERSION = '2.0.0-DEV'; + + private $charset; + private $loader; + private $debug; + private $autoReload; + private $cache; + private $lexer; + private $parser; + private $compiler; + private $baseTemplateClass; + private $globals = array(); + private $resolvedGlobals; + private $loadedTemplates; + private $strictVariables; + private $templateClassPrefix = '__TwigTemplate_'; + private $originalCache; + private $extensionSet; + 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 + * * 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 A Twig_LoaderInterface instance + * @param array $options An array of options + */ + public function __construct(Twig_LoaderInterface $loader, $options = array()) + { + $this->setLoader($loader); + + $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->setCharset($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->extensionSet = new Twig_ExtensionSet(); + + $this->addExtension(new Twig_Extension_Core()); + $this->addExtension(new Twig_Extension_Escaper($options['autoescape'])); + $this->addExtension(new Twig_Extension_Optimizer($options['optimizations'])); + } + + /** + * 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 ($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 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); + } + + /** + * 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 by name. + * + * @param string $name The template name + * @param int $index The index if it is an embedded template + * + * @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 loadTemplate($name, $index = null) + { + $cls = $this->getTemplateClass($name, $index); + + if (isset($this->loadedTemplates[$cls])) { + return $this->loadedTemplates[$cls]; + } + + if (!class_exists($cls, false)) { + $key = $this->cache->generateKey($name, $cls); + + if (!$this->isAutoReload() || $this->isTemplateFresh($name, $this->cache->getTimestamp($key))) { + $this->cache->load($key); + } + + if (!class_exists($cls, false)) { + $content = $this->compileSource($this->getSourceContext($name)); + + $this->cache->write($key, $content); + + eval('?>'.$content); + } + } + + // to be removed in 3.0 + $this->extensionSet->initRuntime($this); + + 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); + } finally { + $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) + { + return $this->extensionSet->getLastModified() <= $time && $this->getLoader()->isFresh($name, $time); + } + + /** + * Tries to load a template consecutively from an array. + * + * Similar to loadTemplate() but it also accepts Twig_Template 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))); + } + + /** + * Sets the Lexer instance. + * + * @param Twig_Lexer $lexer A Twig_Lexer instance + */ + public function setLexer(Twig_Lexer $lexer) + { + $this->lexer = $lexer; + } + + /** + * Tokenizes a source code. + * + * @return Twig_TokenStream A Twig_TokenStream instance + * + * @throws Twig_Error_Syntax When the code is syntactically wrong + */ + public function tokenize(Twig_Source $source) + { + if (null === $this->lexer) { + $this->lexer = new Twig_Lexer($this); + } + + return $this->lexer->tokenize($source); + } + + /** + * Sets the Parser instance. + * + * @param Twig_Parser $parser A Twig_Parser instance + */ + public function setParser(Twig_Parser $parser) + { + $this->parser = $parser; + } + + /** + * Converts a token stream to a node tree. + * + * @param Twig_TokenStream $stream A token stream instance + * + * @return Twig_Node_Module A node tree + * + * @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); + } + + /** + * Sets the Compiler instance. + * + * @param Twig_Compiler $compiler A Twig_Compiler instance + */ + public function setCompiler(Twig_Compiler $compiler) + { + $this->compiler = $compiler; + } + + /** + * Compiles a node and returns the PHP code. + * + * @param Twig_Node $node A Twig_Node instance + * + * @return string The compiled PHP source code + */ + public function compile(Twig_Node $node) + { + if (null === $this->compiler) { + $this->compiler = new Twig_Compiler($this); + } + + return $this->compiler->compile($node)->getSource(); + } + + /** + * Compiles a template source code. + * + * @return string The compiled PHP source code + * + * @throws Twig_Error_Syntax When there was an error during tokenizing, parsing or compiling + */ + public function compileSource(Twig_Source $source) + { + try { + return $this->compile($this->parse($this->tokenize($source))); + } catch (Twig_Error $e) { + $e->setTemplateName($source->getName()); + 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->getName(), $e); + } + } + + /** + * Sets the Loader instance. + * + * @param Twig_LoaderInterface $loader A Twig_LoaderInterface instance + */ + public function setLoader(Twig_LoaderInterface $loader) + { + $this->loader = $loader; + } + + /** + * Gets the Loader instance. + * + * @return Twig_LoaderInterface A Twig_LoaderInterface instance + */ + public function getLoader() + { + return $this->loader; + } + + /** + * Gets the source context for the given template name. + * + * @return Twig_Source + */ + public function getSourceContext($name) + { + return $this->getLoader()->getSourceContext($name); + } + + /** + * Sets the default template charset. + * + * @param string $charset The default charset + */ + public function setCharset($charset) + { + if ('UTF8' === $charset = strtoupper($charset)) { + // iconv on Windows requires "UTF-8" instead of "UTF8" + $charset = 'UTF-8'; + } + + $this->charset = $charset; + } + + /** + * Gets the default template charset. + * + * @return string The default charset + */ + public function getCharset() + { + return $this->charset; + } + + /** + * 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) + { + return $this->extensionSet->hasExtension($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 A Twig_ExtensionInterface instance + */ + public function getExtension($class) + { + return $this->extensionSet->getExtension($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)); + } + + /** + * Registers an extension. + * + * @param Twig_ExtensionInterface $extension A Twig_ExtensionInterface instance + */ + public function addExtension(Twig_ExtensionInterface $extension) + { + $this->extensionSet->addExtension($extension); + $this->updateOptionsHash(); + } + + /** + * Registers an array of extensions. + * + * @param array $extensions An array of extensions + */ + public function setExtensions(array $extensions) + { + $this->extensionSet->setExtensions($extensions); + } + + /** + * 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->extensionSet->getExtensions(); + } + + /** + * Registers a Token Parser. + * + * @param Twig_TokenParserInterface $parser A Twig_TokenParserInterface instance + */ + public function addTokenParser(Twig_TokenParserInterface $parser) + { + $this->extensionSet->addTokenParser($parser); + } + + /** + * Gets the registered Token Parsers. + * + * @return Twig_TokenParserInterface[] An array of Twig_TokenParserInterface + * + * @internal + */ + public function getTokenParsers() + { + return $this->extensionSet->getTokenParsers(); + } + + /** + * Gets registered tags. + * + * @return Twig_TokenParserInterface[] An array of Twig_TokenParserInterface instances + * + * @internal + */ + public function getTags() + { + $tags = array(); + foreach ($this->getTokenParsers() as $parser) { + $tags[$parser->getTag()] = $parser; + } + + return $tags; + } + + /** + * Registers a Node Visitor. + * + * @param Twig_NodeVisitorInterface $visitor A Twig_NodeVisitorInterface instance + */ + public function addNodeVisitor(Twig_NodeVisitorInterface $visitor) + { + $this->extensionSet->addNodeVisitor($visitor); + } + + /** + * Gets the registered Node Visitors. + * + * @return Twig_NodeVisitorInterface[] An array of Twig_NodeVisitorInterface instances + * + * @internal + */ + public function getNodeVisitors() + { + return $this->extensionSet->getNodeVisitors(); + } + + /** + * Registers a Filter. + * + * @param Twig_Filter $filter A Twig_Filter instance + */ + public function addFilter(Twig_Filter $filter) + { + $this->extensionSet->addFilter($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) + { + return $this->extensionSet->getFilter($name); + } + + public function registerUndefinedFilterCallback(callable $callable) + { + $this->extensionSet->registerUndefinedFilterCallback($callable); + } + + /** + * Gets the registered Filters. + * + * Be warned that this method cannot return filters defined with registerUndefinedFilterCallback. + * + * @return Twig_Filter[] An array of Twig_Filter instances + * + * @see registerUndefinedFilterCallback + * + * @internal + */ + public function getFilters() + { + return $this->extensionSet->getFilters(); + } + + /** + * Registers a Test. + * + * @param Twig_Test $test A Twig_Test instance + */ + public function addTest(Twig_Test $test) + { + $this->extensionSet->addTest($test); + } + + /** + * Gets the registered Tests. + * + * @return Twig_Test[] An array of Twig_Test instances + * + * @internal + */ + public function getTests() + { + return $this->extensionSet->getTests(); + } + + /** + * 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) + { + return $this->extensionSet->getTest($name); + } + + /** + * Registers a Function. + * + * @param Twig_Function $function A Twig_Function instance + */ + public function addFunction(Twig_Function $function) + { + $this->extensionSet->addFunction($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) + { + return $this->extensionSet->getFunction($name); + } + + public function registerUndefinedFunctionCallback(callable $callable) + { + $this->extensionSet->registerUndefinedFunctionCallback($callable); + } + + /** + * Gets registered functions. + * + * Be warned that this method cannot return functions defined with registerUndefinedFunctionCallback. + * + * @return Twig_Function[] An array of Twig_Function instances + * + * @see registerUndefinedFunctionCallback + * + * @internal + */ + public function getFunctions() + { + return $this->extensionSet->getFunctions(); + } + + /** + * 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->extensionSet->isInitialized() && !array_key_exists($name, $this->getGlobals())) { + throw new LogicException(sprintf('Unable to add global "%s" as the runtime or the extensions have already been initialized.', $name)); + } + + if (null !== $this->resolvedGlobals) { + $this->resolvedGlobals[$name] = $value; + } else { + $this->globals[$name] = $value; + } + } + + /** + * Gets the registered Globals. + * + * @return array An array of globals + * + * @internal + */ + public function getGlobals() + { + if ($this->extensionSet->isInitialized()) { + if (null === $this->resolvedGlobals) { + $this->resolvedGlobals = array_merge($this->extensionSet->getGlobals(), $this->globals); + } + + return $this->resolvedGlobals; + } + + return array_merge($this->extensionSet->getGlobals(), $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() + { + return $this->extensionSet->getUnaryOperators(); + } + + /** + * Gets the registered binary Operators. + * + * @return array An array of binary operators + * + * @internal + */ + public function getBinaryOperators() + { + return $this->extensionSet->getBinaryOperators(); + } + + private function updateOptionsHash() + { + $this->optionsHash = implode(':', array( + $this->extensionSet->getSignature(), + (int) function_exists('twig_template_get_attributes'), + PHP_MAJOR_VERSION, + PHP_MINOR_VERSION, + self::VERSION, + (int) $this->debug, + $this->baseTemplateClass, + (int) $this->strictVariables, + )); + } +} diff --git a/site/www/_rem/lib_/Twig/Error.php b/site/www/_rem/lib_/Twig/Error.php new file mode 100644 index 0000000..98513a5 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Error.php @@ -0,0 +1,255 @@ + + */ +class Twig_Error extends Exception +{ + private $lineno; + private $name; + private $rawMessage; + + /** + * 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 string $name The template logical name where the error occurred + * @param Exception $previous The previous exception + */ + public function __construct($message, $lineno = -1, $name = null, Exception $previous = null) + { + parent::__construct('', 0, $previous); + + $this->lineno = $lineno; + $this->name = $name; + + if (-1 === $lineno || null === $name) { + $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 + */ + public function getTemplateName() + { + return $this->name; + } + + /** + * Sets the logical name where the error occurred. + * + * @param string $name The name + */ + public function setTemplateName($name) + { + $this->name = $name; + + $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(); + } + + 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(); + } + + private function updateRepr() + { + $this->message = $this->rawMessage; + + $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->name) { + if (is_string($this->name) || (is_object($this->name) && method_exists($this->name, '__toString'))) { + $name = sprintf('"%s"', $this->name); + } else { + $name = json_encode($this->name); + } + $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 .= '?'; + } + } + + private function guessTemplateInfo() + { + $template = null; + $templateClass = null; + + $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS | DEBUG_BACKTRACE_PROVIDE_OBJECT); + 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->name || ($this->name == $trace['object']->getTemplateName() && !$isEmbedContainer)) { + $template = $trace['object']; + $templateClass = get_class($trace['object']); + } + } + } + + // update template name + if (null !== $template && null === $this->name) { + $this->name = $template->getTemplateName(); + } + + 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 = $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/site/www/_rem/lib_/Twig/Error/Loader.php b/site/www/_rem/lib_/Twig/Error/Loader.php new file mode 100644 index 0000000..68efb57 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Error/Loader.php @@ -0,0 +1,31 @@ + + */ +class Twig_Error_Loader extends Twig_Error +{ + public function __construct($message, $lineno = -1, $filename = null, Exception $previous = null) + { + parent::__construct($message, false, false, $previous); + } +} diff --git a/site/www/_rem/lib_/Twig/Error/Runtime.php b/site/www/_rem/lib_/Twig/Error/Runtime.php new file mode 100644 index 0000000..8b6cedd --- /dev/null +++ b/site/www/_rem/lib_/Twig/Error/Runtime.php @@ -0,0 +1,20 @@ + + */ +class Twig_Error_Runtime extends Twig_Error +{ +} diff --git a/site/www/_rem/lib_/Twig/Error/Syntax.php b/site/www/_rem/lib_/Twig/Error/Syntax.php new file mode 100644 index 0000000..7ae5112 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Error/Syntax.php @@ -0,0 +1,44 @@ + + */ +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) + { + $alternatives = array(); + foreach ($items as $item) { + $lev = levenshtein($name, $item); + if ($lev <= strlen($name) / 3 || false !== strpos($item, $name)) { + $alternatives[$item] = $lev; + } + } + + if (!$alternatives) { + return; + } + + asort($alternatives); + + $this->appendMessage(sprintf(' Did you mean "%s"?', implode('", "', array_keys($alternatives)))); + } +} diff --git a/site/www/_rem/lib_/Twig/ExistsLoaderInterface.php b/site/www/_rem/lib_/Twig/ExistsLoaderInterface.php new file mode 100644 index 0000000..d8b89e2 --- /dev/null +++ b/site/www/_rem/lib_/Twig/ExistsLoaderInterface.php @@ -0,0 +1,17 @@ + + */ +class Twig_ExpressionParser +{ + const OPERATOR_LEFT = 1; + const OPERATOR_RIGHT = 2; + + private $parser; + private $unaryOperators; + private $binaryOperators; + + public function __construct(Twig_Parser $parser, array $unaryOperators, array $binaryOperators) + { + $this->parser = $parser; + $this->unaryOperators = $unaryOperators; + $this->binaryOperators = $binaryOperators; + } + + 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 (isset($op['callable'])) { + $expr = $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; + } + + private 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(); + } + + private 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; + } + + private function isUnary(Twig_Token $token) + { + return $token->test(Twig_Token::OPERATOR_TYPE) && isset($this->unaryOperators[$token->getValue()]); + } + + private 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()->getName()); + } + + $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()->getName()); + } + } + + 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()->getName()); + } + + $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()->getName()); + } + + 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()->getName()); + } + + return new Twig_Node_Expression_Parent($this->parser->peekBlockStack(), $line); + case 'block': + return new Twig_Node_Expression_BlockReference($this->parseArguments()->getNode(0), false, $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()->getName()); + } + + 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()->getName()); + } + + 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()->getName()); + } + + $name = $arg->getAttribute('value'); + + $node = new Twig_Node_Expression_MethodCall($node, 'macro_'.$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()->getName()); + } + $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()->getName()); + } + } 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()->getName()); + } + $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 getFunctionNodeClass($name, $line) + { + $env = $this->parser->getEnvironment(); + + if (false === $function = $env->getFunction($name)) { + $e = new Twig_Error_Syntax(sprintf('Unknown "%s" function.', $name), $line, $this->parser->getStream()->getSourceContext()->getName()); + $e->addSuggestions($name, array_keys($env->getFunctions())); + + throw $e; + } + + if ($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()); + } + $message .= sprintf(' in %s at line %d.', $this->parser->getStream()->getSourceContext()->getName(), $line); + + @trigger_error($message, E_USER_DEPRECATED); + } + + return $function->getNodeClass(); + } + + private function getFilterNodeClass($name, $line) + { + $env = $this->parser->getEnvironment(); + + if (false === $filter = $env->getFilter($name)) { + $e = new Twig_Error_Syntax(sprintf('Unknown "%s" filter.', $name), $line, $this->parser->getStream()->getSourceContext()->getName()); + $e->addSuggestions($name, array_keys($env->getFilters())); + + throw $e; + } + + if ($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()); + } + $message .= sprintf(' in %s at line %d.', $this->parser->getStream()->getSourceContext()->getName(), $line); + + @trigger_error($message, E_USER_DEPRECATED); + } + + return $filter->getNodeClass(); + } + + // checks that the node only contains "constant" elements + private function checkConstantExpression(Twig_Node $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/site/www/_rem/lib_/Twig/Extension.php b/site/www/_rem/lib_/Twig/Extension.php new file mode 100644 index 0000000..2b4bd5d --- /dev/null +++ b/site/www/_rem/lib_/Twig/Extension.php @@ -0,0 +1,60 @@ +escapers[$strategy] = $callable; + } + + /** + * Gets all defined escapers. + * + * @return callable[] 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(), + ); + } + + public function getFilters() + { + return array( + // formatting filters + new Twig_Filter('date', 'twig_date_format_filter', array('needs_environment' => true)), + new Twig_Filter('date_modify', 'twig_date_modify_filter', array('needs_environment' => true)), + new Twig_Filter('format', 'sprintf'), + new Twig_Filter('replace', 'twig_replace_filter'), + new Twig_Filter('number_format', 'twig_number_format_filter', array('needs_environment' => true)), + new Twig_Filter('abs', 'abs'), + new Twig_Filter('round', 'twig_round'), + + // encoding + new Twig_Filter('url_encode', 'twig_urlencode_filter'), + new Twig_Filter('json_encode', 'json_encode'), + new Twig_Filter('convert_encoding', 'twig_convert_encoding'), + + // string filters + new Twig_Filter('title', 'twig_title_string_filter', array('needs_environment' => true)), + new Twig_Filter('capitalize', 'twig_capitalize_string_filter', array('needs_environment' => true)), + new Twig_Filter('upper', 'twig_upper_filter', array('needs_environment' => true)), + new Twig_Filter('lower', 'twig_lower_filter', array('needs_environment' => true)), + new Twig_Filter('striptags', 'strip_tags'), + new Twig_Filter('trim', 'trim'), + new Twig_Filter('nl2br', 'nl2br', array('pre_escape' => 'html', 'is_safe' => array('html'))), + + // array helpers + new Twig_Filter('join', 'twig_join_filter'), + new Twig_Filter('split', 'twig_split_filter', array('needs_environment' => true)), + new Twig_Filter('sort', 'twig_sort_filter'), + new Twig_Filter('merge', 'twig_array_merge'), + new Twig_Filter('batch', 'twig_array_batch'), + + // string/array filters + new Twig_Filter('reverse', 'twig_reverse_filter', array('needs_environment' => true)), + new Twig_Filter('length', 'twig_length_filter', array('needs_environment' => true)), + new Twig_Filter('slice', 'twig_slice', array('needs_environment' => true)), + new Twig_Filter('first', 'twig_first', array('needs_environment' => true)), + new Twig_Filter('last', 'twig_last', array('needs_environment' => true)), + + // iteration and runtime + new Twig_Filter('default', '_twig_default_filter', array('node_class' => 'Twig_Node_Expression_Filter_Default')), + new Twig_Filter('keys', 'twig_get_array_keys_filter'), + + // escaping + new Twig_Filter('escape', 'twig_escape_filter', array('needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe')), + new Twig_Filter('e', 'twig_escape_filter', array('needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe')), + ); + } + + public function getFunctions() + { + return array( + new Twig_Function('max', 'max'), + new Twig_Function('min', 'min'), + new Twig_Function('range', 'range'), + new Twig_Function('constant', 'twig_constant'), + new Twig_Function('cycle', 'twig_cycle'), + new Twig_Function('random', 'twig_random', array('needs_environment' => true)), + new Twig_Function('date', 'twig_date_converter', array('needs_environment' => true)), + new Twig_Function('include', 'twig_include', array('needs_environment' => true, 'needs_context' => true, 'is_safe' => array('all'))), + new Twig_Function('source', 'twig_source', array('needs_environment' => true, 'is_safe' => array('all'))), + ); + } + + public function getTests() + { + return array( + new Twig_Test('even', null, array('node_class' => 'Twig_Node_Expression_Test_Even')), + new Twig_Test('odd', null, array('node_class' => 'Twig_Node_Expression_Test_Odd')), + new Twig_Test('defined', null, array('node_class' => 'Twig_Node_Expression_Test_Defined')), + new Twig_Test('same as', null, array('node_class' => 'Twig_Node_Expression_Test_Sameas')), + new Twig_Test('none', null, array('node_class' => 'Twig_Node_Expression_Test_Null')), + new Twig_Test('null', null, array('node_class' => 'Twig_Node_Expression_Test_Null')), + new Twig_Test('divisible by', null, array('node_class' => 'Twig_Node_Expression_Test_Divisibleby')), + new Twig_Test('constant', null, array('node_class' => 'Twig_Node_Expression_Test_Constant')), + new Twig_Test('empty', 'twig_test_empty'), + new Twig_Test('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, 'callable' => array($this, 'parseTestExpression'), 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + 'is not' => array('precedence' => 100, 'callable' => array($this, 'parseNotTestExpression'), '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 parseNotTestExpression(Twig_Parser $parser, Twig_Node $node) + { + return new Twig_Node_Expression_Unary_Not($this->parseTestExpression($parser, $node), $parser->getCurrentToken()->getLine()); + } + + public function parseTestExpression(Twig_Parser $parser, Twig_Node $node) + { + $stream = $parser->getStream(); + $test = $this->getTest($parser, $node->getTemplateLine()); + $class = $test->getNodeClass(); + $arguments = null; + if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) { + $arguments = $parser->getExpressionParser()->parseArguments(true); + } + + return new $class($node, $test->getName(), $arguments, $parser->getCurrentToken()->getLine()); + } + + private function getTest(Twig_Parser $parser, $line) + { + $stream = $parser->getStream(); + $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); + $env = $parser->getEnvironment(); + + if ($test = $env->getTest($name)) { + return $test; + } + + if ($stream->test(Twig_Token::NAME_TYPE)) { + // try 2-words tests + $name = $name.' '.$parser->getCurrentToken()->getValue(); + + if ($test = $env->getTest($name)) { + $parser->getStream()->next(); + + return $test; + } + } + + $e = new Twig_Error_Syntax(sprintf('Unknown "%s" test.', $name), $line, $stream->getSourceContext()->getName()); + $e->addSuggestions($name, array_keys($env->getTests())); + + throw $e; + } +} + +/** + * Cycles over a value. + * + * @param ArrayAccess|array $values An array or an ArrayAccess instance + * @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 A Twig_Environment instance + * @param Traversable|array|int|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 ''; + } + + $charset = $env->getCharset(); + + if ('UTF-8' !== $charset) { + $values = iconv($charset, 'UTF-8', $values); + } + + // 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] = iconv('UTF-8', $charset, $value); + } + } + } + + 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 A Twig_Environment instance + * @param 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 A Twig_Environment instance + * @param DateTimeInterface|string $date A date + * @param string $modifier A modifier string + * + * @return DateTimeInterface A new date object + */ +function twig_date_modify_filter(Twig_Environment $env, $date, $modifier) +{ + $date = twig_date_converter($env, $date, false); + + return $date->modify($modifier); +} + +/** + * Converts an input to a DateTime instance. + * + *
    + *    {% if date(user.created_at) < date('+2days') %}
    + *      {# do something #}
    + *    {% endif %}
    + * 
    + * + * @param Twig_Environment $env A Twig_Environment instance + * @param DateTimeInterface|string|null $date A date or null to use the current time + * @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 + * + * @return string + */ +function twig_replace_filter($str, $from) +{ + if ($from instanceof Traversable) { + $from = iterator_to_array($from); + } 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 A Twig_Environment instance + * @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); +} + +/** + * 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 A Twig_Environment instance + * @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) { + if ($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; + + return (string) mb_substr($item, $start, null === $length ? mb_strlen($item, $env->getCharset()) - $start : $length, $env->getCharset()); +} + +/** + * Returns the first element of the item. + * + * @param Twig_Environment $env A Twig_Environment instance + * @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 A Twig_Environment instance + * @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 A Twig_Environment instance + * @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 ($limit <= 1) { + return preg_split('/(?getCharset()); + if ($length < $limit) { + return array($value); + } + + $r = array(); + for ($i = 0; $i < $length; $i += $limit) { + $r[] = mb_substr($value, $i, $limit, $env->getCharset()); + } + + return $r; +} + +// The '_default' filter is used internally to avoid using the ternary operator +// which costs a lot for big contexts (before PHP 5.4). So, on average, +// a function call is cheaper. +/** + * @internal + */ +function _twig_default_filter($value, $default = '') +{ + if (twig_test_empty($value)) { + return $default; + } + + return $value; +} + +/** + * Returns the keys for the given array. + * + * It is useful when you want to iterate over the keys of an array: + * + *
    + *  {% 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) { + return array_keys(iterator_to_array($array)); + } + + if (!is_array($array)) { + return array(); + } + + return array_keys($array); +} + +/** + * Reverses a variable. + * + * @param Twig_Environment $env A Twig_Environment instance + * @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); + } + + $string = (string) $item; + + $charset = $env->getCharset(); + + if ('UTF-8' !== $charset) { + $item = iconv($charset, 'UTF-8', $string); + } + + preg_match_all('/./us', $item, $matches); + + $string = implode('', array_reverse($matches[0])); + + if ('UTF-8' !== $charset) { + $string = iconv('UTF-8', $charset, $string); + } + + return $string; +} + +/** + * 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) { + return in_array($value, iterator_to_array($compare, false), is_object($value) || is_resource($value)); + } + + return false; +} + +/** + * Escapes a string. + * + * @param Twig_Environment $env A Twig_Environment instance + * @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 = iconv($charset, 'UTF-8', $string); + $string = htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + + return iconv('UTF-8', $charset, $string); + + case 'js': + // escape all non-alphanumeric characters + // into their \xHH or \uHHHH representations + if ('UTF-8' !== $charset) { + $string = iconv($charset, 'UTF-8', $string); + } + + if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) { + 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', function ($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'); + + return '\\u'.strtoupper(substr('0000'.bin2hex($char), -4)); + }, $string); + + if ('UTF-8' !== $charset) { + $string = iconv('UTF-8', $charset, $string); + } + + return $string; + + case 'css': + if ('UTF-8' !== $charset) { + $string = iconv($charset, 'UTF-8', $string); + } + + if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) { + 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', function ($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').' '; + }, $string); + + if ('UTF-8' !== $charset) { + $string = iconv('UTF-8', $charset, $string); + } + + return $string; + + case 'html_attr': + if ('UTF-8' !== $charset) { + $string = iconv($charset, 'UTF-8', $string); + } + + if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) { + 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', function ($matches) { + /** + * 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 + */ + /* + * 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); + }, $string); + + if ('UTF-8' !== $charset) { + $string = iconv('UTF-8', $charset, $string); + } + + return $string; + + case 'url': + return rawurlencode($string); + + default: + static $escapers; + + if (null === $escapers) { + $escapers = $env->getExtension('Twig_Extension_Core')->getEscapers(); + } + + if (isset($escapers[$strategy])) { + return $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'); +} + +function twig_convert_encoding($string, $to, $from) +{ + return iconv($from, $to, $string); +} + +/** + * Returns the length of a variable. + * + * @param Twig_Environment $env A Twig_Environment instance + * @param mixed $thing A variable + * + * @return int The length of the value + */ +function twig_length_filter(Twig_Environment $env, $thing) +{ + return is_scalar($thing) ? mb_strlen($thing, $env->getCharset()) : count($thing); +} + +/** + * Converts a string to uppercase. + * + * @param Twig_Environment $env A Twig_Environment instance + * @param string $string A string + * + * @return string The uppercased string + */ +function twig_upper_filter(Twig_Environment $env, $string) +{ + return mb_strtoupper($string, $env->getCharset()); +} + +/** + * Converts a string to lowercase. + * + * @param Twig_Environment $env A Twig_Environment instance + * @param string $string A string + * + * @return string The lowercased string + */ +function twig_lower_filter(Twig_Environment $env, $string) +{ + return mb_strtolower($string, $env->getCharset()); +} + +/** + * Returns a titlecased string. + * + * @param Twig_Environment $env A Twig_Environment instance + * @param string $string A string + * + * @return string The titlecased string + */ +function twig_title_string_filter(Twig_Environment $env, $string) +{ + return mb_convert_case($string, MB_CASE_TITLE, $env->getCharset()); +} + +/** + * Returns a capitalized string. + * + * @param Twig_Environment $env A Twig_Environment instance + * @param string $string A string + * + * @return string The capitalized string + */ +function twig_capitalize_string_filter(Twig_Environment $env, $string) +{ + $charset = $env->getCharset(); + + return mb_strtoupper(mb_substr($string, 0, 1, $charset), $charset).mb_strtolower(mb_substr($string, 1, 2147483647, $charset), $charset); +} + +/** + * @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); + } + + 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; + } + } + + 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) +{ + try { + return $env->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); +} + +/** + * 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/site/www/_rem/lib_/Twig/Extension/Debug.php b/site/www/_rem/lib_/Twig/Extension/Debug.php new file mode 100644 index 0000000..88daff8 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Extension/Debug.php @@ -0,0 +1,56 @@ + $isDumpOutputHtmlSafe ? array('html') : array(), 'needs_context' => true, 'needs_environment' => true)), + ); + } +} + +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/site/www/_rem/lib_/Twig/Extension/Escaper.php b/site/www/_rem/lib_/Twig/Extension/Escaper.php new file mode 100644 index 0000000..ecd9f4d --- /dev/null +++ b/site/www/_rem/lib_/Twig/Extension/Escaper.php @@ -0,0 +1,90 @@ +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_Filter('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) + { + 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; + } +} + +/** + * Marks a variable as being safe. + * + * @param string $string A PHP variable + * + * @return string + */ +function twig_raw_filter($string) +{ + return $string; +} diff --git a/site/www/_rem/lib_/Twig/Extension/GlobalsInterface.php b/site/www/_rem/lib_/Twig/Extension/GlobalsInterface.php new file mode 100644 index 0000000..a085cec --- /dev/null +++ b/site/www/_rem/lib_/Twig/Extension/GlobalsInterface.php @@ -0,0 +1,28 @@ + + */ +interface Twig_Extension_GlobalsInterface +{ + /** + * Returns a list of global variables to add to the existing list. + * + * @return array An array of global variables + */ + public function getGlobals(); +} diff --git a/site/www/_rem/lib_/Twig/Extension/InitRuntimeInterface.php b/site/www/_rem/lib_/Twig/Extension/InitRuntimeInterface.php new file mode 100644 index 0000000..d883c7d --- /dev/null +++ b/site/www/_rem/lib_/Twig/Extension/InitRuntimeInterface.php @@ -0,0 +1,30 @@ + + */ +interface Twig_Extension_InitRuntimeInterface +{ + /** + * Initializes the runtime environment. + * + * This is where you can load some file that contains filter functions for instance. + * + * @param Twig_Environment $environment The current Twig_Environment instance + */ + public function initRuntime(Twig_Environment $environment); +} diff --git a/site/www/_rem/lib_/Twig/Extension/Optimizer.php b/site/www/_rem/lib_/Twig/Extension/Optimizer.php new file mode 100644 index 0000000..e043eee --- /dev/null +++ b/site/www/_rem/lib_/Twig/Extension/Optimizer.php @@ -0,0 +1,24 @@ +optimizers = $optimizers; + } + + public function getNodeVisitors() + { + return array(new Twig_NodeVisitor_Optimizer($this->optimizers)); + } +} diff --git a/site/www/_rem/lib_/Twig/Extension/Profiler.php b/site/www/_rem/lib_/Twig/Extension/Profiler.php new file mode 100644 index 0000000..961af42 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Extension/Profiler.php @@ -0,0 +1,41 @@ +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))); + } +} diff --git a/site/www/_rem/lib_/Twig/Extension/Sandbox.php b/site/www/_rem/lib_/Twig/Extension/Sandbox.php new file mode 100644 index 0000000..80f8296 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Extension/Sandbox.php @@ -0,0 +1,92 @@ +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; + } +} diff --git a/site/www/_rem/lib_/Twig/Extension/Staging.php b/site/www/_rem/lib_/Twig/Extension/Staging.php new file mode 100644 index 0000000..6b13afa --- /dev/null +++ b/site/www/_rem/lib_/Twig/Extension/Staging.php @@ -0,0 +1,76 @@ + + * + * @internal + */ +final class Twig_Extension_Staging extends Twig_Extension +{ + private $functions = array(); + private $filters = array(); + private $visitors = array(); + private $tokenParsers = array(); + private $tests = array(); + + public function addFunction(Twig_Function $function) + { + $this->functions[$function->getName()] = $function; + } + + public function getFunctions() + { + return $this->functions; + } + + public function addFilter(Twig_Filter $filter) + { + $this->filters[$filter->getName()] = $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) + { + $this->tokenParsers[] = $parser; + } + + public function getTokenParsers() + { + return $this->tokenParsers; + } + + public function addTest(Twig_Test $test) + { + $this->tests[$test->getName()] = $test; + } + + public function getTests() + { + return $this->tests; + } +} diff --git a/site/www/_rem/lib_/Twig/Extension/StringLoader.php b/site/www/_rem/lib_/Twig/Extension/StringLoader.php new file mode 100644 index 0000000..757ceb3 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Extension/StringLoader.php @@ -0,0 +1,36 @@ + true)), + ); + } +} + +/** + * 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 A Twig_Template instance + */ +function twig_template_from_string(Twig_Environment $env, $template) +{ + return $env->createTemplate((string) $template); +} diff --git a/site/www/_rem/lib_/Twig/ExtensionInterface.php b/site/www/_rem/lib_/Twig/ExtensionInterface.php new file mode 100644 index 0000000..832cbc6 --- /dev/null +++ b/site/www/_rem/lib_/Twig/ExtensionInterface.php @@ -0,0 +1,60 @@ + + */ +interface Twig_ExtensionInterface +{ + /** + * 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[] An array of Twig_NodeVisitorInterface instances + */ + 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 An array of operators + */ + public function getOperators(); +} diff --git a/site/www/_rem/lib_/Twig/ExtensionSet.php b/site/www/_rem/lib_/Twig/ExtensionSet.php new file mode 100644 index 0000000..c971a7d --- /dev/null +++ b/site/www/_rem/lib_/Twig/ExtensionSet.php @@ -0,0 +1,485 @@ + + * + * @internal + */ +final class Twig_ExtensionSet +{ + private $extensions; + private $initialized = false; + private $runtimeInitialized = false; + private $staging; + private $parsers; + private $visitors; + private $filters; + private $tests; + private $functions; + private $unaryOperators; + private $binaryOperators; + private $globals; + private $functionCallbacks = array(); + private $filterCallbacks = array(); + private $lastModified = 0; + + public function __construct() + { + $this->staging = new Twig_Extension_Staging(); + } + + /** + * Initializes the runtime environment. + */ + public function initRuntime(Twig_Environment $env) + { + if ($this->runtimeInitialized) { + return; + } + + $this->runtimeInitialized = true; + + foreach ($this->extensions as $extension) { + if ($extension instanceof Twig_Extension_InitRuntimeInterface) { + $extension->initRuntime($env); + } + } + } + + /** + * 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) + { + return isset($this->extensions[ltrim($class, '\\')]); + } + + /** + * Gets an extension by class name. + * + * @param string $class The extension class name + * + * @return Twig_ExtensionInterface A Twig_ExtensionInterface instance + */ + public function getExtension($class) + { + $class = ltrim($class, '\\'); + + if (!isset($this->extensions[$class])) { + throw new Twig_Error_Runtime(sprintf('The "%s" extension is not enabled.', $class)); + } + + return $this->extensions[$class]; + } + + /** + * 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 array An array of extensions + */ + public function getExtensions() + { + return $this->extensions; + } + + public function getSignature() + { + return json_encode(array_keys($this->extensions)); + } + + public function isInitialized() + { + return $this->initialized || $this->runtimeInitialized; + } + + public function getLastModified() + { + if (0 !== $this->lastModified) { + return $this->lastModified; + } + + foreach ($this->extensions as $extension) { + $r = new ReflectionObject($extension); + if (file_exists($r->getFileName()) && ($extensionTime = filemtime($r->getFileName())) > $this->lastModified) { + $this->lastModified = $extensionTime; + } + } + + return $this->lastModified; + } + + /** + * Registers an extension. + * + * @param Twig_ExtensionInterface $extension A Twig_ExtensionInterface instance + */ + public function addExtension(Twig_ExtensionInterface $extension) + { + $class = get_class($extension); + + if ($this->initialized) { + throw new LogicException(sprintf('Unable to register extension "%s" as extensions have already been initialized.', $class)); + } + + if (isset($this->extensions[$class])) { + throw new LogicException(sprintf('Unable to register extension "%s" as it is already registered.', $class)); + } + + $this->lastModifiedExtension = 0; + $this->extensions[$class] = $extension; + } + + public function addFunction(Twig_Function $function) + { + if ($this->initialized) { + throw new LogicException(sprintf('Unable to add function "%s" as extensions have already been initialized.', $function->getName())); + } + + $this->staging->addFunction($function); + } + + /** + * {@inheritdoc} + */ + public function getFunctions() + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->functions; + } + + /** + * Get a function by name. + * + * @param string $name function name + * + * @return Twig_Function|false A Twig_Function instance or false if the function does not exist + */ + public function getFunction($name) + { + if (!$this->initialized) { + $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 && preg_match('#^'.$pattern.'$#', $name, $matches)) { + array_shift($matches); + $function->setArguments($matches); + + return $function; + } + } + + foreach ($this->functionCallbacks as $callback) { + if (false !== $function = $callback($name)) { + return $function; + } + } + + return false; + } + + public function registerUndefinedFunctionCallback(callable $callable) + { + $this->functionCallbacks[] = $callable; + } + + public function addFilter(Twig_Filter $filter) + { + if ($this->initialized) { + throw new LogicException(sprintf('Unable to add filter "%s" as extensions have already been initialized.', $filter->getName())); + } + + $this->staging->addFilter($filter); + } + + /** + * {@inheritdoc} + */ + public function getFilters() + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->filters; + } + + /** + * 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 + */ + public function getFilter($name) + { + if (!$this->initialized) { + $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 && preg_match('#^'.$pattern.'$#', $name, $matches)) { + array_shift($matches); + $filter->setArguments($matches); + + return $filter; + } + } + + foreach ($this->filterCallbacks as $callback) { + if (false !== $filter = $callback($name)) { + return $filter; + } + } + + return false; + } + + public function registerUndefinedFilterCallback(callable $callable) + { + $this->filterCallbacks[] = $callable; + } + + public function addNodeVisitor(Twig_NodeVisitorInterface $visitor) + { + if ($this->initialized) { + throw new LogicException('Unable to add a node visitor as extensions have already been initialized.'); + } + + $this->staging->addNodeVisitor($visitor); + } + + /** + * {@inheritdoc} + */ + public function getNodeVisitors() + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->visitors; + } + + public function addTokenParser(Twig_TokenParserInterface $parser) + { + if ($this->initialized) { + throw new LogicException('Unable to add a token parser as extensions have already been initialized.'); + } + + $this->staging->addTokenParser($parser); + } + + /** + * {@inheritdoc} + */ + public function getTokenParsers() + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->parsers; + } + + /** + * {@inheritdoc} + */ + public function getGlobals() + { + if (null !== $this->globals) { + return $this->globals; + } + + $globals = array(); + foreach ($this->extensions as $extension) { + if (!$extension instanceof Twig_Extension_GlobalsInterface) { + continue; + } + + $extGlobals = $extension->getGlobals(); + if (!is_array($extGlobals)) { + throw new UnexpectedValueException(sprintf('"%s::getGlobals()" must return an array of globals.', get_class($extension))); + } + + $globals = array_merge($globals, $extGlobals); + } + + if ($this->initialized) { + $this->globals = $globals; + } + + return $globals; + } + + public function addTest(Twig_Test $test) + { + if ($this->initialized) { + throw new LogicException(sprintf('Unable to add test "%s" as extensions have already been initialized.', $test->getName())); + } + + $this->staging->addTest($test); + } + + /** + * {@inheritdoc} + */ + public function getTests() + { + if (!$this->initialized) { + $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 + */ + public function getTest($name) + { + if (!$this->initialized) { + $this->initExtensions(); + } + + if (isset($this->tests[$name])) { + return $this->tests[$name]; + } + + return false; + } + + /** + * Gets the registered unary Operators. + * + * @return array An array of unary operators + */ + public function getUnaryOperators() + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->unaryOperators; + } + + /** + * Gets the registered binary Operators. + * + * @return array An array of binary operators + */ + public function getBinaryOperators() + { + if (!$this->initialized) { + $this->initExtensions(); + } + + return $this->binaryOperators; + } + + private function initExtensions() + { + $this->initialized = true; + $this->parsers = array(); + $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); + } + + private function initExtension(Twig_ExtensionInterface $extension) + { + // filters + foreach ($extension->getFilters() as $filter) { + $this->filters[$filter->getName()] = $filter; + } + + // functions + foreach ($extension->getFunctions() as $function) { + $this->functions[$function->getName()] = $function; + } + + // tests + foreach ($extension->getTests() as $test) { + $this->tests[$test->getName()] = $test; + } + + // token parsers + foreach ($extension->getTokenParsers() as $parser) { + if (!$parser instanceof Twig_TokenParserInterface) { + throw new LogicException('getTokenParsers() must return an array of Twig_TokenParserInterface.'); + } + + $this->parsers[] = $parser; + } + + // node visitors + foreach ($extension->getNodeVisitors() as $visitor) { + $this->visitors[] = $visitor; + } + + // operators + if ($operators = $extension->getOperators()) { + if (2 !== count($operators)) { + throw new InvalidArgumentException(sprintf('"%s::getOperators()" does not return a valid operators array.', get_class($extension))); + } + + $this->unaryOperators = array_merge($this->unaryOperators, $operators[0]); + $this->binaryOperators = array_merge($this->binaryOperators, $operators[1]); + } + } +} diff --git a/site/www/_rem/lib_/Twig/FileExtensionEscapingStrategy.php b/site/www/_rem/lib_/Twig/FileExtensionEscapingStrategy.php new file mode 100644 index 0000000..772139e --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Filter.php b/site/www/_rem/lib_/Twig/Filter.php new file mode 100644 index 0000000..35b28d0 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Filter.php @@ -0,0 +1,131 @@ + + * + * @see http://twig.sensiolabs.org/doc/templates.html#filters + */ +class Twig_Filter +{ + private $name; + private $callable; + private $options; + private $arguments = array(); + + /** + * Creates a template filter. + * + * @param string $name Name of this filter + * @param callable|null $callable A callable implementing the filter. If null, you need to overwrite the "node_class" option to customize compilation. + * @param array $options Options array + */ + public function __construct($name, $callable = null, 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; + } + + /** + * Returns the callable to execute for this filter. + * + * @return callable|null + */ + 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 $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/site/www/_rem/lib_/Twig/Function.php b/site/www/_rem/lib_/Twig/Function.php new file mode 100644 index 0000000..b75210c --- /dev/null +++ b/site/www/_rem/lib_/Twig/Function.php @@ -0,0 +1,121 @@ + + * + * @see http://twig.sensiolabs.org/doc/templates.html#functions + */ +class Twig_Function +{ + private $name; + private $callable; + private $options; + private $arguments = array(); + + /** + * Creates a template function. + * + * @param string $name Name of this function + * @param callable|null $callable A callable implementing the function. If null, you need to overwrite the "node_class" option to customize compilation. + * @param array $options Options array + */ + public function __construct($name, $callable = null, 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; + } + + /** + * Returns the callable to execute for this function. + * + * @return callable|null + */ + 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 $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/site/www/_rem/lib_/Twig/Lexer.php b/site/www/_rem/lib_/Twig/Lexer.php new file mode 100644 index 0000000..4e771c0 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Lexer.php @@ -0,0 +1,409 @@ + + */ +class Twig_Lexer +{ + private $tokens; + private $code; + private $cursor; + private $lineno; + private $end; + private $state; + private $states; + private $brackets; + private $env; + private $name; + private $options; + private $regexes; + private $position; + private $positions; + private $currentVarBlockLine; + + 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*(?:endverbatim)\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*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', + ); + } + + /** + * {@inheritdoc} + */ + public function tokenize($code, $name = null) + { + $source = $code; + + if (((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", $source->getCode()); + $this->name = $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->name); + } + + if ($mbEncoding) { + mb_internal_encoding($mbEncoding); + } + + return new Twig_TokenStream($this->tokens, $source); + } + + private 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(); + // {% 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; + } + } + + private 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(); + } + } + + private 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(); + } + } + + private 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->name); + } + } + + // 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->name); + } + + 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->name); + } + } + + $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->name); + } + } + + private function lexRawData() + { + if (!preg_match($this->regexes['lex_raw_data'], $this->code, $match, PREG_OFFSET_CAPTURE, $this->cursor)) { + throw new Twig_Error_Syntax('Unexpected end of file: Unclosed "verbatim" block.', $this->lineno, $this->name); + } + + $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); + } + + private 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->name); + } + + $this->moveCursor(substr($this->code, $this->cursor, $match[0][1] - $this->cursor).$match[0][0]); + } + + private 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->name); + } + + $this->popState(); + ++$this->cursor; + } + } + + private 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(); + } + } + + private 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); + } + + private function moveCursor($text) + { + $this->cursor += strlen($text); + $this->lineno += substr_count($text, "\n"); + } + + private 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'; + } + + private function pushState($state) + { + $this->states[] = $this->state; + $this->state = $state; + } + + private 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/site/www/_rem/lib_/Twig/Loader/Array.php b/site/www/_rem/lib_/Twig/Loader/Array.php new file mode 100644 index 0000000..a131c3d --- /dev/null +++ b/site/www/_rem/lib_/Twig/Loader/Array.php @@ -0,0 +1,93 @@ + + */ +class Twig_Loader_Array implements Twig_LoaderInterface, Twig_ExistsLoaderInterface, Twig_SourceContextLoaderInterface +{ + private $templates = array(); + + /** + * Constructor. + * + * @param array $templates An array of templates (keys are the names, and values are the source code) + */ + public function __construct(array $templates) + { + $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[$name] = $template; + } + + /** + * {@inheritdoc} + */ + 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); + } + + /** + * {@inheritdoc} + */ + public function exists($name) + { + return isset($this->templates[$name]); + } + + /** + * {@inheritdoc} + */ + public function getCacheKey($name) + { + if (!isset($this->templates[$name])) { + throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name)); + } + + return $this->templates[$name]; + } + + /** + * {@inheritdoc} + */ + public function isFresh($name, $time) + { + if (!isset($this->templates[$name])) { + throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name)); + } + + return true; + } +} diff --git a/site/www/_rem/lib_/Twig/Loader/Chain.php b/site/www/_rem/lib_/Twig/Loader/Chain.php new file mode 100644 index 0000000..1b5b739 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Loader/Chain.php @@ -0,0 +1,125 @@ + + */ +class Twig_Loader_Chain implements Twig_LoaderInterface, Twig_ExistsLoaderInterface, Twig_SourceContextLoaderInterface +{ + private $hasSourceCache = array(); + private $loaders = array(); + + /** + * Constructor. + * + * @param Twig_LoaderInterface[] $loaders An array of loader instances + */ + public function __construct(array $loaders = array()) + { + foreach ($loaders as $loader) { + $this->addLoader($loader); + } + } + + /** + * Adds a loader instance. + * + * @param Twig_LoaderInterface $loader A Loader instance + */ + public function addLoader(Twig_LoaderInterface $loader) + { + $this->loaders[] = $loader; + $this->hasSourceCache = array(); + } + + /** + * {@inheritdoc} + */ + public function getSourceContext($name) + { + $exceptions = array(); + foreach ($this->loaders as $loader) { + if (!$loader->exists($name)) { + continue; + } + + try { + return $loader->getSourceContext($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).')' : '')); + } + + /** + * {@inheritdoc} + */ + public function exists($name) + { + if (isset($this->hasSourceCache[$name])) { + return $this->hasSourceCache[$name]; + } + + foreach ($this->loaders as $loader) { + if ($loader->exists($name)) { + return $this->hasSourceCache[$name] = true; + } + } + + return $this->hasSourceCache[$name] = false; + } + + /** + * {@inheritdoc} + */ + public function getCacheKey($name) + { + $exceptions = array(); + foreach ($this->loaders as $loader) { + if (!$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).')' : '')); + } + + /** + * {@inheritdoc} + */ + public function isFresh($name, $time) + { + $exceptions = array(); + foreach ($this->loaders as $loader) { + if (!$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/site/www/_rem/lib_/Twig/Loader/Filesystem.php b/site/www/_rem/lib_/Twig/Loader/Filesystem.php new file mode 100644 index 0000000..22eaf9f --- /dev/null +++ b/site/www/_rem/lib_/Twig/Loader/Filesystem.php @@ -0,0 +1,296 @@ + + */ +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; + + /** + * Constructor. + * + * @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); + } + } + + /** + * {@inheritdoc} + */ + public function getSourceContext($name) + { + $path = $this->findTemplate($name); + + return new Twig_Source(file_get_contents($path), $name, $path); + } + + /** + * {@inheritdoc} + */ + 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; + } + + /** + * {@inheritdoc} + */ + public function exists($name) + { + $name = $this->normalizeName($name); + + if (isset($this->cache[$name])) { + return true; + } + + return false !== $this->findTemplate($name, false); + } + + /** + * {@inheritdoc} + */ + public function isFresh($name, $time) + { + return filemtime($this->findTemplate($name)) <= $time; + } + + /** + * Checks if the template can be found. + * + * @param string $name The template name + * @param bool $throw Whether to throw an exception when an error occurs + * + * @return string|false The template name or false + */ + protected function findTemplate($name, $throw = 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]); + } + + private function normalizeName($name) + { + return preg_replace('#/{2,}#', '/', str_replace('\\', '/', $name)); + } + + private 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); + } + + private 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/site/www/_rem/lib_/Twig/LoaderInterface.php b/site/www/_rem/lib_/Twig/LoaderInterface.php new file mode 100644 index 0000000..11be062 --- /dev/null +++ b/site/www/_rem/lib_/Twig/LoaderInterface.php @@ -0,0 +1,62 @@ + + */ +interface Twig_LoaderInterface +{ + /** + * 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); + + /** + * 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); + + /** + * 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/site/www/_rem/lib_/Twig/Markup.php b/site/www/_rem/lib_/Twig/Markup.php new file mode 100644 index 0000000..8c8741e --- /dev/null +++ b/site/www/_rem/lib_/Twig/Markup.php @@ -0,0 +1,42 @@ + + */ +class Twig_Markup implements Countable, JsonSerializable +{ + private $content; + private $charset; + + public function __construct($content, $charset) + { + $this->content = (string) $content; + $this->charset = $charset; + } + + public function __toString() + { + return $this->content; + } + + public function count() + { + return mb_strlen($this->content, $this->charset); + } + + public function jsonSerialize() + { + return $this->content; + } +} diff --git a/site/www/_rem/lib_/Twig/Node.php b/site/www/_rem/lib_/Twig/Node.php new file mode 100644 index 0000000..c7a6aae --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node.php @@ -0,0 +1,216 @@ + + */ +class Twig_Node implements Countable, IteratorAggregate +{ + 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 self) { + throw new InvalidArgumentException(sprintf('Using "%s" for the value of node "%s" of "%s" is not supported. You must pass a Twig_Node instance.', is_object($node) ? get_class($node) : null === $node ? 'null' : gettype($node), $name, get_class($this))); + } + } + $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); + } + + public function compile(Twig_Compiler $compiler) + { + foreach ($this->nodes as $node) { + $node->compile($compiler); + } + } + + public function getTemplateLine() + { + return $this->lineno; + } + + public function getNodeTag() + { + return $this->tag; + } + + /** + * Returns true if the attribute is defined. + * + * @param string $name The attribute name + * + * @return bool true if the attribute is defined, false otherwise + */ + public function hasAttribute($name) + { + return array_key_exists($name, $this->attributes); + } + + /** + * Gets an attribute value by name. + * + * @param string $name + * + * @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]; + } + + /** + * Sets an attribute by name to a value. + * + * @param string $name + * @param mixed $value + */ + public function setAttribute($name, $value) + { + $this->attributes[$name] = $value; + } + + /** + * Removes an attribute by name. + * + * @param string $name + */ + public function removeAttribute($name) + { + unset($this->attributes[$name]); + } + + /** + * Returns true if the node with the given name exists. + * + * @param string $name + * + * @return bool + */ + public function hasNode($name) + { + return isset($this->nodes[$name]); + } + + /** + * Gets a node by name. + * + * @param string $name + * + * @return Twig_Node + */ + public function getNode($name) + { + if (!isset($this->nodes[$name])) { + throw new LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, get_class($this))); + } + + return $this->nodes[$name]; + } + + /** + * Sets a node. + * + * @param string $name + * @param Twig_Node $node + */ + public function setNode($name, Twig_Node $node) + { + $this->nodes[$name] = $node; + } + + /** + * Removes a node by name. + * + * @param string $name + */ + 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) { + $node->setTemplateName($name); + } + } + + public function getTemplateName() + { + return $this->name; + } +} diff --git a/site/www/_rem/lib_/Twig/Node/AutoEscape.php b/site/www/_rem/lib_/Twig/Node/AutoEscape.php new file mode 100644 index 0000000..397d3d8 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/AutoEscape.php @@ -0,0 +1,34 @@ + + */ +class Twig_Node_AutoEscape extends Twig_Node +{ + public function __construct($value, Twig_Node $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/site/www/_rem/lib_/Twig/Node/Block.php b/site/www/_rem/lib_/Twig/Node/Block.php new file mode 100644 index 0000000..7130a6d --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Block.php @@ -0,0 +1,39 @@ + + */ +class Twig_Node_Block extends Twig_Node +{ + public function __construct($name, Twig_Node $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/site/www/_rem/lib_/Twig/Node/BlockReference.php b/site/www/_rem/lib_/Twig/Node/BlockReference.php new file mode 100644 index 0000000..9cd1551 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Body.php b/site/www/_rem/lib_/Twig/Node/Body.php new file mode 100644 index 0000000..3ffb134 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Body.php @@ -0,0 +1,19 @@ + + */ +class Twig_Node_Body extends Twig_Node +{ +} diff --git a/site/www/_rem/lib_/Twig/Node/CheckSecurity.php b/site/www/_rem/lib_/Twig/Node/CheckSecurity.php new file mode 100644 index 0000000..60ad3f4 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/CheckSecurity.php @@ -0,0 +1,78 @@ + + */ +class Twig_Node_CheckSecurity extends Twig_Node +{ + private $usedFilters; + private $usedTags; + private $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->setTemplateName(\$this->getTemplateName());\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/site/www/_rem/lib_/Twig/Node/Do.php b/site/www/_rem/lib_/Twig/Node/Do.php new file mode 100644 index 0000000..14fb84e --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Embed.php b/site/www/_rem/lib_/Twig/Node/Embed.php new file mode 100644 index 0000000..875e807 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Embed.php @@ -0,0 +1,42 @@ + + */ +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); + $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/site/www/_rem/lib_/Twig/Node/Expression.php b/site/www/_rem/lib_/Twig/Node/Expression.php new file mode 100644 index 0000000..a7382e7 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression.php @@ -0,0 +1,20 @@ + + */ +abstract class Twig_Node_Expression extends Twig_Node +{ +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Array.php b/site/www/_rem/lib_/Twig/Node/Expression/Array.php new file mode 100644 index 0000000..164444e --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/AssignName.php b/site/www/_rem/lib_/Twig/Node/Expression/AssignName.php new file mode 100644 index 0000000..ce0c5fb --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/AssignName.php @@ -0,0 +1,23 @@ +raw('$context[') + ->string($this->getAttribute('name')) + ->raw(']') + ; + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary.php new file mode 100644 index 0000000..0f1f9e0 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Binary/Add.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Add.php new file mode 100644 index 0000000..0ef8e11 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Add.php @@ -0,0 +1,18 @@ +raw('+'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/And.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/And.php new file mode 100644 index 0000000..d5752eb --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/And.php @@ -0,0 +1,18 @@ +raw('&&'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/BitwiseAnd.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/BitwiseAnd.php new file mode 100644 index 0000000..9a46d84 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/BitwiseAnd.php @@ -0,0 +1,18 @@ +raw('&'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/BitwiseOr.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/BitwiseOr.php new file mode 100644 index 0000000..058a20b --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/BitwiseOr.php @@ -0,0 +1,18 @@ +raw('|'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/BitwiseXor.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/BitwiseXor.php new file mode 100644 index 0000000..f4da73d --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/BitwiseXor.php @@ -0,0 +1,18 @@ +raw('^'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/Concat.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Concat.php new file mode 100644 index 0000000..f9a6462 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Concat.php @@ -0,0 +1,18 @@ +raw('.'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/Div.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Div.php new file mode 100644 index 0000000..e0797a6 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Div.php @@ -0,0 +1,18 @@ +raw('/'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/EndsWith.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/EndsWith.php new file mode 100644 index 0000000..93b3b96 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Binary/Equal.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Equal.php new file mode 100644 index 0000000..7b1236d --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Equal.php @@ -0,0 +1,17 @@ +raw('=='); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/FloorDiv.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/FloorDiv.php new file mode 100644 index 0000000..6bbba62 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Binary/Greater.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Greater.php new file mode 100644 index 0000000..a110bd9 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Greater.php @@ -0,0 +1,17 @@ +raw('>'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/GreaterEqual.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/GreaterEqual.php new file mode 100644 index 0000000..3754fed --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/GreaterEqual.php @@ -0,0 +1,17 @@ +raw('>='); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/In.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/In.php new file mode 100644 index 0000000..9565a60 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Binary/Less.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Less.php new file mode 100644 index 0000000..45fd300 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Less.php @@ -0,0 +1,17 @@ +raw('<'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/LessEqual.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/LessEqual.php new file mode 100644 index 0000000..e38e257 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/LessEqual.php @@ -0,0 +1,17 @@ +raw('<='); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/Matches.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Matches.php new file mode 100644 index 0000000..93bb292 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Binary/Mod.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Mod.php new file mode 100644 index 0000000..9924114 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Mod.php @@ -0,0 +1,18 @@ +raw('%'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/Mul.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Mul.php new file mode 100644 index 0000000..c91529c --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Mul.php @@ -0,0 +1,18 @@ +raw('*'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/NotEqual.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/NotEqual.php new file mode 100644 index 0000000..26867ba --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/NotEqual.php @@ -0,0 +1,17 @@ +raw('!='); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/NotIn.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/NotIn.php new file mode 100644 index 0000000..49ab39e --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Binary/Or.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Or.php new file mode 100644 index 0000000..adba49c --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Or.php @@ -0,0 +1,18 @@ +raw('||'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/Power.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Power.php new file mode 100644 index 0000000..cd6d046 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Power.php @@ -0,0 +1,28 @@ +raw('pow(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + public function operator(Twig_Compiler $compiler) + { + return $compiler->raw('**'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Binary/Range.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Range.php new file mode 100644 index 0000000..692ec9c --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Binary/StartsWith.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/StartsWith.php new file mode 100644 index 0000000..d2e30d6 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Binary/Sub.php b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Sub.php new file mode 100644 index 0000000..d446399 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Binary/Sub.php @@ -0,0 +1,18 @@ +raw('-'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/BlockReference.php b/site/www/_rem/lib_/Twig/Node/Expression/BlockReference.php new file mode 100644 index 0000000..cd052f6 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/BlockReference.php @@ -0,0 +1,46 @@ + + */ +class Twig_Node_Expression_BlockReference extends Twig_Node_Expression +{ + public function __construct(Twig_Node $name, $asString = false, $lineno, $tag = null) + { + parent::__construct(array('name' => $name), array('as_string' => $asString, 'output' => false), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + if ($this->getAttribute('as_string')) { + $compiler->raw('(string) '); + } + + if ($this->getAttribute('output')) { + $compiler + ->addDebugInfo($this) + ->write('$this->displayBlock(') + ->subcompile($this->getNode('name')) + ->raw(", \$context, \$blocks);\n") + ; + } else { + $compiler + ->raw('$this->renderBlock(') + ->subcompile($this->getNode('name')) + ->raw(', $context, $blocks)') + ; + } + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Call.php b/site/www/_rem/lib_/Twig/Node/Expression/Call.php new file mode 100644 index 0000000..374f412 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Call.php @@ -0,0 +1,284 @@ +getAttribute('callable'); + + $closingParenthesis = false; + 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 { + $closingParenthesis = true; + $compiler->raw(sprintf('call_user_func_array($this->env->get%s(\'%s\')->getCallable(), array', ucfirst($this->getAttribute('type')), $this->getAttribute('name'))); + } + } + + $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->getAttribute('callable'); + $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 = null, $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 (!empty($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/site/www/_rem/lib_/Twig/Node/Expression/Conditional.php b/site/www/_rem/lib_/Twig/Node/Expression/Conditional.php new file mode 100644 index 0000000..edcb1e2 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Constant.php b/site/www/_rem/lib_/Twig/Node/Expression/Constant.php new file mode 100644 index 0000000..a91dc69 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Filter.php b/site/www/_rem/lib_/Twig/Node/Expression/Filter.php new file mode 100644 index 0000000..b1008d8 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Filter.php @@ -0,0 +1,34 @@ + $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('needs_environment', $filter->needsEnvironment()); + $this->setAttribute('needs_context', $filter->needsContext()); + $this->setAttribute('arguments', $filter->getArguments()); + $this->setAttribute('callable', $filter->getCallable()); + $this->setAttribute('is_variadic', $filter->isVariadic()); + + $this->compileCallable($compiler); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Filter/Default.php b/site/www/_rem/lib_/Twig/Node/Expression/Filter/Default.php new file mode 100644 index 0000000..64e3485 --- /dev/null +++ b/site/www/_rem/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_Node $node, Twig_Node_Expression_Constant $filterName, Twig_Node $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/site/www/_rem/lib_/Twig/Node/Expression/Function.php b/site/www/_rem/lib_/Twig/Node/Expression/Function.php new file mode 100644 index 0000000..e19dc5f --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Function.php @@ -0,0 +1,33 @@ + $arguments), array('name' => $name), $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('needs_environment', $function->needsEnvironment()); + $this->setAttribute('needs_context', $function->needsContext()); + $this->setAttribute('arguments', $function->getArguments()); + $this->setAttribute('callable', $function->getCallable()); + $this->setAttribute('is_variadic', $function->isVariadic()); + + $this->compileCallable($compiler); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/GetAttr.php b/site/www/_rem/lib_/Twig/Node/Expression/GetAttr.php new file mode 100644 index 0000000..9a8d381 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/GetAttr.php @@ -0,0 +1,68 @@ + $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 (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/site/www/_rem/lib_/Twig/Node/Expression/MethodCall.php b/site/www/_rem/lib_/Twig/Node/Expression/MethodCall.php new file mode 100644 index 0000000..620b02b --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Name.php b/site/www/_rem/lib_/Twig/Node/Expression/Name.php new file mode 100644 index 0000000..89367b4 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Name.php @@ -0,0 +1,84 @@ + '$this->getTemplateName()', + '_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 ($this->getAttribute('ignore_strict_check') || !$compiler->getEnvironment()->isStrictVariables()) { + $compiler + ->raw('(isset($context[') + ->string($name) + ->raw(']) ? $context[') + ->string($name) + ->raw('] : null)') + ; + } else { + // When Twig will require PHP 7.0, the Template::notFound() method + // will be removed and the code inlined like this: + // (function () { throw new Exception(...); })(); + $compiler + ->raw('(isset($context[') + ->string($name) + ->raw(']) || array_key_exists(') + ->string($name) + ->raw(', $context) ? $context[') + ->string($name) + ->raw('] : $this->notFound(') + ->string($name) + ->raw(', ') + ->repr($this->lineno) + ->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/site/www/_rem/lib_/Twig/Node/Expression/NullCoalesce.php b/site/www/_rem/lib_/Twig/Node/Expression/NullCoalesce.php new file mode 100644 index 0000000..27e29a5 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/NullCoalesce.php @@ -0,0 +1,23 @@ +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); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Parent.php b/site/www/_rem/lib_/Twig/Node/Expression/Parent.php new file mode 100644 index 0000000..694c080 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/TempName.php b/site/www/_rem/lib_/Twig/Node/Expression/TempName.php new file mode 100644 index 0000000..e6b058e --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Test.php b/site/www/_rem/lib_/Twig/Node/Expression/Test.php new file mode 100644 index 0000000..0b1ef16 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Test.php @@ -0,0 +1,35 @@ + $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('callable', $test->getCallable()); + $this->setAttribute('is_variadic', $test->isVariadic()); + + $this->compileCallable($compiler); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Test/Constant.php b/site/www/_rem/lib_/Twig/Node/Expression/Test/Constant.php new file mode 100644 index 0000000..de55f5f --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Test/Defined.php b/site/www/_rem/lib_/Twig/Node/Expression/Test/Defined.php new file mode 100644 index 0000000..5e0d53a --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Test/Defined.php @@ -0,0 +1,56 @@ + + * {# 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_Node $node, $name, Twig_Node $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_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); + } + + private 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/site/www/_rem/lib_/Twig/Node/Expression/Test/Divisibleby.php b/site/www/_rem/lib_/Twig/Node/Expression/Test/Divisibleby.php new file mode 100644 index 0000000..d5bed23 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Test/Even.php b/site/www/_rem/lib_/Twig/Node/Expression/Test/Even.php new file mode 100644 index 0000000..d7853e8 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Test/Null.php b/site/www/_rem/lib_/Twig/Node/Expression/Test/Null.php new file mode 100644 index 0000000..1c83825 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Test/Odd.php b/site/www/_rem/lib_/Twig/Node/Expression/Test/Odd.php new file mode 100644 index 0000000..421c19e --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Test/Sameas.php b/site/www/_rem/lib_/Twig/Node/Expression/Test/Sameas.php new file mode 100644 index 0000000..b48905e --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Unary.php b/site/www/_rem/lib_/Twig/Node/Expression/Unary.php new file mode 100644 index 0000000..ee3af70 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Expression/Unary/Neg.php b/site/www/_rem/lib_/Twig/Node/Expression/Unary/Neg.php new file mode 100644 index 0000000..2a3937e --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Unary/Neg.php @@ -0,0 +1,18 @@ +raw('-'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Unary/Not.php b/site/www/_rem/lib_/Twig/Node/Expression/Unary/Not.php new file mode 100644 index 0000000..f94073c --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Unary/Not.php @@ -0,0 +1,18 @@ +raw('!'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Expression/Unary/Pos.php b/site/www/_rem/lib_/Twig/Node/Expression/Unary/Pos.php new file mode 100644 index 0000000..04edb52 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Expression/Unary/Pos.php @@ -0,0 +1,18 @@ +raw('+'); + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Flush.php b/site/www/_rem/lib_/Twig/Node/Flush.php new file mode 100644 index 0000000..2af17a4 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/For.php b/site/www/_rem/lib_/Twig/Node/For.php new file mode 100644 index 0000000..47a20a0 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/For.php @@ -0,0 +1,111 @@ + + */ +class Twig_Node_For extends Twig_Node +{ + private $loop; + + public function __construct(Twig_Node_Expression_AssignName $keyTarget, Twig_Node_Expression_AssignName $valueTarget, Twig_Node_Expression $seq, Twig_Node_Expression $ifexpr = null, Twig_Node $body, Twig_Node $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/site/www/_rem/lib_/Twig/Node/ForLoop.php b/site/www/_rem/lib_/Twig/Node/ForLoop.php new file mode 100644 index 0000000..2554d48 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/If.php b/site/www/_rem/lib_/Twig/Node/If.php new file mode 100644 index 0000000..c4bdbd5 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/If.php @@ -0,0 +1,66 @@ + + */ +class Twig_Node_If extends Twig_Node +{ + public function __construct(Twig_Node $tests, Twig_Node $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/site/www/_rem/lib_/Twig/Node/Import.php b/site/www/_rem/lib_/Twig/Node/Import.php new file mode 100644 index 0000000..507fb66 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Include.php b/site/www/_rem/lib_/Twig/Node/Include.php new file mode 100644 index 0000000..714c991 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Macro.php b/site/www/_rem/lib_/Twig/Node/Macro.php new file mode 100644 index 0000000..8661ca8 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Macro.php @@ -0,0 +1,118 @@ + + */ +class Twig_Node_Macro extends Twig_Node +{ + const VARARGS_NAME = 'varargs'; + + public function __construct($name, Twig_Node $body, Twig_Node $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 macro_%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 + ->addIndentation() + ->string($name) + ->raw(' => $__'.$name.'__') + ->raw(",\n") + ; + } + + $compiler + ->addIndentation() + ->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')) + ->raw("\n") + ->write("return ('' === \$tmp = ob_get_contents()) ? '' : new Twig_Markup(\$tmp, \$this->env->getCharset());\n") + ->outdent() + ->write("} finally {\n") + ->indent() + ->write("ob_end_clean();\n") + ->outdent() + ->write("}\n") + ->outdent() + ->write("}\n\n") + ; + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Module.php b/site/www/_rem/lib_/Twig/Node/Module.php new file mode 100644 index 0000000..7134bc3 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Module.php @@ -0,0 +1,444 @@ + + */ +class Twig_Node_Module extends Twig_Node +{ + private $source; + + public function __construct(Twig_Node $body, Twig_Node_Expression $parent = null, Twig_Node $blocks, Twig_Node $macros, Twig_Node $traits, $embeddedTemplates, Twig_Source $source) + { + $this->source = $source; + + $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( + '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->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) { + $node = $trait->getNode('template'); + + $compiler + ->write(sprintf('$_trait_%s = $this->loadTemplate(', $i)) + ->subcompile($node) + ->raw(', ') + ->repr($node->getTemplateName()) + ->raw(', ') + ->repr($node->getTemplateLine()) + ->raw(");\n") + ; + + $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 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/site/www/_rem/lib_/Twig/Node/Print.php b/site/www/_rem/lib_/Twig/Node/Print.php new file mode 100644 index 0000000..7b69ee8 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Node/Sandbox.php b/site/www/_rem/lib_/Twig/Node/Sandbox.php new file mode 100644 index 0000000..ee14881 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Sandbox.php @@ -0,0 +1,42 @@ + + */ +class Twig_Node_Sandbox extends Twig_Node +{ + public function __construct(Twig_Node $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/site/www/_rem/lib_/Twig/Node/SandboxedPrint.php b/site/www/_rem/lib_/Twig/Node/SandboxedPrint.php new file mode 100644 index 0000000..e6bc21e --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/SandboxedPrint.php @@ -0,0 +1,51 @@ + + */ +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). + * + * @param Twig_Node $node A Node + * + * @return Twig_Node + */ + private function removeNodeFilter($node) + { + if ($node instanceof Twig_Node_Expression_Filter) { + return $this->removeNodeFilter($node->getNode('node')); + } + + return $node; + } +} diff --git a/site/www/_rem/lib_/Twig/Node/Set.php b/site/www/_rem/lib_/Twig/Node/Set.php new file mode 100644 index 0000000..32fb357 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Set.php @@ -0,0 +1,96 @@ + + */ +class Twig_Node_Set extends Twig_Node +{ + public function __construct($capture, Twig_Node $names, Twig_Node $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/site/www/_rem/lib_/Twig/Node/Spaceless.php b/site/www/_rem/lib_/Twig/Node/Spaceless.php new file mode 100644 index 0000000..52a0760 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Node/Spaceless.php @@ -0,0 +1,35 @@ + + */ +class Twig_Node_Spaceless extends Twig_Node +{ + public function __construct(Twig_Node $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/site/www/_rem/lib_/Twig/Node/Text.php b/site/www/_rem/lib_/Twig/Node/Text.php new file mode 100644 index 0000000..39879bb --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/NodeOutputInterface.php b/site/www/_rem/lib_/Twig/NodeOutputInterface.php new file mode 100644 index 0000000..22172c0 --- /dev/null +++ b/site/www/_rem/lib_/Twig/NodeOutputInterface.php @@ -0,0 +1,19 @@ + + */ +interface Twig_NodeOutputInterface +{ +} diff --git a/site/www/_rem/lib_/Twig/NodeTraverser.php b/site/www/_rem/lib_/Twig/NodeTraverser.php new file mode 100644 index 0000000..f00fa2d --- /dev/null +++ b/site/www/_rem/lib_/Twig/NodeTraverser.php @@ -0,0 +1,85 @@ + + */ +class Twig_NodeTraverser +{ + private $env; + private $visitors = array(); + + /** + * Constructor. + * + * @param Twig_Environment $env A Twig_Environment instance + * @param Twig_NodeVisitorInterface[] $visitors An array of Twig_NodeVisitorInterface instances + */ + public function __construct(Twig_Environment $env, array $visitors = array()) + { + $this->env = $env; + foreach ($visitors as $visitor) { + $this->addVisitor($visitor); + } + } + + /** + * Adds a visitor. + * + * @param Twig_NodeVisitorInterface $visitor A Twig_NodeVisitorInterface instance + */ + 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. + * + * @param Twig_Node $node A Twig_Node instance + * + * @return Twig_Node + */ + public function traverse(Twig_Node $node) + { + ksort($this->visitors); + foreach ($this->visitors as $visitors) { + foreach ($visitors as $visitor) { + $node = $this->traverseForVisitor($visitor, $node); + } + } + + return $node; + } + + private function traverseForVisitor(Twig_NodeVisitorInterface $visitor, Twig_Node $node) + { + $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/site/www/_rem/lib_/Twig/NodeVisitor/Escaper.php b/site/www/_rem/lib_/Twig/NodeVisitor/Escaper.php new file mode 100644 index 0000000..63e2a49 --- /dev/null +++ b/site/www/_rem/lib_/Twig/NodeVisitor/Escaper.php @@ -0,0 +1,159 @@ + + */ +class Twig_NodeVisitor_Escaper extends Twig_BaseNodeVisitor +{ + private $statusStack = array(); + private $blocks = array(); + private $safeAnalysis; + private $traverser; + private $defaultStrategy = false; + private $safeVars = array(); + + public function __construct() + { + $this->safeAnalysis = new Twig_NodeVisitor_SafeAnalysis(); + } + + /** + * {@inheritdoc} + */ + 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; + } + + /** + * {@inheritdoc} + */ + 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; + } + + private 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() + ); + } + + private 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; + } + + private function isSafeFor($type, Twig_Node $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); + } + + private function needEscaping(Twig_Environment $env) + { + if (count($this->statusStack)) { + return $this->statusStack[count($this->statusStack) - 1]; + } + + return $this->defaultStrategy ? $this->defaultStrategy : false; + } + + private function getEscaperFilter($type, Twig_Node $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); + } + + /** + * {@inheritdoc} + */ + public function getPriority() + { + return 0; + } +} diff --git a/site/www/_rem/lib_/Twig/NodeVisitor/Optimizer.php b/site/www/_rem/lib_/Twig/NodeVisitor/Optimizer.php new file mode 100644 index 0000000..feda777 --- /dev/null +++ b/site/www/_rem/lib_/Twig/NodeVisitor/Optimizer.php @@ -0,0 +1,227 @@ + + */ +class Twig_NodeVisitor_Optimizer extends Twig_BaseNodeVisitor +{ + const OPTIMIZE_ALL = -1; + const OPTIMIZE_NONE = 0; + const OPTIMIZE_FOR = 2; + const OPTIMIZE_RAW_FILTER = 4; + // obsolete, does not do anything + const OPTIMIZE_VAR_ACCESS = 8; + + private $loops = array(); + private $loopsTargets = array(); + private $optimizers; + + /** + * Constructor. + * + * @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; + } + + /** + * {@inheritdoc} + */ + protected function doEnterNode(Twig_Node $node, Twig_Environment $env) + { + if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) { + $this->enterOptimizeFor($node, $env); + } + + return $node; + } + + /** + * {@inheritdoc} + */ + protected function doLeaveNode(Twig_Node $node, Twig_Environment $env) + { + 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); + + return $node; + } + + /** + * Optimizes print nodes. + * + * It replaces: + * + * * "echo $this->render(Parent)Block()" with "$this->display(Parent)Block()" + * + * @param Twig_Node $node A Node + * @param Twig_Environment $env The current Twig environment + * + * @return Twig_Node + */ + private function optimizePrintNode(Twig_Node $node, Twig_Environment $env) + { + if (!$node instanceof Twig_Node_Print) { + return $node; + } + + if ( + $node->getNode('expr') instanceof Twig_Node_Expression_BlockReference || + $node->getNode('expr') instanceof Twig_Node_Expression_Parent + ) { + $node->getNode('expr')->setAttribute('output', true); + + return $node->getNode('expr'); + } + + return $node; + } + + /** + * Removes "raw" filters. + * + * @param Twig_Node $node A Node + * @param Twig_Environment $env The current Twig environment + * + * @return Twig_Node + */ + private function optimizeRawFilter(Twig_Node $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. + * + * @param Twig_Node $node A Node + * @param Twig_Environment $env The current Twig environment + */ + private function enterOptimizeFor(Twig_Node $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. + * + * @param Twig_Node $node A Node + * @param Twig_Environment $env The current Twig environment + */ + private function leaveOptimizeFor(Twig_Node $node, Twig_Environment $env) + { + if ($node instanceof Twig_Node_For) { + array_shift($this->loops); + array_shift($this->loopsTargets); + array_shift($this->loopsTargets); + } + } + + private function addLoopToCurrent() + { + $this->loops[0]->setAttribute('with_loop', true); + } + + private function addLoopToAll() + { + foreach ($this->loops as $loop) { + $loop->setAttribute('with_loop', true); + } + } + + /** + * {@inheritdoc} + */ + public function getPriority() + { + return 255; + } +} diff --git a/site/www/_rem/lib_/Twig/NodeVisitor/SafeAnalysis.php b/site/www/_rem/lib_/Twig/NodeVisitor/SafeAnalysis.php new file mode 100644 index 0000000..ce04d9a --- /dev/null +++ b/site/www/_rem/lib_/Twig/NodeVisitor/SafeAnalysis.php @@ -0,0 +1,153 @@ +safeVars = $safeVars; + } + + public function getSafe(Twig_Node $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']; + } + } + + private function setSafe(Twig_Node $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, + ); + } + + /** + * {@inheritdoc} + */ + protected function doEnterNode(Twig_Node $node, Twig_Environment $env) + { + return $node; + } + + /** + * {@inheritdoc} + */ + 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'); + if (in_array($name, $this->safeVars)) { + $this->setSafe($node, array('all')); + } else { + $this->setSafe($node, array()); + } + } else { + $this->setSafe($node, array()); + } + + return $node; + } + + private 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); + } + + /** + * {@inheritdoc} + */ + public function getPriority() + { + return 0; + } +} diff --git a/site/www/_rem/lib_/Twig/NodeVisitor/Sandbox.php b/site/www/_rem/lib_/Twig/NodeVisitor/Sandbox.php new file mode 100644 index 0000000..85ad6b2 --- /dev/null +++ b/site/www/_rem/lib_/Twig/NodeVisitor/Sandbox.php @@ -0,0 +1,82 @@ + + */ +class Twig_NodeVisitor_Sandbox extends Twig_BaseNodeVisitor +{ + private $inAModule = false; + private $tags; + private $filters; + private $functions; + + /** + * {@inheritdoc} + */ + 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; + } + + /** + * {@inheritdoc} + */ + 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; + } + + /** + * {@inheritdoc} + */ + public function getPriority() + { + return 0; + } +} diff --git a/site/www/_rem/lib_/Twig/NodeVisitorInterface.php b/site/www/_rem/lib_/Twig/NodeVisitorInterface.php new file mode 100644 index 0000000..6e11072 --- /dev/null +++ b/site/www/_rem/lib_/Twig/NodeVisitorInterface.php @@ -0,0 +1,47 @@ + + */ +interface Twig_NodeVisitorInterface +{ + /** + * Called before child nodes are visited. + * + * @param Twig_Node $node The node to visit + * @param Twig_Environment $env The Twig environment instance + * + * @return Twig_Node The modified node + */ + public function enterNode(Twig_Node $node, Twig_Environment $env); + + /** + * Called after child nodes are visited. + * + * @param Twig_Node $node The node to visit + * @param Twig_Environment $env The Twig environment instance + * + * @return Twig_Node|false The modified node or false if the node must be removed + */ + public function leaveNode(Twig_Node $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/site/www/_rem/lib_/Twig/Parser.php b/site/www/_rem/lib_/Twig/Parser.php new file mode 100644 index 0000000..64c51a6 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Parser.php @@ -0,0 +1,381 @@ + + */ +class Twig_Parser +{ + private $stack = array(); + private $stream; + private $parent; + private $handlers; + private $visitors; + private $expressionParser; + private $blocks; + private $blockStack; + private $macros; + private $env; + private $importedSymbols; + private $traits; + private $embeddedTemplates = array(); + + /** + * Constructor. + * + * @param Twig_Environment $env A Twig_Environment instance + */ + public function __construct(Twig_Environment $env) + { + $this->env = $env; + } + + public function getEnvironment() + { + return $this->env; + } + + public function getVarName() + { + return sprintf('__internal_%s', hash('sha256', uniqid(mt_rand(), true), false)); + } + + /** + * {@inheritdoc} + */ + 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 + $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 = array(); + foreach ($this->env->getTokenParsers() as $handler) { + $handler->setParser($this); + + $this->handlers[$handler->getTag()] = $handler; + } + } + + // node visitors + if (null === $this->visitors) { + $this->visitors = $this->env->getNodeVisitors(); + } + + if (null === $this->expressionParser) { + $this->expressionParser = new Twig_ExpressionParser($this, $this->env->getUnaryOperators(), $this->env->getBinaryOperators()); + } + + $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->getTemplateName()) { + $e->setTemplateName($this->stream->getSourceContext()->getName()); + } + + 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()->getName()); + } + + if (null !== $test && $test($token)) { + if ($dropNeedle) { + $this->stream->next(); + } + + if (1 === count($rv)) { + return $rv[0]; + } + + return new Twig_Node($rv, array(), $lineno); + } + + if (!isset($this->handlers[$token->getValue()])) { + if (null !== $test) { + $e = new Twig_Error_Syntax(sprintf('Unexpected "%s" tag', $token->getValue()), $token->getLine(), $this->stream->getSourceContext()->getName()); + + 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()->getName()); + $e->addSuggestions($token->getValue(), array_keys($this->env->getTags())); + } + + throw $e; + } + + $this->stream->next(); + + $subparser = $this->handlers[$token->getValue()]; + $node = $subparser->parse($token); + if (null !== $node) { + $rv[] = $node; + } + break; + + default: + throw new Twig_Error_Syntax('Lexer or parser ended up in unsupported state.', 0, $this->stream->getSourceContext()->getName()); + } + } + + if (1 === count($rv)) { + return $rv[0]; + } + + return new Twig_Node($rv, array(), $lineno); + } + + public function addHandler($name, $class) + { + $this->handlers[$name] = $class; + } + + public function addNodeVisitor(Twig_NodeVisitorInterface $visitor) + { + $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) + { + $this->macros[$name] = $node; + } + + public function isReservedMacroName($name) + { + return false; + } + + 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); + } + + /** + * Gets the expression parser. + * + * @return Twig_ExpressionParser The expression parser + */ + public function getExpressionParser() + { + return $this->expressionParser; + } + + public function getParent() + { + return $this->parent; + } + + public function setParent($parent) + { + $this->parent = $parent; + } + + /** + * Gets the token stream. + * + * @return Twig_TokenStream The token stream + */ + public function getStream() + { + return $this->stream; + } + + /** + * Gets the current token. + * + * @return Twig_Token The current token + */ + public function getCurrentToken() + { + return $this->stream->getCurrent(); + } + + private function filterBodyNodes(Twig_Node $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()->getName()); + } + + 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()->getName()); + } + + // bypass "set" nodes as they "capture" the output + if ($node instanceof Twig_Node_Set) { + 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/site/www/_rem/lib_/Twig/Profiler/Dumper/Blackfire.php b/site/www/_rem/lib_/Twig/Profiler/Dumper/Blackfire.php new file mode 100644 index 0000000..b82747a --- /dev/null +++ b/site/www/_rem/lib_/Twig/Profiler/Dumper/Blackfire.php @@ -0,0 +1,68 @@ + + */ +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/site/www/_rem/lib_/Twig/Profiler/Dumper/Html.php b/site/www/_rem/lib_/Twig/Profiler/Dumper/Html.php new file mode 100644 index 0000000..f066da7 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Profiler/Dumper/Html.php @@ -0,0 +1,43 @@ + + */ +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/site/www/_rem/lib_/Twig/Profiler/Dumper/Text.php b/site/www/_rem/lib_/Twig/Profiler/Dumper/Text.php new file mode 100644 index 0000000..998e210 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Profiler/Dumper/Text.php @@ -0,0 +1,68 @@ + + */ +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/site/www/_rem/lib_/Twig/Profiler/Node/EnterProfile.php b/site/www/_rem/lib_/Twig/Profiler/Node/EnterProfile.php new file mode 100644 index 0000000..2f97214 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Profiler/Node/EnterProfile.php @@ -0,0 +1,40 @@ + + */ +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)); + } + + /** + * {@inheritdoc} + */ + 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/site/www/_rem/lib_/Twig/Profiler/Node/LeaveProfile.php b/site/www/_rem/lib_/Twig/Profiler/Node/LeaveProfile.php new file mode 100644 index 0000000..88074c2 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Profiler/Node/LeaveProfile.php @@ -0,0 +1,34 @@ + + */ +class Twig_Profiler_Node_LeaveProfile extends Twig_Node +{ + public function __construct($varName) + { + parent::__construct(array(), array('var_name' => $varName)); + } + + /** + * {@inheritdoc} + */ + 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/site/www/_rem/lib_/Twig/Profiler/NodeVisitor/Profiler.php b/site/www/_rem/lib_/Twig/Profiler/NodeVisitor/Profiler.php new file mode 100644 index 0000000..7e837f6 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Profiler/NodeVisitor/Profiler.php @@ -0,0 +1,72 @@ + + */ +class Twig_Profiler_NodeVisitor_Profiler extends Twig_BaseNodeVisitor +{ + private $extensionName; + + public function __construct($extensionName) + { + $this->extensionName = $extensionName; + } + + /** + * {@inheritdoc} + */ + protected function doEnterNode(Twig_Node $node, Twig_Environment $env) + { + return $node; + } + + /** + * {@inheritdoc} + */ + 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->getTemplateName(), $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->getTemplateName(), $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)); + } + + /** + * {@inheritdoc} + */ + public function getPriority() + { + return 0; + } +} diff --git a/site/www/_rem/lib_/Twig/Profiler/Profile.php b/site/www/_rem/lib_/Twig/Profiler/Profile.php new file mode 100644 index 0000000..104bc05 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Profiler/Profile.php @@ -0,0 +1,160 @@ + + */ +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/site/www/_rem/lib_/Twig/RuntimeLoaderInterface.php b/site/www/_rem/lib_/Twig/RuntimeLoaderInterface.php new file mode 100644 index 0000000..c41f44a --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Sandbox/SecurityError.php b/site/www/_rem/lib_/Twig/Sandbox/SecurityError.php new file mode 100644 index 0000000..015bfae --- /dev/null +++ b/site/www/_rem/lib_/Twig/Sandbox/SecurityError.php @@ -0,0 +1,19 @@ + + */ +class Twig_Sandbox_SecurityError extends Twig_Error +{ +} diff --git a/site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedFilterError.php b/site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedFilterError.php new file mode 100644 index 0000000..99faba9 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedFunctionError.php b/site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedFunctionError.php new file mode 100644 index 0000000..05cf488 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedMethodError.php b/site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedMethodError.php new file mode 100644 index 0000000..5b352d9 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedPropertyError.php b/site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedPropertyError.php new file mode 100644 index 0000000..8b4cbc3 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedTagError.php b/site/www/_rem/lib_/Twig/Sandbox/SecurityNotAllowedTagError.php new file mode 100644 index 0000000..b3bb5e8 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/Sandbox/SecurityPolicy.php b/site/www/_rem/lib_/Twig/Sandbox/SecurityPolicy.php new file mode 100644 index 0000000..07dcd70 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Sandbox/SecurityPolicy.php @@ -0,0 +1,121 @@ + + */ +class Twig_Sandbox_SecurityPolicy implements Twig_Sandbox_SecurityPolicyInterface +{ + private $allowedTags; + private $allowedFilters; + private $allowedMethods; + private $allowedProperties; + private $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_Template || $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/site/www/_rem/lib_/Twig/Sandbox/SecurityPolicyInterface.php b/site/www/_rem/lib_/Twig/Sandbox/SecurityPolicyInterface.php new file mode 100644 index 0000000..6ab48e3 --- /dev/null +++ b/site/www/_rem/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/site/www/_rem/lib_/Twig/SimpleFilter.php b/site/www/_rem/lib_/Twig/SimpleFilter.php new file mode 100644 index 0000000..30bdd6a --- /dev/null +++ b/site/www/_rem/lib_/Twig/SimpleFilter.php @@ -0,0 +1,17 @@ + + */ +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/site/www/_rem/lib_/Twig/SourceContextLoaderInterface.php b/site/www/_rem/lib_/Twig/SourceContextLoaderInterface.php new file mode 100644 index 0000000..b365bbf --- /dev/null +++ b/site/www/_rem/lib_/Twig/SourceContextLoaderInterface.php @@ -0,0 +1,17 @@ + + */ +abstract class Twig_Template +{ + const ANY_CALL = 'any'; + const ARRAY_CALL = 'array'; + const METHOD_CALL = 'method'; + + protected static $cache = array(); + + protected $parent; + protected $parents = array(); + protected $env; + protected $blocks = array(); + protected $traits = array(); + + /** + * Constructor. + * + * @param Twig_Environment $env A Twig_Environment instance + */ + public function __construct(Twig_Environment $env) + { + $this->env = $env; + } + + /** + * Returns the template name. + * + * @return string The template name + */ + abstract public function getTemplateName(); + + /** + * Returns debug information about the template. + * + * @return array Debug information + * + * @internal + */ + abstract public function getDebugInfo(); + + /** + * Returns information about the original template source code. + * + * @return Twig_Source + */ + public function getSourceContext() + { + return new Twig_Source('', $this->getTemplateName()); + } + + /** + * Returns the parent template. + * + * This method is for internal use only and should never be called + * directly. + * + * @param array $context + * + * @return Twig_Template|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->setTemplateName(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()) + { + 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->getTemplateName()); + } + } + + /** + * 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) + { + 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; + } + + if (null !== $template) { + // avoid RCEs when sandbox is enabled + if (!$template instanceof self) { + throw new LogicException('A block must be a method on a Twig_Template instance.'); + } + + try { + $template->$block($context, $blocks); + } catch (Twig_Error $e) { + if (!$e->getTemplateName()) { + $e->setTemplateName($template->getTemplateName()); + } + + // 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->getTemplateName(), $e); + } + } elseif (false !== $parent = $this->getParent($context)) { + $parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false); + } + } + + /** + * 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. + * + * This method is for internal use only and should never be called + * directly. + * + * This method does only return blocks defined in the current template + * or defined in "used" traits. + * + * It does not return blocks from parent templates as the parent + * template name can be dynamic, which is only known based on the + * current context. + * + * @param string $name The block name + * + * @return bool true if the block exists, false otherwise + * + * @internal + */ + public function hasBlock($name) + { + return isset($this->blocks[$name]); + } + + /** + * Returns all block names. + * + * This method is for internal use only and should never be called + * directly. + * + * @return array An array of block names + * + * @see hasBlock + * + * @internal + */ + public function getBlockNames() + { + return array_keys($this->blocks); + } + + 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; + } + + return $this->env->loadTemplate($template, $index); + } catch (Twig_Error $e) { + if (!$e->getTemplateName()) { + $e->setTemplateName($templateName ? $templateName : $this->getTemplateName()); + } + + 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 + * + * @see hasBlock + * + * @internal + */ + public function getBlocks() + { + return $this->blocks; + } + + /** + * {@inheritdoc} + */ + public function display(array $context, array $blocks = array()) + { + $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks)); + } + + /** + * {@inheritdoc} + */ + 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->getTemplateName()) { + $e->setTemplateName($this->getTemplateName()); + } + + // 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->getTemplateName(), $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()); + + /** + * Throws an exception for an unknown variable. + * + * This method is for internal use only and should never be called + * directly. + * + * This is an implementation detail due to a PHP limitation before version 7.0. + * + * @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 notFound($name, $line) + { + throw new Twig_Error_Runtime(sprintf('Variable "%s" does not exist.', $name), $line, $this->getTemplateName()); + } + + /** + * 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 + */ + 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) && 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->getTemplateName()); + } + } + + 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->getTemplateName()); + } + + // 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]['methods'])) { + // 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) { + $methods[strtolower($refMethod->name)] = 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']['has'.$lcItem])) { + $method = 'has'.$item; + } elseif (isset(self::$cache[$class]['methods']['__call'])) { + $method = (string) $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, get_class($object)), -1, $this->getTemplateName()); + } + + 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 { + $ret = call_user_func_array(array($object, $method), $arguments); + } catch (BadMethodCallException $e) { + if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) { + return; + } + throw $e; + } + + // useful when calling a template method from a template + // this is not supported but unfortunately heavily used in the Symfony profiler + if ($object instanceof self) { + return $ret === '' ? '' : new Twig_Markup($ret, $this->env->getCharset()); + } + + return $ret; + } +} diff --git a/site/www/_rem/lib_/Twig/TemplateIterator.php b/site/www/_rem/lib_/Twig/TemplateIterator.php new file mode 100644 index 0000000..5672963 --- /dev/null +++ b/site/www/_rem/lib_/Twig/TemplateIterator.php @@ -0,0 +1,45 @@ + + */ +class Twig_TemplateIterator implements IteratorAggregate +{ + private $loader; + + public function __construct(Twig_LoaderInterface $loader) + { + $this->loader = $loader; + + $templates = array(); + if ($loader instanceof Twig_Loader_Filesystem) { + foreach ($loader->getNamespaces() as $namespace) { + $paths = $loader->getPaths($namespace); + foreach ($paths as $path) { + foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator(realpath($path)), RecursiveIteratorIterator::LEAVES_ONLY) as $file) { + if (Twig_Loader_Filesystem::MAIN_NAMESPACE === $namespace) { + $templates[] = substr($file->getPathname(), strlen($path) + 1); + } else { + $templates[] = '@'.$namespace.'/'.$file->getPathname(); + } + } + } + } + } + + print_r($templates); + } + + public function getIterator() + { + } +} diff --git a/site/www/_rem/lib_/Twig/Test.php b/site/www/_rem/lib_/Twig/Test.php new file mode 100644 index 0000000..4131241 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Test.php @@ -0,0 +1,83 @@ + + * + * @see http://twig.sensiolabs.org/doc/templates.html#test-operator + */ +class Twig_Test +{ + private $name; + private $callable; + private $options; + + /** + * Creates a template test. + * + * @param string $name Name of this test + * @param callable|null $callable A callable implementing the test. If null, you need to overwrite the "node_class" option to customize compilation. + * @param array $options Options array + */ + public function __construct($name, $callable = null, 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; + } + + /** + * Returns the callable to execute for this test. + * + * @return callable|null + */ + 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/site/www/_rem/lib_/Twig/Test/IntegrationTestCase.php b/site/www/_rem/lib_/Twig/Test/IntegrationTestCase.php new file mode 100644 index 0000000..b995b95 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Test/IntegrationTestCase.php @@ -0,0 +1,229 @@ + + * @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 ($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 + $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; + } + + if ($e instanceof Twig_Error_Syntax) { + $e->setTemplateName($file); + + throw $e; + } + + 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; + } + + if ($e instanceof Twig_Error_Syntax) { + $e->setTemplateName($file); + } else { + $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"; + echo $twig->compile($twig->parse($twig->tokenize($twig->getSourceContext($name), $name))); + } + } + $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/site/www/_rem/lib_/Twig/Test/NodeTestCase.php b/site/www/_rem/lib_/Twig/Test/NodeTestCase.php new file mode 100644 index 0000000..2a13754 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Test/NodeTestCase.php @@ -0,0 +1,60 @@ +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" : ''; + + return sprintf('%s(isset($context["%s"]) ? $context["%s"] : null)', $line, $name, $name); + } + + protected function getAttributeGetter() + { + if (function_exists('twig_template_get_attributes')) { + return 'twig_template_get_attributes($this, '; + } + + return '$this->getAttribute('; + } +} diff --git a/site/www/_rem/lib_/Twig/Token.php b/site/www/_rem/lib_/Twig/Token.php new file mode 100644 index 0000000..2a2c2f3 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Token.php @@ -0,0 +1,216 @@ + + */ +class Twig_Token +{ + private $value; + private $type; + private $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; + + /** + * Constructor. + * + * @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; + } + + /** + * Returns a string representation of the token. + * + * @return string A string representation of the token + */ + 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 + ); + } + + /** + * Gets the line. + * + * @return int The source line + */ + public function getLine() + { + return $this->lineno; + } + + /** + * Gets the token type. + * + * @return int The token type + */ + public function getType() + { + return $this->type; + } + + /** + * Gets the token value. + * + * @return string The token value + */ + 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/site/www/_rem/lib_/Twig/TokenParser.php b/site/www/_rem/lib_/Twig/TokenParser.php new file mode 100644 index 0000000..fa9b6d8 --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser.php @@ -0,0 +1,33 @@ + + */ +abstract class Twig_TokenParser implements Twig_TokenParserInterface +{ + /** + * @var Twig_Parser + */ + protected $parser; + + /** + * Sets the parser associated with this token parser. + * + * @param Twig_Parser $parser A Twig_Parser instance + */ + public function setParser(Twig_Parser $parser) + { + $this->parser = $parser; + } +} diff --git a/site/www/_rem/lib_/Twig/TokenParser/AutoEscape.php b/site/www/_rem/lib_/Twig/TokenParser/AutoEscape.php new file mode 100644 index 0000000..d8e85cd --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/AutoEscape.php @@ -0,0 +1,48 @@ +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 false.', $stream->getCurrent()->getLine(), $stream->getSourceContext()->getName()); + } + $value = $expr->getAttribute('value'); + } + + $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/site/www/_rem/lib_/Twig/TokenParser/Block.php b/site/www/_rem/lib_/Twig/TokenParser/Block.php new file mode 100644 index 0000000..a2df928 --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/Block.php @@ -0,0 +1,69 @@ + + * {% block head %} + * + * {% block title %}{% endblock %} - My Webpage + * {% endblock %} + * + */ +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()->getName()); + } + $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()->getName()); + } + } + } 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/site/www/_rem/lib_/Twig/TokenParser/Do.php b/site/www/_rem/lib_/Twig/TokenParser/Do.php new file mode 100644 index 0000000..7adb5a0 --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/Do.php @@ -0,0 +1,30 @@ +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/site/www/_rem/lib_/Twig/TokenParser/Embed.php b/site/www/_rem/lib_/Twig/TokenParser/Embed.php new file mode 100644 index 0000000..ddc2602 --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/Embed.php @@ -0,0 +1,63 @@ +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/site/www/_rem/lib_/Twig/TokenParser/Extends.php b/site/www/_rem/lib_/Twig/TokenParser/Extends.php new file mode 100644 index 0000000..2918cf5 --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/Extends.php @@ -0,0 +1,42 @@ + + * {% extends "base.html" %} + * + */ +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()->getName()); + } + + if (null !== $this->parser->getParent()) { + throw new Twig_Error_Syntax('Multiple extends tags are forbidden.', $token->getLine(), $stream->getSourceContext()->getName()); + } + $this->parser->setParent($this->parser->getExpressionParser()->parseExpression()); + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + } + + public function getTag() + { + return 'extends'; + } +} diff --git a/site/www/_rem/lib_/Twig/TokenParser/Filter.php b/site/www/_rem/lib_/Twig/TokenParser/Filter.php new file mode 100644 index 0000000..b20dd5b --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/Filter.php @@ -0,0 +1,49 @@ + + * {% filter upper %} + * This text becomes uppercase + * {% endfilter %} + * + */ +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()), true, $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/site/www/_rem/lib_/Twig/TokenParser/Flush.php b/site/www/_rem/lib_/Twig/TokenParser/Flush.php new file mode 100644 index 0000000..f9ce7c3 --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/Flush.php @@ -0,0 +1,30 @@ +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/site/www/_rem/lib_/Twig/TokenParser/For.php b/site/www/_rem/lib_/Twig/TokenParser/For.php new file mode 100644 index 0000000..85148ad --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/For.php @@ -0,0 +1,123 @@ + + *
      + * {% for user in users %} + *
    • {{ user.username|e }}
    • + * {% endfor %} + *
    + * + */ +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 + private function checkLoopUsageCondition(Twig_TokenStream $stream, Twig_Node $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()->getName()); + } + + 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) + private function checkLoopUsageBody(Twig_TokenStream $stream, Twig_Node $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()->getName()); + } + } + + // 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/site/www/_rem/lib_/Twig/TokenParser/From.php b/site/www/_rem/lib_/Twig/TokenParser/From.php new file mode 100644 index 0000000..7dfa5b2 --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/From.php @@ -0,0 +1,58 @@ + + * {% from 'forms.html' import forms %} + * + */ +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) { + $this->parser->addImportedSymbol('function', $alias, 'macro_'.$name, $node->getNode('var')); + } + + return $node; + } + + public function getTag() + { + return 'from'; + } +} diff --git a/site/www/_rem/lib_/Twig/TokenParser/If.php b/site/www/_rem/lib_/Twig/TokenParser/If.php new file mode 100644 index 0000000..8d8328a --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/If.php @@ -0,0 +1,82 @@ + + * {% if users %} + *
      + * {% for user in users %} + *
    • {{ user.username|e }}
    • + * {% endfor %} + *
    + * {% endif %} + * + */ +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()->getName()); + } + } + + $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/site/www/_rem/lib_/Twig/TokenParser/Import.php b/site/www/_rem/lib_/Twig/TokenParser/Import.php new file mode 100644 index 0000000..85c5c03 --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/Import.php @@ -0,0 +1,37 @@ + + * {% import 'forms.html' as forms %} + * + */ +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/site/www/_rem/lib_/Twig/TokenParser/Include.php b/site/www/_rem/lib_/Twig/TokenParser/Include.php new file mode 100644 index 0000000..0e76dae --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/Include.php @@ -0,0 +1,63 @@ + + * {% include 'header.html' %} + * Body + * {% include 'footer.html' %} + * + */ +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/site/www/_rem/lib_/Twig/TokenParser/Macro.php b/site/www/_rem/lib_/Twig/TokenParser/Macro.php new file mode 100644 index 0000000..bc975ff --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/Macro.php @@ -0,0 +1,56 @@ + + * {% macro input(name, value, type, size) %} + * + * {% endmacro %} + * + */ +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()->getName()); + } + } + $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/site/www/_rem/lib_/Twig/TokenParser/Sandbox.php b/site/www/_rem/lib_/Twig/TokenParser/Sandbox.php new file mode 100644 index 0000000..4809d16 --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/Sandbox.php @@ -0,0 +1,57 @@ + + * {% sandbox %} + * {% include 'user.html' %} + * {% endsandbox %} + * + * + * @see http://www.twig-project.org/doc/api.html#sandbox-extension for details + */ +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()->getName()); + } + } + } + + 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/site/www/_rem/lib_/Twig/TokenParser/Set.php b/site/www/_rem/lib_/Twig/TokenParser/Set.php new file mode 100644 index 0000000..b6e966e --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/Set.php @@ -0,0 +1,71 @@ + + * {% 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 %} + * + */ +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()->getName()); + } + } 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()->getName()); + } + + $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/site/www/_rem/lib_/Twig/TokenParser/Spaceless.php b/site/www/_rem/lib_/Twig/TokenParser/Spaceless.php new file mode 100644 index 0000000..53d906d --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/Spaceless.php @@ -0,0 +1,47 @@ + + * {% spaceless %} + *
    + * foo + *
    + * {% endspaceless %} + * + * {# output will be
    foo
    #} + * + */ +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/site/www/_rem/lib_/Twig/TokenParser/Use.php b/site/www/_rem/lib_/Twig/TokenParser/Use.php new file mode 100644 index 0000000..3129e83 --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParser/Use.php @@ -0,0 +1,64 @@ + + * {% 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. + */ +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()->getName()); + } + + $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/site/www/_rem/lib_/Twig/TokenParserInterface.php b/site/www/_rem/lib_/Twig/TokenParserInterface.php new file mode 100644 index 0000000..2a47e4a --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenParserInterface.php @@ -0,0 +1,43 @@ + + */ +interface Twig_TokenParserInterface +{ + /** + * Sets the parser associated with this token parser. + * + * @param Twig_Parser $parser A Twig_Parser instance + */ + public function setParser(Twig_Parser $parser); + + /** + * Parses a token and returns a node. + * + * @param Twig_Token $token A Twig_Token instance + * + * @return Twig_Node A Twig_Node instance + * + * @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/site/www/_rem/lib_/Twig/TokenStream.php b/site/www/_rem/lib_/Twig/TokenStream.php new file mode 100644 index 0000000..f0e48dc --- /dev/null +++ b/site/www/_rem/lib_/Twig/TokenStream.php @@ -0,0 +1,157 @@ + + */ +class Twig_TokenStream +{ + private $tokens; + private $current = 0; + private $source; + + /** + * Constructor. + * + * @param array $tokens An array of tokens + * @param Twig_Source $source + */ + public function __construct(array $tokens, Twig_Source $source = null) + { + $this->tokens = $tokens; + $this->source = $source ?: new Twig_Source('', ''); + } + + /** + * Returns a string representation of the token stream. + * + * @return string + */ + 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->getName()); + } + + 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->getName() + ); + } + $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->getName()); + } + + 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; + } + + /** + * Gets the current token. + * + * @return Twig_Token + */ + public function getCurrent() + { + return $this->tokens[$this->current]; + } + + /** + * Gets the source associated with this stream. + * + * @return Twig_Source + * + * @internal + */ + public function getSourceContext() + { + return $this->source; + } +} diff --git a/site/www/_rem/lib_/Twig/Util/DeprecationCollector.php b/site/www/_rem/lib_/Twig/Util/DeprecationCollector.php new file mode 100644 index 0000000..97dee73 --- /dev/null +++ b/site/www/_rem/lib_/Twig/Util/DeprecationCollector.php @@ -0,0 +1,71 @@ + + */ +class Twig_Util_DeprecationCollector +{ + private $twig; + + 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 Iterator $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(Iterator $iterator) + { + $deprecations = array(); + set_error_handler(function ($type, $msg) use (&$deprecations) { + if (E_USER_DEPRECATED === $type) { + $deprecations[] = $msg; + } + }); + + foreach ($iterator as $name => $contents) { + try { + $this->twig->parse($this->twig->tokenize($contents, $name)); + } catch (Twig_Error_Syntax $e) { + // ignore templates containing syntax errors + } + } + + restore_error_handler(); + + return $deprecations; + } +} diff --git a/site/www/_rem/lib_/Twig/Util/TemplateDirIterator.php b/site/www/_rem/lib_/Twig/Util/TemplateDirIterator.php new file mode 100644 index 0000000..3fb8932 --- /dev/null +++ b/site/www/_rem/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/site/www/_tmp/fuckinghub-lesson2-1.zip b/site/www/_tmp/fuckinghub-lesson2-1.zip new file mode 100644 index 0000000000000000000000000000000000000000..9477caf5a6941e333b4ab5d5641f2b367c10f206 GIT binary patch literal 1186217 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

    f4?cq%T#(;C%#&va10Top*Re0$ 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

    #&CSKr`ub4YZtUe~MO6OnB2s&3Y&t7r zDi`p(7PL)XTHjEz_fv|ihJGCUwj?Ps+8Qdl3bg`L zZY5=I5pMHP*bCl>B=uY>FgoU)Hmj9q(&&Z|d=UkcjD4xbq*i$tW!DBRlkK*#sX|dB z$o2Ipk9hu%7^k^Ck_+~j5^YpV@@2O8$7Bvw%2lZ+$pds3ff>m{*n-q62J=m=)u}5x z^Lj&9q8r~29VKp0s0~Qyn|Q{nA4n{7GiMZ~l*p*Ysdp_uKLs;jjJ8zAulancqFF2V zg0vCmIXA&I#|W0jvzCzGv4Gws=~8=%v&Mtb7(+*#=X5xXKN6>lmdiQHgPUcNs)gaf z&uvK95j7+4Wo@3oQ$n)18ehJBWHY9Ad92oTsFcL|K@;4`6R_%sZGD^B%(LS{At&)F z8o!L(Ly$h_tA@4Qo>7&ZG`Nz)7UDPWw*Nvd>%)!PM0+DwP}#6z!EyB@riLSuA=nK& zO~)@$c864H7Z+>SM1DR zM3M`P!j{-o3Vt@)z9cYPRN3Nik!BTs_{#RQP=ro4^YYL3X{aODXQ`;Hc4%al*t^mg z8A1FTU)RbOzn%_+vD-c#FJX}YJ@ezkPvwSfA&_$7-a|_1ka~d)5EKJnr|}?lSB|sm zlt&fmaU3rYPk3SwArwp}b)*P4O7c2O@p`nhxK1abZOY^kNOwchsoCaSqh(dYmDRSL z$(BF3ZZU?uu9K%W+R_k2={M_HJQEH$b<&*EUxZ1%ZstPyEznwQx8^zL>gF4uwc$Ul z*{5$l)?gU9RzQJKd1DlJ`Z9c+PaF|}+hz_i!P^GE)Ygb_ZM;fGt?HXQRcY`Hw%W_G zFLJQ~Rh-}D8M(!{ zJxsn)%zn~$`=aLj`t2!#n{)p*B=jqReG1gK*->Ys6DPqmAe8?XGUkh`i*|P^L(Qvn zZ*153*iz61Un}Qa60O4)l*ECaJ{gy}2rf(ki(^+bDjKrcX-n#TbV^9dn%0JWTHo%I z8xD=!e_yiwwLDS_@sx7_$|E7tf9ww8|FORQDSkV51-T&8B z++Wok4kN&t$!&uP3^P_syk2u)x3iD}|Eb@(;hbfTN3zt6P(oS7RNt6aDLchs8JWV8 z#3)(m0CG;sxII--T;cF=(@wMNt?#F^lb1kSqZDAzqyhMXbYGTL!IPA&J-n4IGB%O3 z<^i?Pig^tBng=3e)3RSqjJUQ6P zUcx`D=!w0^gR=aDoovQyLN1TL!Sj3&9ePCQz`88+qhuFZ>4z4kvz`UJ4>%^qVftkE zzAkB0-I-!Z)pAAd-PEC8qS3_wbRP*Saz}|is#$DP(k+bV$|CYDsozy-aiJN{i8@5& z&tRY6Uw=qnqp?7e&{svuZ-eyH&Vx2G*)9or6#@9zm}X9*9Y(m54%LO-K;64&h|z}- z2V&W=KYFPM{t82e+@?~A4lHJ#x{R;GObc2>_*vKxVk?w$dZPic&?w?-V%D7Yxta0h zN!u7VnCLzkNKWE@z#u`Fb4*Io9jEeH5F$Tj5uve9B-B{?%`pa%G^Hze{o;k0RTO6XCKXylsk4AU)AWwN$!%dRXkKFa(y68Z0z{FQX z1J*S$=v4ZH%k_D8$k(Sy8m*?LinRH&8iKg}^I;q)pza@vtP}~ZsRjorK9+D7-Cbo? z;QLOCyOfw#e*mRbCmUuCek($6Ii=AB=}fK#@AgAWdRLMOJP&L;w-r62(+?5Oh>!i0 z;!wOybhRB2nO6adpj4XiiKI;DFG!0mCOpa>h~``I%f5u$Hiq^kyTzze+0OT~S`EVA zY~XAa#mZiI4YQ!Rb?b5_~52B{^I?RT3OKq+aI)C^{ zLEZhcJ9!Tf_(B5k3GFl<)}=Yj%#}J-hHQBAIG#PxSEg2`&6 z@jkko@#vBSFPwC9QACl*JA==&ZJoFN2&s&o{PrG?%L|j~fn5hp49kd!2?Y&m zu00ut8$3F)Daq!~@7ZOaNjkc!4ywL%pPP`rLwGyMdLzN)eFg4q5dzm*eA;7D5VF$0 ze=vlHwHK%i&4?6m)RVwSie(-qrr4;e<=~ZIA=?-#m4`tLwVEiVm8olR8Zko~EQR?{ z=4Br$z7g#I(ehhp`4Zilk+Uv#(<6nxM>Iopz*lQ}_|mgYbJ*Q$Z)_gRVlK9MVf+j3 z8ka*c4d<7Ys2U1rdD~KJLJpe$gKo zNyNG75bwf9Zl8e?=7_n(`I7v_DLP$t`Uri)o*ib!)ewIIIqCDvgAo_QoX*$x*<>y< zgWbzGVbK^l#Db79PXV9lTNzWP6jp8D*O5KR@GrnqR9aW!FoexFokghrh^U-b9ErD| z&;r@p;bO)I&fAHCb5eYoJ}jh(cpK3g9|XZ>?^;5+QNh0#rr$a^%?{etw4iPeD3sspy-LZVL#%Qq}8E-oa#5h0PHL{Bly$kqhE z-GS{7>3z$X@EyX$Pt8jp>X63n6O}WHWal6&93S?TJ?$CL)bEwDRjAZJ zVWNF(IFRXk%#z4^{iSZSr6cW#o9U zsUVt`ldVIb{4Pi8q4pP>#}%|=We|e)jfHNoojNT_OX0>v3m1(wKVFwF19v`%`5V1I5n*Yh3nfd5 z_sDr;g=kb*bhl;g-2v0Zh-#qCPfto_dVYBym>AcIVs7|*>Z}V4U0I$ID&-bs9njnA*ESTR47ZVQ-AwT_*bSCEkslP(%A6;c`Lbq z&dc%kTy!OcGeb-=VEBE^etacJfWS9o|D|u9f?{^0tGNEyk6$i#%Y;Erb1Ztvp%P8W z3D}5vX7Pg0Qbq&+yn%9+4|p+)Gvrg-@tGIMT2C>uz}yM9SaQ1x4F?f+C=nHtFBY!bFPX&rw3=UF<=d zvolI*T#FqeBnR2&Zq8n+mx7UzYJv`5zDzXO=7K3~+BA0b6Y>1Y%TaKBboA|36qYHL ze?#ELOCE&rQ-_4`!+!;C^NV?yp!dK`Z|B^VAl}&`3D)stpblW1f&`5~JP=ddWq7$D zzC=S;Gz?JpM+HWtQ-hrd=36A$T@RHnu=JG+96c`?qPg-oVb>+kEqfwRc}ET0&Y|1E?RxN|8R!m!qa4 zHa6$9(9+Pe7dH2dU&-8KZBQjPsqI$B+eF)t`Ih*n^5?S0cocUbt|4m?+bLrsw!F9a zG=M*%WQu8-hWy4eEON-)QieBe(-ywBY;-QCyKvV@zarMsL^^ZeGmN1_J>ZXEtyK=G zN)>ihQ}zeJdCH}6gfM2HkURu-v>F{As@|5sG)kXHSDIk5Uj34FMKAK*O4rq#MyPFf zEHJ+{T?1mjGgNn!f#jWqFa?9=y>BU0C#63<@)K^mc$oD?N!&#|o>mJe_&hohVlv$q zLC%h;=Ob0uA4`m$M<)8>)-p3opq6QtI$VnPmQBndlicwQzHKFKu%dlwbl36+r{&TK zP!k9hX%AJC8!sSP8D{-1Agc8DD}4`=@%g=E`Nf<^`S)yt$OZ_`#$0GNPZc@XNIaIM zPL~l1N|eqp{m-My-|0IJ(`O1Tnc7^N&zm|zK6p>xH|q3qwTp1-u;^Dwy2e9*GHICw`xQy9naQ5YR$V0Y=+w>GsPUe%z!(FSJ zhnj0M1aQUIQcRJA%CzZv1$VO}L6Y(J@kyd3^;!JT@EZ!lfeTa)j~ZyCSFk`f6! z&5r?NKz z*k+CGC|WG#y*iJ0%RL2CXPijS?RCffDiT*}T}94Q5T{c#Q;T zopGtL`B;+Dt&KiJb7Z|h&LQ2-q1;k1*HDmcX^3aun@zD+oi4qkff3aNc2W1u5Y*G+dOch0SBM|~Xdb~6 z_56BYDMUi+z5i>ZL;AjI;1D*gB%y!@xe_vGY`^BW5r!ysqBqM=w* zJ*rCk9nMS0D;XXSQ5<4}j|FKk%2XDY)8ta32Xj7$42UO>+$7Ux#KZ7qX59L(1=v;3M_7bE~qqV)m8_Bod z!I?=rVngotWyyUr<;AoTE%<;@@)y-w%(f376a?0KBzDD1B=Wq^8~q1~l0DyUW#(Ix zW9(%G(}00F%%?!UeXtP*;HRIO?FwUgmC1GL!+v86lu*=U>9fG>X^5!Wx!DJi7ktf~ z`wPW;`WG{6rkX;lrS?2dr6Q*CrZGNOL=39P{W@dmO0~3EtF?O)*d#+R&_2I*@}4vt zu|8=IghoDr+E67}@P`cIn&910yYlZ8s>&Pmp|jyTu>#mf=sH7L+122Xh?0J9P6j{6 zh(fGiXasvfcdelkZc+J;ohuc+r$a*Tj-nc^BUOkn*pE+yX$~gCR_V#8O7_{#}&c_Ekp<41X;WT7wFZG z*pzVMlXFfDGH2Bt&GBr3t)nw$8`KWkLd+hNmpQjz-U#$T z^2-#9NltjjauD?5+ckqc|HDSN2#zG+bpY6V05dNChTHxhA1xtk10yR_3&($j_-JJr zyT5GCRzno2TeA6Gwdh@`F5nNOrKZ1LIw4qltX@KAm9R!gd9x`tB8tm%tg46n-8*(~ zx4u|UxePFLZ(E}oy6`I$LWl?!)SSyv)wI4+ z@XvAPaOlPv!(`1Z=1}QxlyLE*Kc~5V<;MxjV>z~Zp*24=Uv5^}UHYwaQ*Q>yw1lv6 zAi@B^o`Poh(jlo7T$k{B|V#ls(oLmmNg)26~`(lh-$T5Rscd&agN{r$Aw0g3!9qf_9egY_= zj`1FOSX!W<4wh%x3rb9n43!$bBGCG5WXnEdQ1QUe7AN4SgP7tXC~z(eW=M!WyzQF6 zP%(qW(qY5sn;*^K<`wn5uu=K&Hps9qP(+SM$Gs7_Amvi9k2EusN&MNec77X7L)?JC zW?Rzy$<*Qe-X#TT+~0Amrm$8p9#GT_>4O4figOqQi!zLZ;f~cDJ0kdnh{{6oI-Zjd zjG4lh$!7hC7o{y$7vA6${MS1>m6KlB-&|{!gq(EUCOww=_<8dfo%kU+L^ z>Hd`bX5T{7AanCGxfN{usL+#OlXEa?$Oq+4X1@{M%BfM|b;!#Qs@Hbrfg3?Dv?ITM zx!ultKvQlrjlupY(D}%f=Q?dS?%a=~&8ke7c97=nNprn3n8}>RPr&18N8iNE>~(u| zB)dh^;n12hQ!oK7WJ6<6%2&zqGXP%b1y|SiK~AjzJ=F^eS1ocM;vi(>josU2E1g{v zFGPUQ&m(N7WdDI{edwk;Ru<_|rWqGMbV22)Koi#>7wZk;PzNkVe~xLoXU%47XWCus z;UB_h&ZZNS@E5v5hYR$igsNooQ*2VO~5 zMf?2#j;n39rcUZ=%##Ftjp4oRJ0iO_odO(~%$}-#%gb`vQOn0&dP5EQ0s(~E&6zP?!lTO^9;T9s0QD)Ap$0Jls_dGYib7_%1anFX&f2lRZ2q$c1X#FgqJ2DiFx%IDPyP^WZ=}V!wDJp`6TFULxStHL*E7uM%YjO5dr8zU< z=8h2@^#M_kZkl%bU7B<|pcz~xEpi^}YV1dr1%%it;Ik!S#o)o*aI8y916x<5tpS*lM;geus>vi4N8&TJ*Ei;Xy z@Ey-k!LAH&=OvqGk_9fY^y;+V5*k=qS2(?Aby&Ei51Y4fhJK)M&YbvJ!P+DQH{CKQ z?%GsdLaucoBh#vv!hvrg_@C~$tPoMM;x{Z5|pQG-Jd zv-w=}Qaq`N-~pT%_Se*C8ShVfR(G-my*9V~?D;`~(CoCFoa&$+{mAqBgQ0)i#HY-5 ziyRMdKl%gQkN-g||1r}3udu8rWAz7?Pu0c^WX=*~e)EwRYQ2DkAVZ%T(UfHje_ zD$dHkFucILO1T;r6Z|w8F>sl=%DF%2xXyZWjYcu_B;A4>6-A+3C%!uWiJ*^`gwv73 zn8`m}4qUb0AqwKgo?FWLg6Cqx7Yr^q&=fM-TDf>i?$65B&?+QMYngPP4ZD)T)QnDM zgn-TQ-nN<)r=ey-zeO6w6hN{RO&3A$nv@8IpvDlmbgS zM$K)59IvZ2DqFYKXTLl>#IM$_!B3O zR{HD2{9`p|SxEvR^yPG&ELt+POv#EnNO06HqSSYrWq7QNmrb`UnAER}`()QGKB>3@ zzO$v|#&ZcB*xjLOdg~^`EMP3o6wq`Qi zX4@UM(4NXP4zOXt05`z!Vk8oj})AzL9Bpie|(s~clFsb=BRa94L%JF7i!zg43!bLY01BoVcnrY7x za3Tn>Zyc_J=x+gUMEQ?UJrx)+Jf-&FJykLX&T!`ua^c#7_<2Sm z*K)A+a8)qb6hlPeMsZ@N6jDxsXoE-w2N9sREIdPSvY6S_x3J~{GNk-#%--R?yReo* zddFo(XuOyAKBNj(e@`=q^&;De2{n4byq@Z7VC}u0wq)%lGnj7sbrsxiAB$fkM&^nI zyRsG2c3HLDdi9MjB7f32$O?JG`lQ))U1IFYmQQ1(&GsOJuI}y?d7+^hJ(ON z8l86$%Vn(%SM=yJb)}OQ6CB46$yWS%F4z*rR#J?==X2^gEJPs~U$=RwY7XKbnX;)R z`g9?n{=oq1-+v5-(k6hp@c#*hA%LVaKn?U>tX7wdSt261l$cs9Xt0+TYB|+X3M8&J z3ZR3Mh+)8ezx-9sIidhvjIqkY(pFEh>Fd;pV#tKV7?7$7QQ{o*RgS_3RI5j-`q4=! zJ+2fNe_ysBzzk=GGTPT4zcNgnL|JFnzwYAbzB7hU1}a+B9GHzQ`Mxr0C4;INoNOK* z`}L>Si^FHl$9;EYLXi3xWCyJL31Y{F3zF24O9d2>TaT+Q5gc{=1YIy=-M|(p+Vb_m zvev~ehgE(>@KNuVwbcctn%0yw#{)WYi|ijqyx^=%{-ACrV8+k>`l0F4ZHYP+7Pql^ z-8RY8Zre+$3%G})O(Hj?*jT{44#hph2;grrqs(9Y!Ucejnr+2K6mmr!jBD1Zttca9 z2ck%ryfE>8>dkI=AZHm%Q1fZ%(SIhlcgk$LNC(nUu!U9+hiiB6`iLl{B`?DvDFNK*#0@q|u6-XPSY+7JiA?lR?iDFQ=LA!Ci z&mFcu#*4j7QIsPll#Iu439ZheP@pVjzek1;WnHpy{Wp+pq@T1uwG9;UVYnzVpf&<& z3qfsQL{ml9a{cCUHXfzR@B*lT*mDp ze;)WYQ8}8H_8MMAK+b(BghHT#9y=Y{R?7wZ1>WjbRzeTmN(rPPsR|S-8GU9y7u9=f zzLD|6-)z;`$|*W~ve}IVTRY0DQYIT~-YCNDyP8RE&ZedHVzrPB-SZ{~ji(*xXaNTZ ztALE%=?S@3#{vI5N}L)`=Zx>8b0-AMF~M{FbH?Hk;EYS3!A-Mj<6bLn}G)!k~N z{AZDUVpP5kj4h3&mBK3XbN=IJ%m{$IwXJ@JNE}Y>gL`31kdw~RAc%mW&C_e2%cPhc z{=;kA)d7d5Ab@R%BK}+3{QmazF#OktKXHr+H7UDQPQ*^YqeE13UX^f{H77A^4Go%! zfqOXu52~4OosUcvrwr^i^VumJ;i;LDjSf@6AjnyLi34vY`h#KCg&PxK(&-jUt4t3J zA3(jbll%#e)N>YHDJyS@D%ykD8BbP#n-g5btFO#G!$BliP4!I!SD5g3v~hVOc&~7{ z#@801VqRosq70}DL2RW!v+Af$jkdPc)6B3#oZV64X{-G0XiCWR-wAXqGQ#dgp3%sF zY&dd|hyWo#HXJ;77O8R}C<5HhKqBg3EHB3%Z7&1qtkt(=@-II~ylzBn62z}2BnT5= zPFW1I2-DLj!6pf6K;tQrtiU3*WXNWObSqU8s=|x#X>&@ANlgWYnTvw_!2P>ewG5#V zY1FWbVq;m-x~Jdpa_q*sHu!WuO;A&6Av@hH#%(WtTvVBIh)O602L-gU$BI%B z1)!G1my16{fZHpl<#5ExU~7qaCN{+;4W7s!d4K#)kjHn;Dfak)*1)q(y6#2=d+HRS zum2i5UU;hl#zN8iG##WE+wxLh@!^Z;`f}OSdApFB7g$x3ADYKK6jkf_PS-16H zO3L6+@d?(R)$K>%9c$v4+|?v~xo1R}+bT6RuPPWhhYSbHt)H&7S(@^r@VShMq;gbY z!3MHu1GcDTi9X|>&Y__ms4)3j-Rhtu5LJ}MPgi--Zrb%VlyXFlBr5rE_F2x)Z!inA z@MHs6nu3#5CA3T^nQ2hgNs?gm_CCrh2AAA+;f$nYJ*}YHt~R*+CNEmzne?9}b-vy+ z!?G+1ZBecssJ_(u8Tm?vk_vp(nWiNNeH?t=wHh|VH&iO(3jC@9-}7{NyB0))%L)93|F$IHoAdUsp$OS(`C9! zK)TCz8fX4H(`d8$)NVD#t%`aee_g8%Zmol6w7rqj>z;4EoIy^vp1G=hI zKu_*_2m+r(^mVz%-6kSd<|s!zjF14t=ifK&{xk9TH(tmTU2FmKV6Se{{VZHx7=!a}jYzJ|zS(QKrExK@ab^}uq^;TypmfV1hQywHaTZ%$=_viYJuMOmsJkw~N z2vktw&XdOQhl+KVccx3Bie(?3(2OIqqvHf8YZ-mwtDc^+>dSOEX{nSX`a3(T;>Eu- z6iC$Y3@T#CUjQqC-l8tIfsc5UKT(HgIXCjYb)DeEJEBb6?(+|`F>#|qUS8G-%Qnv& zT)lsrd|LeOs~kI}(hkvQ5!-heY2Yw6G)1yo3cpjx93pSHQoRx*bUOYEsn6oOuYG=Z zAA-AJ-q2+)8)S!p2L6FvUUTIBm+Q_&VLF?q6S8Qcp;Df9~>np$gMHL z4sE_t@gC!AvR?3aGl2^c5@i>CzaB(%RC>gwlPT+ODa(AiaQfW~q^0Xwo89I2@HyED zzb=oOnFuVq)j12KX#=^(lWS&Aw-)Q!m10dzsRG8KZdG@+&ZJQ|!cdBH7{C+Ajtw#j zm$>*E17rgtN>eBJ&F0iQwj%o-Hi#%`NpLo8^W3(&s_VU3RuM3fWsJ%6wE)CRN2~~3 zbRye0n7;W4O`;$ad98?&_5l?`;8wy03LE1SMs)BIwW@{t-Lr`aXtl8sV;p>4-F-&M1mok! z6$xs^hfbcMa@&VHUA-eI%;`3dHKQd2_s%f;6nMZ69!b7wRs`iIGA7(PoSrbMAMvY; z{l9r;=`I)+Nc;W1{TjLvx#%me^GrW(`EM!euNayX#$|K_V5l7M4)hWMyB@pH(=PFhZ= zk&HZn)n(E&3FU@H7YQ|sAYpan3RGGn(X9RyW{MUfQ|0F(cUuqjPf;>4a&fe9_7HJ&wEJ@w z;2$d+`WRtDFMXl$elf2=m@h+ z?SNSy8IXn%m0MtP%BY6-f%GF)TK))jI`#7LxY&r%X|x30sqD69xl1COX@PuTOmv^1 z)Hz7NJ;}wVSsP5#rx>3pQ~xdy!~HzISjj}T`IDYZw(GK~YOT4gyiYxTj^i3v|DiQI zB&v!u0jy>Lga?j=Qi)p7ytgay%m%3%>~jjZEsyH8T^c0J$vq0%6A+7^hkZ9e`6QU1g@}O^CacSG>r(@@KDx`u}BN~c?(m?LO`Z_+> zYpy;fx<>Y+fEdZLG>yj&I}D`IpP4qs@8X-sB?1PS7F#nvCA5eZWIh32l%^peCj))u zeZf^Evl8vGQ$jhFR}qoAaRztu;J9Y*hNJ-SQ|QR&GhC{02YsXVx{E+=t<-*4`AH=U zd?9KiRZom^Oen#xoGx4y4i#s-g1Fy;nl^e0E-P=AUpo;ef}Z@BXZBTZBwJfYypGk& z+{(b)yVN!$tTe9MlMX%8B)FiwxI-)$^I)d(f8&}^6Nx&uYraddGSSlO>et`UOjhZ> zcNc$p#7-B->OAykrl#HwoGdTn(8P0!J?dKK`&#~EJm(pi-$M)l7E=IN82+EY!o}9e z*}~5DUjQRs@Q+lEkjqz^gRLMu#lwrA7Lv6Vd2B$3>X1g~XOg+e!K|a)No%)5H(kt% z?a@%nWBD_ykDVS~_jE_otQcl+Sv}e8P~1jPdw7h@Pw*F_vkd!9kO!7PIBPhL_NVDt z%&4(yI0OM~f~l2Y`+Y{N9j0Fw1KA?9k(CyoISFwtCyCUB()lp4Pu;rw-qiuvFjRq3 zC+Q1^(oE#c@G-SCV6E5}JxZ8T09;imZ_#HAZhxi9g@w7^%qG2j->y4T1zLm<$uo`= zyekM&7{i8~geh$FMg64bQ6Wo+ON5nHV1(--o}KH3GhL{=Ag~Yz6<~T!HEYH`aVXtC zvV8%H)}a>AR%@N)Owyz+0_9QU!uDPB{P;*|;~K0oLe=6HuRm|AlFjsk8%D|ZKtxWH z`Kh(6>006D!64IhY42Cvo_JBW<54<&&zKm2{NM~fyESK~V6zce_7`AeW6Qutj(yf? zJQL|v$z^YyiuDqEzhu=@Y-E`qM$X4yfXI?g&iJ5nEDNwz|4oAZD<2SIJ^Nh-fQ2!D zQ~sY+3mFqmSL|^y{8Eu4Dd@ zjf4CXDPJzZVT5U{C~IUXqaA|wtO|tu;agl(S_NT=6&;yeI~1Z;rPfL)$q~B3x5e(x z&Yq#^zB|rSF?0BRAG6QXamzlotQ)o7Q7b8+@YUh?5Q3xK&S#9MS+w7eX(ysrN8 z>?z043$WyyQ^8CLoRB=LW75)HK0LB>rnE#VH0+9azcEf+w^g|S+ z{sK=AB2{F-I8vCnP54056kp0^~0(>bSatB;o%@w=>e3(o>QiQLMZ+O)Fk zdRf32m=FQNxSCT8&VUW{?tq4^3N6mbuxc^wRi4^XNDf9{h?%kMwddq({jx?pH-b4m zc?rx$7gUFa`P;l8d}Sp>mWj&?Y9kl7J@4uAo24J2;6m;J&t_OJ-YmCujJS1I**qC@2-U<{B~nPO!tQYqhuz z_Y6P`E-ZVA65&QAuHPz8HA2c5;TK=@ai(|dfNpLBbV;2Abyu~=YwYQ5$J0< zF!Ruh^!sy-*)p*;jRHWX7|?qDjrZ2SanHZ8!vAI@$_8ftTwrYCdSpqM02J{SmH%#< zxM>Y$tWHRTP%vZ;Uroq%kmY-lM1H?P1frX+^`=#J16Z&tefrYm;pZoVFBo3N!P(CM zlqK`TT$Yrtlm78NZZ%jk0;#rGX@KQETMKbPVpDrbdG6-xPmmQ*t=4pu1iJahY#^=Z z6$*O^U;mqr6h2r3_{ha&RciTtU2Ylh!Z4#@-~wrkX=b`6CY;rAcDg%^dVD4*J##J9}f#@K-(MMhuL z(ljDxA)v&-ZJC|{t%7OpRC{b*=N<%`N6ojnqL+JD9=SFRxk6&!{K;hh`O$YD{M95% z=x6rcvTw|s%KVg1K8= z-p4JjapEFEV~w?)lIK|~ATbReO)^ASxQU<1T| zB~%i_1v3zt0_{U%?B~Tn%}8HC{bV9r`eo{@H16f*;p*$-mBXMyIE^$@Lj;{7Z83tL zUL>`|h-UygLlr;bZ9hcF72mr*8;R$MvGKBf$`Fp$3=(!9cT8pzbvjD}PImiX$x2{yI8B zTqISzj+1ZSb)K-thj~rRn{sin#_B#~#D16_ob;aGzzA_ITn#MV6Icj)OtovrN`I z%fNa0O41zThd|(sIDeV`dYFik9`wXTEICF^6{KSi9ibJ@5Lx)d(j zt7S8m9zxa$H1p0;+t>va-kW-Q?P{?f_stnkSJUCm*#_}mljW9NE;Yf}iZ9q@jlABF z7Xs-ZN{gkI;frcBTBP%yaT6+v{M0c%^d)~mv6~n^>VF+=g`zpXZp{U~MBJnUbMJ{B zhw}3Ygc@uF^TOz0VZpb*243PND%Hz>6thA$LsbKoa3PP6P0?JrfWqx~e>uy%jkN1( zd;17;Q(F|+c)R;>eYj=l`gnLH5W^&k)R*W}>F4Jigu*!fp?GZF@!b4=YR((74tkNE zfno8EdqEW#nrhD>iEp{E2ABA&u2_ka&MP#0?aq6J`PD#}>qlyeBVLfSiU8MkE(yvv zR(I#eMm={wMNLOXM!)?WZ&L$2>jt_$p{uTDvo#xJ_;hF7P6sdDkJ)%soC^EQx-#v^ z6)J&LMRC3D_eqx{0s{ozS4FjzvD=?Ylnl~=ga*Koy zuNmF42KHk6cl!Eu+SiMT)yN4#r=$Qkn&uy-jR-tXcTg)#x6sz*MpdI0i>fVk;fK7W zwfT*Tmi7kSy0r(do9neYLmlOH4b)+DGI&iEF#4u0%LRiCrfgzm<4pGtru2v>yI)o@ z*j+6iBC-oX9%;%B2gHCn_lu^|m%?Z3uCNY_);3gJ$EI!jo%MmSkLb-(`=j-%6rLUQ zduY6Etmd2ct+g7O_|S?MJ^2nwRQihqEJN-EYQl|X-0|j=au$$KFGEglw?C~Zf7t+r z`-}vJm6MfUo2Vyh>?*P!5&qn{o+^l@i~*hN8qm4^4Zrt4cCNoxs(&q%WykT!^)Vub zKE6fZa5t#TU-;)jHY$>pP$$O^IM6o|U28lP5(&Mz(UYHde?iloY^{E5c|4fJ`C$@i z0j}iE&Mss@1NvPT44itqr7^5U`8BjQr(1I$9q%lB#v;;yvXbfxPHHq z3ov#0jEKgGBy^*plr4Ct5LrvX0Q&@=ExzjNdzoG`)Q|Hs-p1yFl!!q{Tim@BGZX5n(*E4I-KInkW+cSYjab z=P3!pvIe}R6PD}}t#ZG}g2cWA2!+!=w{LnU9Tb+=3^5of$(|joFja&I$vg7ZyYJ7cGSyd*Cv0ux z?AyX|-syLDXB@XCtGJnl)puZx-dCJ$nM7s7`Vd&L|C?({0|ECmXBc~yyMi`Z*QA^< zK9Gq-7x+W=GR&Qa{0a4=VV#llxlqgcQSjscYzY4u6uFEFA@2|X0B8)~`dk11F^ZD0 zwVjo|)4vlYH#9ZB$qXpoPt|&mS86nwgo|s{|AgIC0^K zQg>TV*Cg@?$h<*j_X68dU$0YQ7wJpFz4vdaS^uqoYxJ5 zXd^I!$16r=$Fb8W_!T2~XBxozgKQc$X#rlMBN(+x)Z(p&D~xC$_Mv9tLxLEIGvo>R znF#5nj{=J=w`JO(%oEwi9r5LCjy)_=eT|EnWlgj3OA;Tj^{)71m#tUvz*SmtPQG$Rqq-ciEF%kE>}Q$v$q@$&e( zhySHAfHV&t2;@6G67nS@BTGXwjRs@q!pn9WtEH38CgdL7Y2=fs`|){IA8#Y>8-@;V zF^bg^TD1AlE5!FH`ZM#6Mx?HV3l6??C6WrQqtRa$(N0#giklwJ6U`_3A98t z89}9T%9uuGb4P$OGq{Sq}e~W zUjl9QAmhZJ=-a>#B3!JM$HH&|RkYQ>!^c7Kr|w=SD6$we!XC0~fkv^d9w6j#zMCm? zA%$J0D8d#PRGffY>?l4?3v@6Ny)C_li{VvKURVS1wKiFKu1@cOEMdmpmaD0$Fa?)G z>DF+$bVkX<>|DZI$a^c*LJNVyHMMq2;umpUfsS>&P;o1+q?xxIES<2Y5~i0~wOQUW z8W4V9f>U(YFaGSjL3!tM9Ym-vqeTUo(!7e(G?oucrYg@H*lo{5N1)l;OGn0geyC}c zA-sS};~5E)Wg!J`U@uhoP(o5pK-snR7TL!b_XP7Y{iq<~jeNXJ(TM<5aaeNE9Jizj z#dTI@TwUS(SqiPrv!;k91@7m5v;$QJpq?LcDZ^qa?kQa)4>U ztjWpT*&lBag)vBQgi5^ox6KJR&sYW%^G;y*;?&DcjJPu;s;t|)OvM=KkRkkZvyg|W zgTMsWxwl@PNmmu;E;BCK)LM&x+z_IM^44kSNTN2#2sg;3QK_N<8WM?mq$=bafx0AF znQ`nBh2`SN9yhd~eP$neg-Nz-0&mr#uAS-N^eQ%vg$0gV7D+PzXv+8lhV7FGydQy)#Anid zELP4gk*9@vBT=PAF;&7(uY;z2%)E8LU{isxL_DV~+0h?`WWW(iA(?Ey+(NIZ3mBc; zJtp&nLT*k;N2NAbhs;z}RiASV26aW62?#Dlo@OG6bT9m=x` zm5Fd;m#lt*dfDnIH+&jr(YfrGAL1EhJ0#d>!teMn$V5dTutFBlBlUe2CjT{1`C(l> zq?Yi?xX3g?WST~#Pk_a10mvSa$>@aSdM*QS(|v4&7nQJxaGV6<5x>GBkQB)|&`+6kotoY4fi=rfA6%d9C=Wqa=sJ@xg+c2)ibVK6V5fBw2-A*Q8Cm_jW!7o2mUr4LjKlkqpFSTiddVaW|nhjOAI3`Z-rgId3P+tNgvU z;#r=-ImBvp`-i1t_8_Da(N0|q&0aV}@nc|RU9J03RJbLFy+GmnL~AJx7?!)Cc6+Qg zfQu`c?r{4QYST{zT+2ZB&(hfI39N1g+OpKcwtN>b5_CbS?5T8zS#yF|1YTXtYR-gu zm;;l?IV#bB#$8xp?+V;=^-J@W`h!7|8EJlw6zc4c0BPHpvJs^w1&&W2LoH|JH8Yx+ zCKT?EKi;+b8tGYsfEKxvN+i8ps~b$OuRVi}7!p2TQkU*Z3$mAjs@)+~1>V8&Q$NIb zvGAWrCiL4ieoH1i_zR1C(VU0(qSc*bH+hp>v=_Y^rzA)@eR%faTmd^Kk8dL-|0OBmpIn>MikZYr6hWYR-Pj zurP@JCGO(xXh(b@yBY2NYo8;I7G2c&r|;ZM-%TqF9_Y#9*dFAKNdH#e>SL!gqC&+6 zGBcH;%VKQ#70CsqaE_>O!chnP+D_9sJ*)8!UW0s6Qyco*W3z!D;{AH)#iMsRArYy6 z7Lxx3t(b@d70i$j#SwG)D(BGQ*H8F{+~%HU`KOCfB~~_aAOa&+wc#h*me(_z1?`b0 z;EiDC^y;(M&34W;o?z?;9FMQRm{L@VtZMy(%@YI(03h+7qfAu?eY@}3`Cmq0|Hpj- zUqMR9-$NQhAS1q90a+PR0Zu${@o`zlxzqBZ3SZ@q&(*mB;vNA1X;BxzSsJVD<}a!o z+tCha{~2`vQ@XKMzeFgISE{t8T!mC>cNc!!EPgb&?Py^v;&%lU<8gV`>dQp148p=B zc=(FCMXoVwx-{QydI`Z?2IV%rWJ>lx1-ycK(4nHIx0gK^k1slBxop3Qv>;-}SUW@J z7>Wo8s@91Um|Dj2S$c(B5bRcYcrle+a&&BtK~)-3S*uqCiU2S)H7bc-Dt*dQXbb-R z)p3&Fb?imcQ?NWGpGF3!1j=A77of`AVf5w#zG2o_;lv_2vzh= zMi?BVCBt({G%YH1eCD*YK?dS%cxHxi!~qe5)y_E$^cev&>E6il)MbAdT!aH(xKu!L zE0%+?opP@22uC%WfMe=VhPX+q5|0e)g3qEQvQ#tTwOyGV!7B7fiK7_!u^B4WVMv9h zb|Z+dhK_oPTSVg3WB!;4wawNJrJ9-@Ntp&W;Bzm`wwT0?0==@_R$@RPf8_=n(ZXgnhF;IgJQutV>ZiC*8#F|Mz-jKfk0+zEz0 z$cTS3l5d(%JA9e`bTH}SDBo!V-Tq@8fq!n3AVxl;Xrdd((gLFg)i_bixS0TEKCyR$ z-ZdNyTDb~hUKY!jQT24|zxAE`4{gl-1eLoc!BE03wSrs?R!rkmj#E zp;>{ZGdr5Xv$J)2%b{vtOq@3aSC<|_Ff64hO;{%Jf2AL2P^%NIE6>TArM0gyt)qYq zMj3gXkuXvma1}#oxELSLdnZIfN%6ObJ!Vvdb%46MDPyk*w%aDaIlb3Zz$z9h;k@g{ ztTnoeWp(hdc{g|f;0{<`$+Jf8boH{s+pPIq8JuoBe*`V$W33A&Y0dKH*65~f>}!xz z{NEeT|Cdw4^`Csbj!u6^sOdW)BrN`JLjec@02Kejzxc{{Rd3;7?#)yy|W$k@53wTi%zc-c?njS-o&&g=XF}uv=K10~YIf=f zrBF$eQ4tI!&`TcJRHpz&-RVw!g|=j7f&;Wh3`DJR0o}G+==QeHP@~#67{xKE289NF zT2^faoRf#jdvQh)Au{IL_+||-=@~eXfoPvx4IT=kh<6#WOI=i+QGI*a2&!`mQk%rZ zU|3Tf?b=#X>}`iR<}t|9OzxU7-|iiBg*Q7b^2RzVEUKA70@NL- z!$-`GdPDuASw?R;<9m-^TjUhI_09&_B9rSik}NI;_@k@d zGl%%aBXfi(p#`Hxh)y@;1E=?4amV0(fRMn97dLs&(V1VcV1NcuLa zSDY%rBJ11!O`J_d@k|R=IgC!SL}-6?!l=^JTAj&&Ixr0MP&dAQL8?;SwiAwaYY2-` zbl9QG12?wJ!i-0=yPn>ufUKSCD~{uSvDRl+{GAN*o|)N)+6RN&67^%X#+zm{H?52%05`9g1oAx zl6LD-1|rIqW^KC%s#w9#BB(lOD_==B*PCfNGutQ+|?aVJ^5!!K>YO@2!C$mUe&6BSPd*y7iex=|WGc<}l zGhuR2R1$JwCDrzWPv|xfLmt}p`8xvHAZpO zQ&TD_SXp0AhrLf0koxsD2)n1Etk^<&70*Q6KGJ*29E>exG$%V6h0WmMCH$>gwNARE z1_L(-u~hG>lJ=pOfwQ- z3y0MT63tcDzZM0`>-`m(1pv1i%X@x2yEuF(&}5ropwRF_E$Mmj*0(m$s?uf%dPZsx2o)XH~^lcSP2J z?-|*4i)~0N1939)`~X6NdrFoXPxD%cAH3aBGuh#%kc3@@X9K=2a+L%vS;Ch@rfXBh zcHtQiINMt9z2c80aBzNC%G5|T z{W;JhvCy4XiI_nsue6*g8R!!MM1_8EGQE$F$SBrm)pib1^ipJ-LS3S$BeSJ+p7NhJ zV%!n^qfoAR-zgI*-*&{DVya3{w|G&|2IKlz^1kU#QmIl**cM<_T8Dw3*`73LS_9vF zCDQ(n#1X-*kjP1VZ|gl1GXSq*{lU?GZdpySgzMik{>4z9Kn`v>8xfMFBAs)Fx6$vn zCT|m%p>CAg)6KjeR{W`&PfrmS&E0%VCO^OWfIZ2%`3nHr>4m*xT}KJW>eHj*-9wN% zt6OOY%E$D49p5OY!Id>Y&AEaNjcoIl&TnUd0ae4=_GaC6O7(E33f`L%;6=lK3)=m$ z?5?6`!mE~6(C!L=)4@kvdfS`rybgce;3n~$uAsP$*=a<|g`_cR%p<-Vu>_vCY9Adq z%EN3fC6`*jp4VBLK|XvCr8o~MwoY;jTFTes7^hoVLx}-$;q6N*MV@xw&SAP-k zKcB@v?Zkjm5*{^tWogIU=>4ifJ&!IHaI98<{DUd9ODx3j2T^wwjM&LujhymM^#s;E z$g5Xq0-8<J+pM!p|>u~zR#Kqs7o!gJZw+{%v{Yn89ROBuQ| zRJlz{Q^a1+;hnTI01{hgLq_ zpGyCfu0xJ`kwGj54#eaCc#x2*26~{FuHuhN+eT4ZT@^7qFQy9;$%ZhWPQFZxh@~7< zQdVj#nIn#8h;|908Qa&XwMU{wY>@?4fN7hLxn?X^!DpzYAgcDq&SGbKktcpx^fPX) z(Cox)l9*soSZGsoAlYGUt zHJue-phL6ZgM@X0A@G&C>$DjN*EzIh(d61~1do-3KiVtgywEpcdI$dILuI_(RX&9P zty@}5To!0$4Q-LGD7Fy8ZS(d6Kd7duEmNOp-ssWa(Ei@EzBp72=6Ff$KsiOzAi|Ilm0I0~)iB_D;Kc^S z^1Z+Dlxl@GT8e|fM&V~ErtoP-IjNV>{p29_8AOcP$|RsVe-c4C0~tsATQ?&#Uv3U8 z-RwK?)RtiZkAn27potaYQ>!BD18It*d!}ZQQ(zMU6Pt}Z1n`Byq$||SFzC=sPpiW# zMbf`9yj2lVm!u0e1$~}m8V2(^dZY5vun_NAOfktfE1+5ggmaw<<0H(EIaUs6e_XQD zrp3JJo7EcZ5|D&C>O-qpMnFAhw5On%!Ss3oyq{MkE`+xaPAJt{qyCPwDup1Fu_Aoy z%;s#>&OzWeD2~t^(Q=84YQCB*IT`L-1Pu`l56kM2-;nq29jem@2!AjtU}EGC)Tkv# zZtWc=t}^5t29*U=We>3=V1My|r{Ey4-RMbMGvM&?*{z0Jik z`HI!&Nz*xZ74UWzDY>wd->z*tkFi+1PoK|pj)PfIL9ofInq@fG8az{qlDpQkW}7(D zQ55QEf#Rq*;Fs(i#<~YHv=#a&uxvK?n%VH$*uP{QhwIP#@7sA_T^av}Zyr%S5&*z| zpr@#0YiVrrZ=KM;xV}-wYf!8kU2J9*M`e%;*37eD6|MOK_)#gcV5T7nQOMNXcVCI6 z)fI}>CF!UB+z)!XZrwZC*&x5-5sE0CWB;|_r@Bp3>gyW}a&5XlfZzsj89oU&T@H|J z+n>f-6xf?8+4oDrpq?i*C9yY=lucn{tN=?Cz{$6H|6x?Y_^W>u`ii3=yMd2PTo~i3CNSFvS^xQBt6q^`?T#8sy{_ zpv&Xqx^RqZBK&l3DV?-0lqm=1yg_K~*&Z$NbM@0<{|PtdTOR_PL%U^J?#lo-1@9r? zJ7x=U_Pzo5E=1pXN95PZNh>uhZ!gUwbWjw_(8nf{ubM!92ncK<;Lpg>ZvTbBX$M`s zg~i?2KABSm_)Am&%Z;An;T$_IrqvU)gktZ60g6PbZFV9 zv`*LS^;imecL?%N5hpwDrwKf-GMdnISd?!ZBQ9+*HhXNocZrh|0 zSDTpMfRaj4N9feSuC(&ukA#uq80ed(Qa?QXt~L-m$ATIAUC9WBwD8jAMOC(Bn)Bb;ECJ` zehV9@i(NJC-0(!uuU^RMmXC*hmw?$B%bfxZF8JVHehWX&kbf#1bL^1XOVQCQXiN3@ z1K}Jq=@qfh`l7I>on-0t6u_?%%B2K&Tm!T$pyDKGlW=u8i4BJ{P~$}?fRDZm!tFm zOmL3Fii=GIim8Y;f^+%0(p6bq9f%E|<<7p5IkL^@P5PoroEqpQX)O;A%6W3QX36X- z;}pDj6**%CJGLo#-(8YhcnYIqivIbxX(8z?kZnZ}`w*7O)}OwQ&A~$h78m_Bu1Jrn zsZ%272YjDP3Icq4y5TcwT~>zyd2yIW5ErK~3Gfa%cxYZ_*OB@j`(E814RhkW7mHW1 zAfq<>Zh&bxNf_kgVoSV@0@74-sgAV*j?3Q(tg)u4i{}UIxxM1(tE;N^sb<$oAUt5=sF9&~w>djPlGkwsMu+`y_Q>aO_H!a6w^Jy`q3itCH>{ zR(49kO^?c~YAnyc*KTROu5vF=VJbgt1~GqcA(Np*?Z=!B<*EGM;-`sPJ4HNES$+2PWV9J=K z^wyOt-2Lt4#kl@mZ1_NN&WCHIrI+uw__NA^A5{VTmPGs1iBhm+yr;TsO(!~fHhG%j zhm%tButL<`TI6Kp4llnx^P`) zd`os=Ej3!a($WKwCPjDN&d)IJ5zPD*opl)1LL0;UFFX3PpgW*8*zyqFmg(N z({H%{Gmh2&%;Nv+pZEqa^HL~F8G`FV;NzD4EG&sb*z5cGuPJSwM&$}67FD_sFJqv@Vv^W);i+wj<)_1% zSPLep2WXa5%(@y!DHY6HL-Rc@J7GB&XPDJSQd?ML;8h@tf)Oxu3&|r)qrG#O2If37 zQ9-X$&$X_qE#5_YC4y~8bPs5`)Sk_KY(>D%9SI5nRIMZC5kXMl7Af)wm>?A4$Uixr zPr@!CJh9!X_6nMG(5H$^-XXL_|BC>gXw6E#u-#S<0s;Gbc%Xz?p zf)l&r_nVym)^Jq)4+fV15;y#Ic2@3x_bMyD$km6*x$ho2=4+ zidQPo5kp3QB)34e^e(-9+O0n+@dHwW^h&Ui6%ta`hu8Qf6@r?oWz8i`#9<;I4{Qj< zAxJuj*iBPuG>w|-eraSU-}leRDkid+hG78rclV_~Y79cvjx z4(;R?9AU$K zzOoX_ZCE`-?b&*H-|*VHxfE1Z;0$p3X^x*l48%*R5AFn8k+rTxcM6p61j0%X zSGui(Sgw?Bo`-4e3mMo!BPr(G$m*a751zzNuBeopP_C6xiC4COR*nFA^%384cVxp$ zyW4JjuHX))1n!?z6Duw$Lc**M#wiX;I6is0S~!eqd_1fT=7*r!khCp5{f7^p!_%D$v-!Qf>Nnz1jF+aGTx)a}E?8e;OZrfee0eBWzV1=N z2Ucm3lZiNjiq}~(!BHD|{d-s>S;47HdAA}AM6pJ|5}X|qxV6>z`Vc!!Sbd*;|A=<* zA-hxTrJB+xe&Og>@zkTAlDwi)am&OrW^&Uz50kG5A2*a1ri_r>Xpab3{&}Dzjy%II zUm^M2XG9!p-AY4?;(OD$IB0^Y`V@>EG|sPR6;$u+U<}M%Oglb|Y}ia^zfw&tl2#^#~b?l4~~5q!;WrJHx~pDFJboFIYztaAL!I)Tvr`?ciVDdvQw* z%u{DC{W@KSZGzW-IZVdzVH|AwUUpZ1@3a0(r9r^T*3k0rK9Wk6Zy!@OXzwT8UMP%Z z^x4Cmnv~Ds#RmqxmL|&NZP<`TG^32@Ac}bW5$OQ@uQxJwm-9bMo~<3rB;>b*FL9#> zAq2Gkdbc#bt~JB0evwch9w<_pa_CfxzuZMMOyP+MpT`ZN5pWWP)9mIO-!-aR0&OMg zh@KQmo_{kfW8qT<`3fOpPNcMgk|@G+@tcz+jwkBSk0oIV;>X6F2kouqw0}4-w&zS` zQpSuOj`yXbi?!CK4;2j{Ev_FH;*X0YaqvSX<_B;=0F9`aL5c{Z4DAVU7yQy&&FupB zpFRJ>SefLVX*;A_AmA(6d%&n3QQ=pM z=|>{k06ffW!a1UDFb+U6_v(9~vfW^R#5;luAy=Ga)e@xGvevVOhH4d-l5i>&RbbpK z_!KuQLY;O!F~Zi#PmoH#eYSiGyG?mR$!v$MSfFm8*|u%E4Ub|hg+*X7QZ5jrD6$DF z^V>6WvKM(pQ`L0+Dp0~tp?6{O)TvF#Q?ky?sg^arbXa9GG}W2oVY9J0%Tsx1b!L1; zr9`IWSwn6sA7UaA%HG@C$BXr?_W4L(B&`1}?&%H{(U_EM3XcOkg>g?3@dds>o)Ye< zzE#CCmWi7BR;1YOeKfzH6pN$DWmQl|iz8EtfE{R*kNycm||-{cU|HYHKc#qo7-@r|k1Cy!?n zIlLxMK1@!}AElL~wfQL6_EU-W!napC^ucrkfhEVi<3<=fQN5=Kn$u4Ww~jOU$KR`z za2$i%79A|(_Jp~b=i$|%N||>T<)0N(Cq8#{{Hu3wbo;Nlq=Sb8n?$DK~%}Nw;4Tu>^lhn;&>@bE?|bqn0Bu zX^vA&z<6B6TvB1{5Y;N|ZWFBNmznnF*UGCgGX3IIgE_%k|3Yg$cg0qzvXEWd z{)@I8fKgh;>vwZ7@|`#SOVw4#*v`S&@SBru^mmEFT0#3ClKa1&s`30$Y9pAuWLJM{ zrUUi+Q}KN$a{o`k0rKh+o;4DfI zUax?Q>Mh0EDzO_e!7HTo)~k^-)ieZ(P&i@VTVcxu)z~zGnP*fg8Vln|0cwadWeZQN zwrRxHnE*tI^xAeK+Ze3Bzd1FzrGb{I0V@0J5pp4oCMZ@U*Z4-|hySdaTw4_17Xl65 zy^Q}8is420Ot18wyryfG+~@AJM`Z5x)UoZ`OlpNC(Hp+Q(Zxr*nLo{@hV;fY=mEbi zA8g|<4FrBB!e~bq(LH5J7TubgaZm=A3 zwjqwm>joAS;yqMZx=5c}0D4$pR<^s+p%H*le5_Gt*A2spP8(xPoroi$DGQ4~3eQ34 z#N<->3|EM)L<*VF8pXf}+edqHk{L_k3>s~7xto6pFR&{bR2D9?qeC|1Z}+{s@<#Ro}q}{T+Nt{~c&2Wc&9)H)gX&2j6i=`3R4v zust8Le$Emz2q`yj2P2dM1nAG)7#})Z$XB(CBK+AYsUZWy+Cfztvyz6-yLE3}J%2CI z3z}F7A(s)&XAqO!yC8Qdbthh4i$BNCwLKUc)M!|@8jC9lHwoMf@-Xe3tNpc>QEbeo z$#2TEf|uLm;vHd?nZ>vDQ{r-Anr4E!djqv%h(LfCY@MJV7Fda-hBd>l%s*>Kg`$t9 zrPnfE7+Kgsv53ls{GM!N__@r9)@bP%_@z}r5N(bU-A$tf?T~aOK?^8V)H1$n7r7lU z&0h@Yb-@!7AL6GshL^Ebf|J{BujUTM+lk(KWv$evK}yS_h)pghG$6`lXc<66g|csZ zRH(>=DD#7;U#9nRXpTYs!p!iqlwaNa4^u2bo&Yjp=PT1)_K3`#i2G2llqK_VT^-gx z1MR6F`Bb=LUy$lFA{~SuA=ks%c9=&-5ayG`w zk?e{5@hm(_40a{#VEyM&kC~pHT^z}{p7^6G4KzhBLdsU)9I6n+90zL|5qL|nL2Lr$ zPh#~*{se!zgwV8bY3L`wlS;tTS z4BI0AY2B}C?ZGRIH5TIW%QXsUmkEyzJ~37eLT+;9^TMp^8|G(c9cTghj3-8a-SIA* z@(mkQy2zkPrw&v!<2738HxJs*M2?6RrsITv{8WfKUy3=%` zsxXm}wZSun&ECS%Qhm@&nHO=Uo5Cv^u=BEEm$2k{8kzMm&2d~c5~CY=i@C16!iz;V zv~lLMCiG^9_F!loio!5y#@LN^`6~@6uxWcUY{WhCXUq*j+)M|l!B;J)h_RZpxO1YU zQusUtGv!i;_Lam6g{0rZhzEU7NeMHLj*~@nr&saJGBfIPYhCxr@J7_)Fw({@^`ny< zTcy2{3v!hrP*=`Zd7eN5`3^;MYnDHZMY%Nkf{c+KX%RsMGy*Dp)dmsvY9=Se7R6oT z&9W1t7byOOWTDR1p*2G?gZVm%aJ;crK*NsLsf%buH?JB*8PwyIZ|bGX#Zi@n?9}F8 zwnZx5MGP9>jk?13Wa>XqB>$KEO)Ko?WNc&P_%DzCZOmBozpQ)SRBQMnmW6p>+nFt! zSseZJ%~h#dp~>Wi84#gri3Rghkc7WH$p^j#Z9@QOdQrr}fBo{9KcaP(7oEB0@^?%{ z9_`gi0)MX#BBpapt(-UL(ZPiu1F`w`kL(Y?pI6A+Sgp1$VtQxL7$#8b+*?%31=8P4 zBoJzS>&z+UQSK2A!c&9z(duBN zya<0-qo7n1LeDv;7N$ie3g?a{tf6#l(JQhwv^P#A&kKGw9i3llU&-FMxIA=HPf`o} zHq(BUoe(sYOju_{JacVv*-|g%gu{>~u#j8#9s#hrZ6wviL|1aEx?3^CJ~Tk_ zwtFAwmo2`B<6yO-OlZEpWVC_Ko9a&Pg)Vh$aW69I`X`Il1U?V=@1H5GMR8-~5Ur63 zMzrm^N^12$6H6UK9_!dp6TkgP+v?4$`+@Wg7;`MAFB)rr15`M;3Y?ISA;$dBfH0r1=i^1F_&Cng`aGj}u9BbgG3>IGP~g(% z+=*4IF{6$tsZASooEHV!IyoX#Y7TgHg*$2cHUX$`ELdkV-?)mF+n3AupwwC-BgeUI zKLFI#T9@*U_Tege+R8TR##O+c`CL#dB zJi%F$qJ2%PdIs~~%g^i*-AK|mPWkg4-T$TXBVy(3X!dt;ZLQF2vG)(Rk#9;usdoBA zUUQ*QvosLW9^-?)u>q%4(9B>fpzbnf$yyXo8m9AG zX+I%-@HLCbdV;wHhj{4IV%>E8)V@oNmli=;g)fU}c?_TtcK?9|VX#MK$5dk}E`hf#)dZXCXzWiml15>|iNO(B? z7f6^ML#ysbHg6~OBAo5Qm`QK>PO%Xs7)=aPCt&~Dn?pSt)6_Vnbq!f{NH$iPk!GS) z+%)d)8h>y(L}60KqtsXJk#W0%ZSJE_xO8@yb3F{X- zyM!Ouzv1W_lT#0;p*v@O>i)nD_ozpAfHBC$pUZ4K>WkICoh=JHYzfG(6oAOGOO{Lf zKk>*pHuE0PWRc#?yn5xH5CxrLpnWnC{K&oh&B#0eB0Uk8KweoQnk2Jfu;fpHbUeZ} z>>*E7*Vnt2wf5sxrRbD22H+rUvNh?^&BZJ&6lb6+Y63E|$z-X#)xZ%nLq)G-s4TGz z%sm7$)(ObQ&P3QG_lAX#zcv;lH;MS-9pbQ^j{wkExiCeO`J5(M$DgEwJBRbl@1v&u zGonVV;dEb}l>g@%m#|Sqc1q1wm%YA~-mVj-qlZ74zQ!6(vJvpF+`%CX4#HD_2&s{y z32sfY36XiN)7DTc)eG@iG&ZbrwDx%nJ!gkwuE8!B1R6OpHjVtpHAJQoBPfdr=FoD2 z40ia&U)>jVlp&pVRWJ?u;aDD&zc$t~z2!99?jEP)67e+I&YN%W2ZlkM+c=W#3hWoJ zvR%PUkCp;>KWHEzbOo+kuUY+X9=)7c#5?>3p62TJbeA?ZW00e!jDZNzd3lU;>*Y5~ zC6Dkn=|#9iEOwU%OdCnGIE>*&Dk!or2H7wLUV;a|P{Z6gw#E}s z!FE@UkW|1@cT@(r?g6R(xE32NWbjQfia4>9%h+bUKgnRcX~<@2V3jE`!chXv}M=mki4d< zTN3!h<$OcT;TklXqmj!n0wrL?5b^d&WDMh$<1Xajce}4v#nYM23eCO5op~qOpZcHf zmKZ3pkM4*42tyf)@r>C)-;;$b;K_wBn|S!EA+8N@X@h0JWB zHI>szYV$%&OA zo!4b=>JRY`T?TLPe(59%SlqcDqc2k(Ej!IM6;3M3#i~IrJi>2Zz$=hL+DUWHix)?% zgPH{Nrf*+&LVOOk6vrp5FQziQ|FD-y^oJ5UUI4!bJ&Gest*X%`TI9~TJH(?*T!19? z1KzDg_d~DA&yETJw&wW+ml9@ao22gsuE6cmgLnCKGq~HoF_Ly(s!t!e!*o5mezy+^ zoFyZF6rirOl)b+R>`G)>+$5(dm1oBYnyXkbytkz9FYYM;SZ{NuA#q(v7YkGtb9tKf zBgt1yi(>RNMEW4iuwB@U@5tB5nKFpW{Mm2DKg7wC?B9H_%~t7t+A7rA#S7m6b?;OD zs&)k&C9Qk;d+qRS}Sg_2j}B}v>VQbRKbgL3$lH10Qloly+G=>F6{;HveDsy zr-sV6>7ozy=i9-<%hZtiv!UdtJ?TxF7**t+`N~sQCvWprvKZpt3;!L`?}vDMrU%vd zy*snm_KNKVTB4c`PXK?HjTwYE=c#E5z0+{Iu0Qqach(R$SaJxaEgTmddm2oXoaQ8~ zR?h$#MB>y*Bx6ek#12!|vc8y1@NDdweFdHdy=Mv@K~KqI3fkg2&H1oqnf-6GDx5%$ zJue=1Di~NxnF7tA9x2K&G)COy@4lN#l?~f(;V7RaU3*3h zHJZd{eOsB`#tAJvwOFtSO+7Jx|9BY`{d6R;a+%mypDk?TmAV82bqyZ1KN~kZ-cJV! zyybP_`8#Xin|%$5u#jc&$C?mly-0N0qbon{)$u05uH_36n6=PjI1Up?DnF+N!| zjEr*`_6lmZB?I$SAQ=?7)z~Sy!LtJ5(Je%ao%GKI+{~STk_7l0Y!Om+HU?f+_HRA< z%Kde_kZ_Xw_-V4587jFCYZAMNU|-IqtQm;}+3Uvo$z~1wst|;l(;}4O}=i63eV2m}fs*#lWzkV%EAP zrb~O2v6vcF>Zy)(3Xp<0+U_{c{oyA2GKJkCOa7DK4qN9Qtv0P(hI}Z|Bg_6?OAdAq z?}sgy4;Y~yc!1Mg@DwI7vjuR8Wm*3X^atq7Ztsl>_!T9l5ZP78UhW#$2n78!d)=}d zBHZFRwV~+G))<4E-{ogL9wM)HQit?+H?gzhJkcV!G(1@!56%uRM@uKXs)&8C-dA0c z(x2D!!4-30Nf|w2xjBX;j$E{*_J<$sRbaTICrCB|$KnOIRS}{20$iZdl_J6|#ER8f z0{Efr$U4dE(l@r_*iJP^d!;#b2)ok1(;X(r5D0Vw%gN#1WS@=JTfAKIc|H2x(a&9+ zeh2)bk4DV8>RIL{Z)LpVdtgFPeH;aao@NA zIA@|i_zNbbSY(-X&;U_p7KOr{1GzrR$I|vuRjk?UiB;Spa&?W!(r1;qkLC}nwIS)5 zep17L>l4Eole~`YD{-&}nMjY1{r$Q7gqOm6xw`QGwPyI|KD`YhgaYfkK&E~ZJJtR> z1ybDF&eq{?$v{Pl|74I{Ri_FPto?)tDMvM%o1Kr#M+gTgSArndIPd+wkkz@U0+#>d zGj+Z?A37^JW<2q$!~M?Wu%A@hVlY@0x=K$S5(*Rl=kdZiTPbVJdiZW|2haat?VaK? z|Cg-M*tTuk=s4-vPCB;jj_ssl+qP}nw(aEPzxO*cXYV=ldFRaRi|4kUn_sP}Z>?3U z2qux5k1Twl4jY6LAz3ocI@z{=21pZ=8a8+{=2GC=Ci@QLnpn_-Pg&%MeZ^=HY47HrtB{|PmA#aU7F&x z1dgQc@2=EDcQBPgwW`mNnEs%;BfbW1#0chSw*8b4-R6dxv5NZA2Kl^>^%H+NTZ=KN zw1IZ)Ft#e-I9cx?mKo%o#Rq^kiBaW)b-`jrhc|=fO`I`hbCb&Y!+%8i0CxqBV26!s z!0RBCj#4qzf;splPYt=l-)zYs1D3(o!-g6r^|d;abn?_@BYSdwcBOCyacZN+Gqpx( z(CJ#T*bqS+ocL#5j|Ji)*d2LETMXv~Iwa0O+`p2MDrBDCZXK?EfMafRyE}kJQU?bU zZa%n?*BvX^p6iKCEf4#4Z&xss5v;7q__ZnPG_}3Q%^+DUm>zn%0STCUZR}y z`-%rj!0U#KGx8s2Bk^+jlFP|1eisv;?><=>0VW!lBgm)+)=-OJx=DZ4Z}eBo;R~dZ zwm?F^?W770Db3&5Yb(!ENxGf1I2uaNdD6*5Fiir(285X6Q~A60>TW|QKXM9K`4Op; zIQ2?Hd@A1v{U@BI&-H_W6-#es2RWT2+T=i1<`{beR^0_OMKuRaxgZv7AFkg=wePX3K zLGWas$#_!s^~^uB89^FJ!*yiLd_!3d(C;pdFBi`GO<}c0tuRwda4Hk1u9FpIcZTvN1Sqr`Q$qj&g+T% zzY4>@4ncWI)@dhvrn-G`5H@~wtv8^HIl8-fJw8~oecejkU3M2d-<-aFt!rO&B;|Af z5ZlUDjz2xN>OrOjQ(M-s_1OI5NAI8X8jknfb{T!2JpUIBm!$O!?Egz1EK%9&`$!(l z_bg#YIh(AwyWULKb|Q8vj>52!-zZY?XnhJ4dBdqdY#zaye?O*=i<=$R6L?LqKA1HT&Uiqe zl7`8Cv14+tR4b%gNX9~eL<~~F@yNxux=FD*lX?EBxbj=w^yr^m-@y5;Zc6LX z;=CC?`asvs>b90~2C{s~WN2T51zUa(>n7v4(v6`BlN@FqsQWg*H@d3$G5n&ftKH9) zxb-7v?J|_GSs6MfqFX@i1?3h|M?f8i#)IP1Q5)y`>@WkEa@wwU3Dsz)LXM%iXrHsK_UowZHwX(Pe^Gf-v0u3S$4J;v8*t|u@N>Lcsqzv&P6@#VpW?Kgtb9qkJ;pB&en%SIvc^Nmg)|$ ztT6mA#>DkWtLa2hMjWAq2O2+imw{7^O8Usy#h2CD;+-@*ds8zvwu#G6ZuLGF_;;T; ztS;D%ifpWWk?Vg_M`)Cb6#qp|qkQM)zo;PnAFIm$vLGqT|6Nm6we7xP32*jM-DJ45 zwrJFC+fn)Bj;TCY@K1_bF%2eC2MfmQme`1MTtSacVN&zE@V9Sytk;{YW|M?MyUaE# zjroCI2@B9yV=v+|Db1p})1+y0%m@x&s6vh}wxnskAp4K3a^Owm2+qY*@pD4n6a(=`G=$U)II8 zmN9tZ3l3Q}rT;R+j~0OT%m?-$VTC@3Vttcs28RdY8I?>nsAAkc+%po)XsHdPX?XyWOU`=x{OUtdTMW_g?`NZ;^YKB|?iXnKyry|Lz$M2&QI*ypG z36&hsC1|+D3mUzAK-AA3?R$$OB_z4f8;K@~v2Kf77$jox5?KQ{Gl^8V!Q{c+=c z^I$wl*^}ngHLH?#Wb<5k?&cld4KfQ=P zl|L8{973l9NFojGYR~ft-N0gVt{SVh9*Ja@haZgx#|)NoZs#2HH37%yZWl9S%a9AN zG(+2eC$X_ful8QD_-aIMJKh8}%7WJUz|eGTq#0>)4)T0f8>VdMC+7I=hzzJefgPca zeX3Ri%~Uk0`+HRf5J&!G3ZL(W{@EKlCKyF$qtP@qr!8{XMVU~4pWeIjLa?H`Mj3pe zeKvEareF3StL4sopRDLlz5#QLMo> zLlTrsL_CbfU+qvfELs6r3Wjix5lUJ>glHidlTHM}EhxegIZCnV>Na<-ZN**-olc-c(77~>?HP{Up!;Ua|?E#I1En_OL^`Ns)NBL zG48bTiv%X^+s<~>MWknas<9&4ciGR)Lnf^Xe2xqa7`ima@>j0zXzh06x zhYJ3|6e3p*^@1}*D3r%FNsK8ZlJOhW+-6umzdTIX%_~4p@M?D^hCJ?!ukcc9<;~gT z8GN-%c=ub0V%h|TemN{VwI=^$At5=zP-$K=+#X;`QHtjdP+0^_0&&w+j#({qX{ErN zHk3O_h)60VYpN7oTwMR5hzRvqSrYCvbvATh+y+yT3q%*2BLtuFcz)k$G@3o9^;3A> zZLKvSfFh5;x-g+9)zcpcY@mw!P4o~ngPdKp^a0%UB;BcMZIi*f|LaB8l6YeG2!`94 z1F+_bhXZX$2b(MjTt$0KoHZreVGB68{a0?nTb>WJWeZ9k9dAGz4-xd%QVZ(`OT&W~ zj%3zr7OW$Yau(FSFzt@iFUj+~EMVsBC$@#>wRQ)qIiUlZP3g8Is}Uq=tVNJa*KDaE zXi=esXSB_V$^KyI&*VcucpSZtsAea!U&hNS<2-0IK@1>U^g>!(Yi=BCi^?_f8c1G# z^85H-sLzfpAvM3RjX!N>3ihw*r0tXy1ls$E5OH-+|A{pZ6<=Hz`TiuDzniCj5k;!( z@L#^Lgb=|8at#3eO1Td732j?!xpOv^Wh-3YRzaw|d$1ukGTJAv|h)I_yZh$Lgq8qg{%VDTlc_4;&a zO+L5Mmyp8)tO@}xsYe*Uh{xIB*E!P<3{ym9|$ zU8R9-vbTNygc`C(iwcPlwIx@A88b*(8)|5g|XkE z6V=k`1=GR;#oUQ0b>6|PS5D-65`&1FUQCJt!7w_xp;^;U{#bO=1d5NEI3vGXB`AxX z8T~6IZf5I46olAT9olEK>ZsNf#Yc)bs)K2}d|J^?_(>d}0o87kUSpvKv#!I`y zp>M|>ff?ZkAiO}xgHm9YWMWbpku!e?V6GrQ1O}&TdDTcK2C>rX<&ps-j`g3{3FKBk z)LA~-@`S~1yodbpCm_X4M7(&Z7X_yD^@^9`Xl3d5cpq^8qY9pOU{o zd5k||Tz@h0^lN5qx7R$5IC$rDa3BtyglffucLYw`4%^zzDJnpN~-m5qrF3C@NTNW7mYx2!m$*?-Iw z7;QE^NHg8(`kywhTEt?zB)`XTsNaIFe-V|cYUcP~s$Mb@vn<(+~B| zNzLkKc9xxIt#=E*-jxv0in%ii*uHeInkpg0})n@At|U|py;B4 zB@busQ$k7S5+#{Wz$6j*l?sd2m_%W#vU?;C-VH7PNG}s`|Qvz#Ty;GPC z(=u19@>lk1I0#K4TSm6(qtr+F&>YaCKo_!<)*LOgLQa)*Zwz)UtHxapWb`lh+TqHe zGWla+K+G>j7P8fdIE9i4pq}IASVBMo7JM)zW%nnce+LXCrAHRd_=rI{~nM(gL#Ld;fRXB zGJ^T>z1UrT^k>K_@kylVUggGOWQ=T<{|EN7&sHfb3(y-fVi`a6n@kC+`@=sIn>w(B z>TKU^#~3UCfaw3SKT&kFH`25EhZ%B*s?}dq=4Yj@9W+kJPn4n;b9Q=>Z5U9$#^Me@ zAw`gSDRoOy1%i@h(WS3WVzZSv-2}sKGK^{|ysJ!)%fO?iB_kEEo)-xKa)y!SpoAls z>$d#S-%@(D+jo4I8h~-awqix;kk2Hr$dD$bIzB~EblY_(EFU`Z zbf{S-V8zJ-lgMN&sYoSCpsZS97^CU(S{}QWJChq-UASHt(dAUZV}|qHe&)$`Rw!92 zK@-1vq=UFa)W?33!oW@>2YTXx_@PN9p`cgb_YoA=`*>kck}mYQQo?-fYzF@U3w~v$ zMxB$wfJKRTkGjld6%9`f#@0xI(Ox?Q+AOp_5Ty@S3Nzx59Y_R@vloce0A#RB6sk%C_fmncB-^Obb1YuNh`*|u&-B`Okc5T{AGeohwmZ7%CaC`Hj; zJT<`Z$W%F!ujzgkmI((p%*rgdKOfB!NI`23>ei5`xO4{q+B=GjVTd4vA@(_6A}kgq zBGeimVS^fwDge389cL`vKNi3lurl2!ZFwF<+M`&q!pgi`g5*b&n!t3s=C7C5m_>@% znZTN&l9O-OYdzauENR52L%nbSG6)JaEz3#J!Wd^F-jMC_PF8kb^}CgFlSrBR0i_8d zGw`Bge(r_@>&a&w+oMR(Wml16miKAzz8dtw8iqA=Zoou}&IimkAkxb}treQn?PnB% z#vQJQp)|hd-HbXzZ-s0NhORqRc{slA&?Ao0#7w_xxF6Ogy2(@agm8jf$bNwDe;EeI zv=Ig{M0(&>O;w)_Y>#_^>S4oT%yle;6;elK^lQO;lY0V!D-3L z@ar0MppcQGH=l%OF|zh9Bsz-K`}eX<@l%vjfb#O}`Hy)ett#C&J$yloUy@s>EC5-qF8WJw*JC1c-+`2{Iu94g5ehAmQ~lWwaI<1(XRJg!q3ba!Cht}kw{jW zd^|E=eEV!tZ#d>G#fz6Ro9z8(y~|emi;+SZr#hooYM{nvGRJfQIPi#$Snj!0h09ZP zJG%|4Ju2+H6;2=cs=cerKF*w$>nEK=S`IoHZh$x7X@`XyQU&8rvI1YNg!uM5YzB~I z@IkJq0Q^U-h}gQeaam4neGkWbxF;Z9-U>;CVSF;5uPlN_w$6Y_NmGtfqI1XTH*%+o z_?#@0?EzgvI3GH?A7wXaVy-E+tq)UqpFZ1@?>=}D8 z=nvOd@?TJ&|1{jF9~S$_`tFt4VE_O`{udDCVrKI9>#_fUPz5UT-@WnoqGr{$HRvf$ z?ICYRy{aRnZMPgwWw3`?_>YMN0bD>BVLT$0q=0g+G+p|V)^66dPmG@*$nCP+cWr)Mj9QPGQ}-n2%qcWZo#&>WuD zqt?q1slzVxThMv%s5-(n13lADj6*&Kw+>(UY=Q8PEbQlm=lCh-G;$3qdZG;7i%T_O z@eJy7MJ2)Ims8X zl|WG@<@3hnhrL$}5akkOP!glp7E_>4%{0f~mrsge5I4dyX8w+a*RUJk!lb@wqK^9U z2)Bl7KyDrV7NrQiE04~ZiW(FhiS2VF6{Vf6A(@A&=mu9uEiPR>uRYPT&$o>^;ygKnk8O#IB1OJj?w^wMI`ylp(2>g=Y0hdC~rp;QC< zhRMz0g|Z3;sg$R#3Y9(|fmN$SJ(S&3-$M>V$ZmB~d7@|!d#@1olpn|V(YnTUs@-j* z_dKWT7~=IeHcyrrhnhL7fsZodlLOV7k3CYSa_QrgOkJ0Yd;VKdJB)bIhEL{gndf+b zlOMg0a#xs}la=_Qv5#UO@9na|8!l%ky;l>5_=6BDEbgESZX7a9i-I57KC{Qy^NSw2 zf*5Q#g19}b=~;dEJ_XKmeAZXiCQo{nzrDf!S)Z|pyO(7A4F$B&003hDODOn17lZ#1 z43yWt_uyc>o>Xl$eYr#y+lwUWk2QXE%fXygCpAK#d~a;8d~a+^)Kz@(DcsPSo$3?@ zlORxL_Vr2fWuTZLg5>!Fz-^0B(ULF;W&a%r@Fh9~AKLY{8HxOK+AtiloEYTmKt1hAAjQ$M>Q2qu4b>BcB`3(dJ++~u;gn$FX`=SEb z!cmO~jw2D#e%bYBSxu_@jvjWp81;XuZRjOY8ABgWO~+FBqtsBdR$UDFl_vcFg56>v zhe9j!=2z3hW(!Dq8~Ls&Z`g~R6Uj9y;D|HumuzT=@+VQ9d9XOqTK8DOoLEYC&h<`j z&xK&ky(UAI{Q4&Y8ZtdI)UL?^xB_FLja!FiajbMih{pP9);bphqdT3b$J@ufK9QSS zi1n6F2X=(a3Oi+bchdFDvxsuSB^@Q@3e_v;Vm0Ku)ei07On;KS5+t3OEVRDTS7c! zfcHaJniQVE67;_HwA+kO!;OuLp~!uK+y#?6sqv9sbIP*}opN=WH)p|z`o;2RT%aY^ zdG6x*@zHNS_O)ASxeTK>%iwxB{+a7fZ)@3g1tJ*i#~iqAkjE#zcis8PRelgMr`yzv zg%4)4-*|pL|H$#j%KdId_|ECKZ|>rMWA^l2-v2U?{KtI$OM(0Y;d_}{O+KH4g5+vP z6NM!Ij|$3-pqyjP(v8GphLekoxaOya3w`5WKB3$x`tZf(sx=T>u)XTkCda3dh>x6jNeWrZO+9+p@mS|7Ql2O;-fVF;^@%CMJ2#F`oo3+qYCng zrt#2!BlB~z>r(n#x}FXWZ%-eGP?K(Po0T|{p`mN)Cx<0Y7=l_HDMgC^EuAM|{eFbv zSP>q_aPvX=&C-40ZYazipSCcV(&|ND&a^H}5gT7ot`lbE*rS1PjE75cm-XG zQX+2514JSF*juB!Mz*y!>`>YfE3jDuvnPiP;5mdI@Ivt9c)?w-c1TRY*CCXjz znHXyyJXT2iu4$L^yQa?w|3JdtS5T1tFzxWOjR)8|=@CrIjww80ImS$FiKSsCy`)T? zU%p%SH%d!KNnAY9`rNlW3LJ0ue^oZ{Cylfhq$9p78Q#K*CeA&U!fc7T5Xx{3bg%d$ zTk0Las6R8jd*b3XQ_%ZC|P0zS1jS5mQ$`%V~6Q*&ZVw?1G;6C z#;mt>NyQ!Ej;>o#DwxiHSXlmNn>C*Qc{NpbG_(A#{MFos!-#mklN;A(HOzj-HopAZnTv9vTYaJ2cyYa`De~-x6 z8Mf{&V#*hLqJf_KRd7Ig#QlkOi>c{L+?QLeXy?J79P6=X<5;8C{SDRohYGDtkw)C)`w}g%e9@md62PBwAqOA|# zfk?`mM6l8B4#e+_EZ^B{dj;zcC8AJ5F<+ijkuK<~K=kRXdknETP!9gVQQcu3la^A> zL;}EPvp&*5KM@Vn#~8UE)mydg35f_WgH;?y5v_dIOd-L*ENNGTH#G{oN)|ZA{3-de zuG2}h8X}FjLR_sSs(^s#X80~cd63eLOX0gdRZEsUuUD}n2j&90;sh9NYEK$+ zfQBd0{fIP2L#UL>LFU{{@Y(_(`XLAB$ylyGpHnHpNCUb?TN8-)(j$Ea`-Xw)+{^Sj zYuNLE4R}4!jVs$?_bN`Ji5&3wUJ7tapoh4xNHVG{LWx4XUFc27=rUH`E@tu)HHs(Q za?1@08`UkH&0oL%=s(8PXNKJ@Fic5tq@NF(ktll!wI4f4b24?KP{B$Vn8X?=lHi?;hH1fm((1df z2<6x+kab}*W}|_GOqELLBj5DG9G&R8JNTD$;OC3qX50p%6|(CmpS2~{1ky#i=C?Dn z->8lK3$LOf$8Vj|CctIN<1TI}R7d;e0rqYB-h(+BPc50g;GyeBV>}r>rW)d4!Hm~0 z-;0;F44DLL&wUruPB`sE`L9?J#(E&2SMGbu@L%?z9j&xQX0Q{P%s*BUUp~W>@+1y6 zXo-EYx4WiCn%|M1rNabL*osltw?RwC1<&8*OqJ4!^;v*AQEyF&RQwkw(Jz30TO@ji zXI#QM#^2{R99^0weZ9Wowr~AoO&%5C-B2}MOavsM=h3xyA6Asj4-7^JO67#!jcyPFJr9x zZE`4n&=>dY++-MDsmKLUfi!ELhe*t z;EJmk=`j_{Ihn4Nj$&Vgl&m=vL8TF+!;lftCQCd`-CeCvb2ti%>>U>Vj*2>bxhb*k zL#^eJYD!Ub5CXJuQ@j@&mn}d5X{sBTJqfYVZ2q3DR3A74UT)TSu6!;IhUEJNk z*dw8b$kmNHcAaH@#SLp(=i1H0bAn2Nf$yo{4@rML=dPxF4r$pZ_p;c{gt`b(yKbK$ zH?9veoJspR`FG?U?nj>)*x9EQcLAPj?sDnkiRb@ z>K#+9xQYUkoYo?fY?*Ognmx5BHGGLuse%M);!w2?QFz&B;H6K3gF6_;uNYYP8^9vj ztj|~OB)%eU6u(ht(uN}I#4t2NerdsW`O;@WLRX#Q#V{l2Ts_Y6m|tx=RrC6aifwIe zdRmIBV>7AM%EhufEN0dGE3{ij;EZxa4$b50!!j?>&Lf+52HS7vf3$0$7Y*6V2ciwS zKL@LrWAYGUi4lJt=|Lu}B-5->uaNrqhHE@(;8Zi;to8HmUrVXU3zld#B!|<(pH%Ux zhxg!|3VU{z8^_ogQ{gWCLc}{ZQ`BakJv1@5*Jhq;eF^*{!LNqk&QcR6Q-B0!K1#tn z9|0&Tx=?o-7At<%sL`QDm8_do0kq>qGbWA+=-F8kj6X3PRt`W(TM%#Oa1ff>llXn? zJhmlH%CxnnxqhECC|D8N0Fg<|S#}ZZ zG@qw#AMq0KcK|D|u}a2?&I7S#lZN(%;U$Y+C0(9)9pHLq%JK8mei`DEg+WY)IWk0dGluH38tJiVR3WkXmxH5Uu+}7sT(a%F1%ObA`XtL zLIXvDIr_DZw`RYHHfU6zl1=O`7W^bQhW0DumpNY5@2wrZIq1acIafP33f`_gHt90R z;53kiS&!{XD(BZ<->hrvG{i-o2*_NxekOM$-as$2&L(kD%ICY1wAPjMx=i3nM*@+L zs_pzul1yxT22XQZ%MQ!DK+55|H?r%mj6t>>fWOp+PW;7C-V%b+)L&& z0q^VM&v2B`{EmP)SsVuB5&q)oE2zW+{7R-;BME|91I~}S7gHXvj~PNybF!jlxQUe0NPaWgC4L_%*LZ)BD)Kn$Q<+))0!XOXDRU1=UG-Dw{5SPeN2AH#Tf+~OtP<=6J=CD0 z@{vP&wDIC4DX`DNYqqSF+51xQ%~cEF>v=PS>-dR;q8XgBGN|yPmG3akV!Wcea9Ptg z2qDxEac$0cnE00mh#1J6*jebI3y~glcED{CzBKvOza&d9_ z?*yazZwE88GWqWWWd8pZ(AM6@(8<8j;lC4^^?w$b@ju7@yL{^=+?}{W@Y_-N`^Wn~ zjm^l!OlNLuWb*HYG@;2z4o3=^wN=g5<>?n8$Px{f;mrW9-xv}}vj@TPu61}_Gq|{| z%hL8`&ja68MXOU+m#(brf|Aq3Nl9iZpUEcL78`&ofjX!<01yz+kIybZS4}{1;1~qN zuOsoV7oVVrFu(V#oGu{|fq@@G{rx|Ny1RP^hkAN@`+B>(33~_n$O%YD`uhoq2#E+@ zY^1OG5dyw0ghfS#1O$k?d%KCAyBeGL0X$hi^t-8$fPeuI@c|+6cPh|-zyc5uS?fi^!}GQa3Uq64IUOhpn&i1&B*m03SdzI;s}-8aH?3%hg=jVfnbt_mHDC6NH%$7%+LWwlLxl&<+-4)0gVXWfcFW@)VAMbMu_oP zaxIP%sGSGzox5~dXOGK5#U=kN0LQwPoq;rI)(T?QfsnlWp!D)kl6E&A6C*<-rKxLv zt=x=6HL-Xe;y_iT6v96Mq40^kMQjG4C%1tNabXu$XM-zdeXa0+z54*$PeHvzV6 z)K9y3ZKqh5e{4pjjsZm>P{lnEkB?@CvYqTZY($l*QKGzf2LVnGZIrj-5duAhHhBRB z)EG#9dhL^-)6tiQ%5?k?rlR|XalylA`aE$`< zlRQTN1Wq!`cl~ldnnVL?Wqe``?{PA4+$oS2kZW(fwMa%i_P)gZel+Y)W;Xi|EJ@-} zOWf;vkD`H}{XAQ~ooV%eu|S-K7&^bDy^8!A?b~Mj+FFDJtW26H;lph5RXKp~DOr9> z5BbnGQr#LmqKKQK8l!u6yRtU{j4RYOSX@SR$rM8K<_H6@Dc!)EQvjsD95{rYuAmH? zdbs`0z#Rf*0T$hrUeXF|VYay42~D)l1AKNmTAQGTB8Gd(YO5PqTPUVl-meM~!%yfs zCNEflDFp_(4L0p;WR-bMI^%y-9~{TJ@7WOJ*h}kLpvU$NB`V*inaPl~WheO~6szK2 zw(^8Oj5^L9b%o1Q;qbVvyq&}mm)w^fC0kd;U_gy2R$}6Ccg+677O8IMP&z#chl-gC zcacqLxTN1Z!YD|H3a|@ELCWm&As$1!jo+JK(9I<%C zyQPBZJIN+n)ux#F_VDeknvC6RIajPJOzWD#4b$ZHo4U1a4OgS4ItgEvURapd(MZ3l z%QNOzvGRWsm;^FD?_t)3i#>{7GfCpCQ0{0q#}@&ThV)jW`fAU^Ky&C`z~RcJ&{c#i zFhSEDc?e*(e{iTJ+o7uL%C9*CmoqE-u2rz*S%)kv&zj(X!z2aGk!>hv3*2&Lhcc^> zrB2@|v5E1_+HL92r*eRDR983P=P$H9lZnvFy0mKKV%XHFEh#<<14C<}pDnOlDP4nC zv=^6QA{;Br>2(k^FQ4~;?|MgU+DQJGVukwt~;>yvvLw3mYGaU z$f)?Zmqw&_=9O7E4>wEDDo6F}XL0t~8B-_QXb$JEl1*B=@xG$-&^ZFKxwXFxh7OXiC8luP3-(Cu zAf+9p2%%M1f}yjaL{`L5y>Q8jyf%p6ARk1BTMl)BkH3BpIv z0q|?gr`4eg76qOupbI~1|V;NpL z2IIH4iQO&qxir9*`kExI_2R@|Hr?>Y%}Ve<8j^Xm7#}-`wlTw`&Isg0#8g2>dL;9r z8o=%zQs=Z1G>uje)N^fRv$lwNFJ+L{tx}U6jTIy1{)8D@4XcD|fpA%xBYm|N>wBQ? z@1G*P-Vh~aM4kPea;l5!En(eP2r06VdIsQVf+0mgeN%N2beF>v$z{w(F+=63vVyba z)npt_rV#N*lqTUCr-gP&=(zAq2lvrX&j;A2wEoMjgg6^RbFS}1Q5sx)*Y>GnBH5Pr z+-~Y#83sPW$CoP83U9bAbFT+rnrJcgFf?_!yISyxiB^q)jS=HjQ3Oa7 zN$Ca@_HK4&G4xg5Z^?A+VG_fUf=anLv&;jE-IN&1YKo&E$sFsRxdRx-18tw_uU|4C_EoD$r^d{RqKw3%5CHGd}Re5Ox#i=keIbfriekd+sT zJyjsR$VyhtPsC9WWIxGmY@6Rg9r~-MOI^)FvS8AT#~`V<{Oaz={0z(kl~CF6Qr8BY z@G>~3sErlHY>CA-kR-&tkMwo|Y{8Sj3=jQ19T6L96^r0F9~aSw%2q@0U@3M|phG3G$spgljKw^t5f7pd`C9e*=#QWDI<)2lf~%oN z%6ux9iUPbIK8)NC%Af#D=Zy24A89s{$QSO#Q?Z3S^{T{)jlLQpS^}vs1Yc&Tpi6linP3{% zz_h?Px}@MYbmx%c3Ay2!OR(=%SOXy(WMk}PRy6brxag|oDmrS9=!_vM{E^)Ui-e!u zilFhD9f*c@rlq$5@ZzQ=#xl&+5axo|)>E}RQoeJZ!Tz>aUo@1Q^FVWhWcrHq126rU zrXlm89e`9!vo)X5Z2NW-@YBJkkqSoi2WK=IDJhTYTYivg1|sBtj1CeXX`F+UH*h? z+vN*g`>EAI@xhf!TOluUpIO(KNP6j{g~ei9{2D8^>%Dj&ksE7y=v2=Mnt<}UBoAxf zUQ1RrGs58D-?6aXwiZ8`oI>kS{H3V3xMqay6RSe1^_~#!ahsw9+3Y9n5YaWdD5%0q$;3i z5$n!!{Qy7U2wO!{5P9Hy;XYSLLS>XB_6%xEXKRNZohgOYj!a0DaNf3I%liSmIq7pJ zB?_{Yx(;vEqC%>I1mi--o^_ct6xjt3`L2a?gpGS}D|E14Y>dw?)_73}lfQOTJ~gxh z`z9P|Agr(l>~;;Lb>qY-S;ieFz2+jqJhfgNJKsN>91(=1md~}X)L)CmdZL%aR$r|X zkld}bt*f}AD}knmXNUK+Ge1_SFV=L~cxE|J{@&5S-Yd?826nKz)Q#XYo9pLSlX&p) zg}8*sk(u8*E!wKdgr>y(Ec@>wKLv$x^GS_}m!Lo$%ZoP}uhlD_>z=Wlmf?BXm+gpmmt`+8iLYG-K50db_Xyap$ec`C7NU{LhQ6vQm_u z4lV;UewFYI(I};Xf;Gb&>x!RGHPy;xVJvj|a3}fM5WmoXg-uEL)EX+Ag)8`)i>)x# zN)MUq6ah&>SbOg~lad?1>T3jckOyL)J&!{&eCN=lOvK|F2^j8x!#2OJTHd|TE(vHglCg@_)LrGl z+h&tU*`e!eWS3CJU*F(Pt|Onbb$5YTc10AsfpJ=aCo2`hC072{SFpCT0x#WsrSYVD z_f>I%Fm-s>nZVb4r~?NV&@5n-n_z|IvTXqv_Kv|%sRzq|nV*F*$2qu#`f~PlcrzD8 zFn-;{XMb|c$UNiC+(u*P{x_pZA-Azx=;u`+E$T0$K-+=oN@}d6ixuAD$Uep-Wv+z) z-|%T%i4F3K)$3-}_hQv<%#x^M2nYEjp91U#7+1IqTumv&%vkV5Ql3M(`ZrGuNd;C;JsY5-1r22jn<2JcF^f{Z8Kq-zWd z)h3gk=6n`fst?v)LgzLCE`OdjFt-f#4?#65<|lIkdoC@a1(e`vQyWR{f0jzN3@PF7zbU%ot72MRB3XdH z64T^L$+euiJ4JGXNBVk*z4@0=w zWy+(ez5O}-SgVDcReV22#+Jx)i#$gLkZpc6hxW+(S)|W=7N`e3l?lN67R5dstvOx)Xgo%iVws2j^m?&1+Uj^kS0Y1J$(hGuSvG^>WRb z)!TA3m<{U(o?`@Ljt|2<(NWfT{48H*mS^KHnuc`9_UNML4QhVf-Jg#FlLicEQ3n#K z>ymbII3}Nc>WJKMW$p3ZVI`p8UB^cZo#M0TAr^7nW9#s~D3DBU&WBz{7T?vsFPrTo zOtEq|`Oa^M4C;2L;k8FZYdeuI_!KcL{Eq0cxNwgAOOobv@$4()goe}yE2~TbFiYK5 zGNzMp%Nb~)ME9Mzx`x~fFEJhk5I-L|^jlUzWbt-p+ifMvm1o9+L%H~)Eri6#YeD&~ zC_G&q11ucO3tt{qO^0U1pZ}Nu0nKreF_fAqlU=T9aN^KAxe0K_4SnoZOpu6=AyY-< znCxnVLX7n`Y2u{24dZzD7c2vA#!5~2(W-kV07gXlA{W9MG5`5CpxKgf72qL~N_TL3$JoA7m_vN-G* zfPt_74`=rfBuW%!3Ak+Aw(WXl+qP}nwr#w!ZQHhOyXN(1)6+2#y~)VkU1Tou<~{#+ z@Ocu%5u*q3)QQIT(tI%Q#v_B06!f#~vOZ=1g{2KiA zhnOE%+Y%VRMEt7HS|WHH5WePo@7eYCT8A$ZJ)=VIFuAZK?~N^!x#kHDKP7AP!KcBM z+7chwQ`iA0?rLou^+JrENp9k~&Mp-ri^#E_Kp`6^CEQXBL>v zoR}iQG|a~&tRS=dR)a)48h}#Po5Vld03g22^|~E3T%T#IkfQ8L4bvf?VotKD=4N%z zt=<<J zu_;O>kf4ti9~f?L4KF}wL z@Co^oN^<;|hl*6UE|qX4gq5X}JBVayyx8EcOZ=ch9(5qxX}uZM+m!leNAEALxLet* z3TU9{JN=t+(~>&!yH6yduTJPs9CnMX!+a1E&z9$nG~d}bsywdZKT+Sr2B7}YbeDuV zPTJx_S?u&XGU9$Qx4YDf@PWUB&RH)L5Sif_Iy{E(8#Qa=ooin4AYo$ULx^ zvz{rNtrBI;ptLo2Nut-Ow3a9i2f0>9s4@JiW zc1xyz!IV+!^a;AjzYGViw9Uz5Wca-=CBT)#ZgsBO1DJu#6yFQDW*EP@x7iSZ@YH`pta zx`*}HBQLNbfWB6tJ0sbqJQhQLh>en`ygyg}ku2Jdbf^Yw`0)iMKlg819ZsQsPSNIR z{JM;>CdKpVBq|8Y)|VpHnLO$7fkuD>LPuoJ|eLn_ED?$T8*J%h1 zHDvhP;FnRW=RUi|1yAew?nL;?%LU`6>eH&(pT5h-hpD7`TlK!L4U-M@ci9`5<8~Yg zfEJdO8Ez)cn%Z`vs^>h{$uI157`?jB01ET8B(04$$r+LsZ9b_*j>M^e>|eVQ#$;Nh zJ46e$iW!HNVAJ1DsJ^TC_VaR96VNhx~mZRK%V`|4#l zKrZsV#mh_@C+*=^+_&Xq8xG4;On_f@U!v|d;71rpVo=a;JeM}J zoW*7b(doXRkx{Q!g>s^3wbBEG2Js0agr5ErB?7te;b8V3k_!T74tqd3ijL|canXVk4k1Y;6m;mRBfWA7P5d-%{ zHy%U!A#r+N1%>~rUwX8bpM?GSI zOY_x3ocX1uOw=owu6T{eJgQ~$w25J@QR(|X*f`4V29myA(6yi~$t|>@L?JT{D-PQe zWo!9Tean-nV&_pZ7BV}nk?j7zzWdu{-$Kemtgspc;Fv!ie<0hHW`?T%=KV*PV zje9mH2VSzu)t6irql;FIh4OkHF3LBDy@~evXO9MgC5!l&%4`fTH4ESW7d00)+IvYh|cO6Vgvbc+AB_$FHmK)(8itDi$M4HhyxK66*@SQdd5DHS`S^>~L; zYakstP2CT+t_v_)o*9^MfcGx;C@U7`6Qqa!k-2XkDS9eg(P;+INt^5>hXI9*9vVd( zPfId|yagN4sqM7imDswx*lVl^BNwlnlOD5nJj zpW1w%884$XvKP=d86zsDaNYCGz_oDzeN1kKi>j&rw})}5K&I_)X%+midqEihGvn)G z)B@#B%46bA1Drrudq`(6sV#@3Z}vP#kK_FZoN&&}(!`|A(d)`P>A!)Rnpe zVxT&x-2f>e^q({5J+PiH2By_kqyq!%uJ@s0EX4Y7FjoGIzSZV(IUs1V{N22TmcC z_ftjPhuU7pBv|AhWhcEm{P(s%ia(WY`8zAMEFEOIik8dU)4wEi3Zo?jia$-+aE4v< zd#*hJmWK=bVNGqXKCkvDqzJ3Kuj-;X4qB+|%@&uo79?wKd6X&(xw}bAPkju@k>bEs zhc9K!6-O(G-GCQFpqj+U&{Dy08rq0N5S)zQ56*96QmZG%>@8VJXxUp>_b907$2Z|a zVU6YeSfm-5>4nq9U&{AyQGpD#F0Ze_r zv`Qc_Xr$aiCZ32kY#t{2rsN z3{*bAD{-1LO5yQ0`h8>n$wYjX`;F*5+Fv}hZr%qrq4`|6#*PJIWMuCd&n!qua8O8Q z>9bM{DmcQj)wZ-c>W`19^=gtsX3GC7A<;=N?y!6wOslo8oSGoFnIqPyYo2%@Qb>8Q zGP>GA)+07_=qHmUMNvcyZX>|%Khc(j6g;~TMkeWzOX5jvLx5@zX(ml28o4%`z&9)K z?jon>r}MbioZzV&{ywy608|*#a7n>C(SXF~(|d9) zF`j?mr|J;i$v0c>g65}9b}5gbxxbf!rNYMgA#^MB59kW|7)P{|W4l zuMj6ago|41MLFUqy9MImR>lpA1)^L>EqdC{JkJ&TOPO!6#;F?%IRtB7OL=5-1+Qw( zjXTmGuwo$oB6i{wjil$xjs2u&%AWAJc``u!hw@==3*r4|+V4xbbn+C>pn$sLUd%z< zDhU1p*WrCfMQm^7gEHK>7o@%A&AG*-Z@ROW+g5wBW(2wZhy91C1B06hmIno?X$cW; zbO9eO*SO8k%3pJsEqzaWyuTNC^@+l^dw_r{Hg55S%5AbTpubPm{YTmnojD>Q!%dUP z)(v>mW$UP9B4=zAe$Oj?x!nS@2>1*@ZPL654At(sV`!HtR;8eQs|xh1lPb!#W2uIACyR1tA2dmqXJSE zXE@?sep^PxM~`l1bam8BRNC1aSH&xm;d&w1W?t>OD`?-v*6q5y80@&Vdf zPOL^ZIwB}Z?`r`}X&f91YG!{%?r>2h@>-X#hOqM~OZbr%; zTZh0D65_T2v3W+1=_x>{iJT_~Bgw_ifQz1Y)m6ZgENTtPiFi>pf<)D{0($Pjo46@% zhbyroY7X^QTH*cykvjmmLsfccOaQ=sBgot;|AE|@I>(t zlKUyI+}zK#B+UIkutkFG+giQ1L^Q$`{VvCzuxxyTBPj8F`XZ;HkS`fWouf0xRIkI2l9+$da{AACSnc0n@0R8vjF49y zmpH+A$<}>N*dJGBvSPHFzx=nBs#T=u8~2C4O`K&CP{)2`ZxVsL(6)ti0LA)`{_2u- zHkOcJj`$kpkn*N9j~sui@mc1qGi1y`oSzSJibdzw_n>QNzIeWSh!QW_mdHMG2BV1%EaFawEfdbOCfWK8`_4&aP-a89*f?TG#QvJe;#Fdc} zFCX|T9WJ?y&8MNWiyyvel*PUF5;0{jR5(?7=ydO-^`6=s_yN3ieYM@xHrvIQ%gWNG z2FNN{nAZUfoSKm##Whi`2!;q!KVFRtHmXw||ME$&=&Ecc6{I$4nERZVsK3e1FMn

    ZU$=+}qY^kBtc4?xWEd09sehgsuPvI2C(6JO;YaL6b zCCpzyDRSDG)5VwV%})NQbHLQRX3psy>lTW*n?9${p4PzHq0k)xUif;RzWt2?}tP*>+@{m#M`6|3onDzNrb(sUW?p-<@N)|1dU%|l3?y6 z6@{rg&AqYqR}v?|x_kelQ=j>*Im}2prihSn`mQE%6oL{S7@1-3&qyrAp0SwATvuSgobGncx6pz8867O$$#n2qfQ+R{(k zYY>AU7_XG9Zh&X_Sgu0#%2^MM&Y=yKOXen}Dzaf}FZh(ScAV3;{Y9uSF( z`$BsXHW%4K<-b77%9()r*OOC|G=Rf5=V;}!En~oY{5ISmg|j-l*^j>=znL7Jc(V*e z$YWPk5vol3)e^v;F5$_ZS#tHBS(^CR0mDgG6^ImhX$q$s-}Np28)k#!`~*R z29F=#{a+GS?;OpZ%~kfC{2sxUS} z%ls`UgEy{k69nEEe56!D3RA!yas6*W6+o8JRj;w{ApM$$bc}vg3$frw9F+e`uhidd ze%cm0OVGa1#I~Z-y~_|*lfCJLPsha1Gq-;*mc3@~Fw2)5bw>P%+(10KP8tJ(&D0$! zK8%^66hfs?tg?xgV$;+3u=Eh$>^i3MLw;64l9pH1t8QU;`|Vj1O&bERl#H-2u)Tsi0 z{T%>VSshO8mR3F(?9PB)r4&NCdC3wP7R;ZH*cR3ibK+AAKmG|=0YKwTSQ|d*G$#hG z2&z|1<2(`H^XE5N@P9sd#Hfu|kA{D;P?gz0ge-+>QBX2$t1EVuME|9~hCZ#AK@R@Z zDjSZE(c!@>-~-5=g1SjYMG|0?5l$R~8j7@CgH%{pZ5&sgQ49#ZI+1~FOek!h=cPDW zK17EMr9}{d$e`pPv`Fp(>_jk1*i_gcA(QS{5`tdNS+etwK?#jOoq&z0*pOJrHDbc5 zYtt7o_Fp`5r_HY1BWMEqkVgA}&7M{2GlJSRG%B#$fPymJnLRHb`wHKl|c0sp{!Q= zsnpYFBnjobB%DxAPE$+K1X;U&q`^C*7?Cd@xTAS-X&nO$Fy3x3lxM%H9K|D2!c1nb z$?&yieT!=aN5$k)#{LQWeoWeVc+%v2!S8D*IHpZe@>XPW#K2uPfy0s^_Q`KS_v_J% z>4zov9%iHu96`@PEKBVvEjW0M=hg;||6@KCU=-df()HeoEaE(%=iTwlXPbzB zQ8}=@h6p{XS^RrP>x6D6T)B2zv$p^Jz|2#s$NtBeIL`+h^WszfyPcxP#fN2ZVf0p{ zDO&&_pBB`XNYmS1V0-o4M)jRxVdysa{n>DREn^wX&ix-c!4g^z%W`U$vztGYOW@orxl0C#c57OU}$7x3iN|t8tKMq~1 z7rMSw24W&u&Z!A*2;~w$AXhnc5c1@yZ|o7^&NupNjCr9HtPYUo!cj(Yi|}UWtL?=j0(JsZv-+^ zUI)bUR3pP9rKp7*a4ZzXQi2J)d(PA}b?E|ucFrn2cB#f3fwQx3LnDsfZk?qJuOuDt zx1tPO4UKabJF+Y1A#%O3)3{3N+aL^$;P7tBn~o2dUkKoT!4EYKg$lj}LytqV^z;>4 zXPqUG$f)>fLWfZ<@YAmh!;X=6@0hHe*Bc5GLIy}GffUvv^}cdoD#COwTgWH3tanwr zl|E88?NC_aw`Dr7(Fsv`R-;2%dI^!cf)HZ&0edRPRNQGxXm}Q#VB%`Vi9#$q> z>Tm|7-Y?-dy>?pL2(mm9;v7B4_6i%<4D^Kr(UK|qHAYv#y%fnWmanG4E#5)N$gSnB1 zs)x@_@*&|0JUv{}R{X-ZMh^m1)sWsiNmSK|h)TWeT7JwiFxf?+$S{@7_+BKdu(Vm6 znWaSMMIIN4f3vasBwja(QWjvHBUYrwyk4jy_FRH+rBME?utJvc^}6tElp%|_wPEEt zQM7L0Rt`NGe$g@|d<8BL`iUtI1_H%<^dOEAM0uXQla{r$F!vGMVk%u$Kiz^xRlyqW z2OanYtc-XfrE)|hwX|W{0$p2!h|zhE>wi(<+%?SP{tzuCSm>1?*u~*qZBW*Pt~od> zbc7R8cI*OU0>sxrrAnFlVz)F!bIKN6b)dwg?Jv_0Mq}sJ^gFiF-fboY`^l*dR)98^ z!#}2=>g~k{+ZYR##pvzxu_te3<8>7vQ)ZTKPa@?DUR z6O0{O%(ngQZ7Wce4+w^F$7}-{cGCofEO}VYVQQew%orSEr5bJ}D2W zMAn=rTK{3$0|7WJvuG=oeq^bx>&9}yVfIY+=mzw(ToIwIdeZTPopnU{!AeYYrtzM1TJm;`li6e!Gy`-`BIZ5Wr zuG1xTRwoccFT;OKFc21}tsxXGmCI|ku!A*=eI8@QcLn~#iy&p0mW@WS*Zs(g6=WeK z=o%Mu-?seX9?^W=;wS(+|L^Gn;njS*lBXF3l9lZ@){h>nkJL9y{ne3evInCm1GWQK zll!JZ&fqD8~nz5Rz9iHN08bCv#e5rd3#F+h*5gpqHDu!^053!|cxV&&W ztsgid^$wVtUgYuu=6^~1M&S|e?HX0Ei>UrCFC;HGPS~j=I!hz>IoNT$+mhaRL?0kz z7xn5yx%u>07}2x7lI@PjwyTd{NTD4cP~xQJth_q9+S~EHtai-H0?=0%l&2qbhgtm&*nR!L(g4~doI_kEzY{zz<`jMc}mLbv`pq+ml*3BraFW+x4y6c z^#rwU$5Q&UGq$GGv_qt(#vEGQti5t+baU^Ch+Qm+EGujr4+XrgqrqbmoFu9{aMz6J z_6^=qF?I??C*e=KtX3$Vmv7EPnx@umV$&13c3Ft)6B^Vjq&qa4@*8t|%(N##k#FLM zCiCGtzdu}FcH3Cx6RD8|d$RQVMlMi@M3$yD3(Maxa&8Q?sE6QnRNS+M+?oS)aM3NB z)vB}|fQkvX)5z*d9c6m6oyLgYqhFNq+5#CPP@A*kwCHdsq@BBWulLa-yjV9hC;V2r zOi*&{0hyo~3yE%B_h+dl>sR;W7jrOaHCpN&00f6}h+fiS#B0NGz_KW0fkHu0k9<(!;lg_*@kAD}X>p%-nM=r?#hIT|U9T9WZ? zq@zaud_E+(blzab{xdZ3`$XtTM?;mRpFt}4@qIL9p8Xb#t5enwM@kQg07}Avz4T%v z9i~Sd2L7{Jf=yS`x7|kyiZ`|6VFSo^ixH4nVN`ESRZ3&K_eRCt|A~! zrhdRfy?`78ZCHj9l-tmSiL!xLoi)nD1^k&>s-x{hzI4qa+Z=QI;RU&)nK+~Cphaeg z(bE7d#rS536Uv#?kYviANLfr;$)~Ug7sOuU8Y7L|t>3J=XJYLpMtz@yGz5xU+~c^T zuVKJy+R+N*;*pcKSic7)>;Bcyiw6AN9;B3rJ}ue#M~0cqMRIpDPI|d%v+$ID7skZF zTCG8mS8iePdJhA5^sprk*Ku`ey?*k_RM`Sp5oVu;5tucYXwmXAtCJI5wKC5FhGq?U zS}hyv>TJ(PVH21|EW&Msz&m$Omy!5J8`zv@BBm&A-d}t#oY?pbo|O$~E;r9MA-~_0 z0&}ZiAM)?2PwP-a8V3&EI1|pd(Ag;UEs8g0V<3n&epZ%!8W&tCjQ^4+vMb-w7MuU} z=?_gNdNc?2OTyoHja)hMvoUSwV>dJwX&5`T8;D$a72Kq*K3@9(QNn3Ni7r$~R{#r? z+J7f=<(IgU)}9bZ4~=ksIPA-!32ot_VXdgj*9UG#+NQi`dSeKHYDVZNM zfY6=GwlRHu>FnO8k*~Rl5|Vc{p{vD*Pd5k`hT)%IMI=)NE8waeh&s`{8pNQ|Yael+ z^ms2Eu(VWFSu#2Qw3^QN(x3BSnBC0KqI)kBc?GvoxYZ`y(l!~&gXOgBVLMFwqWzZo zax6gno4m2n3c#!yFM&C;7z3HYJi*~e?mM-z*`(ob4!XIFtC9L98FuixXt)1loX~HS z!h>Jwp!Xrr)1KuKCVc4rppU+>5(210(vtTpt(ntb?yN8j}s-S z;9v|KVZWx2Y~DzWo)OXl4GhH|7hK$vl%ohqRzg!*$G`V*-&L#`@!{(J4P@JqWXnat z`eaW@J)RM-1j04xIZjO0P=`QSrIXl_C7|p)5``1C8&YguE|L z8PEF?<1WwRfCBke&fw0E8HW$^w{dKAhx%mqSED??a&QxMI)#Xu{J{0S8tjg}B9`L+ zd__zTZ&Q@Ju50>~6Hz^-H@xdf)O|kH@Nzo}obanXp(%v&E?=TmJBB&ewB=Om?}_wo z2gTuq#_2EbrCs!&i1?uFcovAMMJ&4EJ%pWjbw)}xChv5r<#6hKlq+mU9oG<)I55rattVMNFOR61 z@>q5-v)+a0{NyV*Pmv=877JUJN5aWy>CN)oX075G_w`5moazdWA(BPD8*r<*wsN4i ziEv|~>c<Y*mBf&!~){N5I_s^Q3 zXbui<8WlS$msN|UDqhK-3$w6J+OllJbcwm^Eq*A-o1zs%N8Y+SCOX^pmn4JD?P#8E z0ie>Z)4HLUe(b%}v)ktfOUaK`S%4VT%k!YLmF)*6`tLm28L_|T;{ni$6H;5NJYH&l zLyG~!)bUU(Riyk7;hZWEc}bXD8!m}5W`J@6+#pX1vpgU_JxOX4j|TegJS|6R!QQKk z^Ne=BX=C*uO}bI38ggvW#fhdoRYei$g1c$hw?Jj!PVm${| z+bo}ZncJn#E`B?KEHL|YQb9cqEDyB84cQ%MIznm-o-Q05nll1{Z{99`fLHo46-;(HAW!>$^8c zG2KqH;}inRw|U6#@9kxe+K4CE0a{j}4V*;Mw_445Habae%dzn!Q{DEXYK2@BL11mK z?fm)R+WKEmU{hh6#NKLAqSL@?O*c#)e>=kAOqiaTEG(`v%?G6|?X{Z&U9TDjAC>I( z!!~^r!SMJ}_Xm`$Gxf^VK~xuw9ScS^7Q~aQhl0Ykx_vxd z;7^rP9kT`_&sBG4p~UF}z&JmkieebgV;R;j-*zvNl1S}@7jCZyqa^4ryWr|;ep$%| zzyV%ulVLrmJ4?&ua48NuX*>^@FZ>7p{u#@YehVPl@yj+2+pI7e3a#XRXYSxJI`u}M zOi&F4UWOapvl;*+Zv?`Hc?D-2xV)M?-IzHdmhl{6hS$3GspdfYe&%0hJUS)z`&z>@ z99TVv3$Pn03XF_^LtJ7mW(#!o7$692>|yV7-V`uOi>y0A`FI`KVR@r$l&-488TTEP zMGQ|+fEg_9|Hs@TLpDpiMcd>nbgAqYf#%Amd@lxb{dJngL!&|A5B`(Tk`~O8 zLB7TTvy72OKz2Ju-uuOmLEky4F$8nB(Z9OGgGuG3`q66b-3OYjC!2T0(ez5^ueak^E6w|Wgen4kxK~7SogCMLS_=jQ_cA3pmTyk=x)u^r1FyW@>ggvH~Pyt!&Xn5aqe@j*b1-;wXF1k zm2t@mUA0FNliQtm#2c2nEf+gS+NOVty&$UzV^osN3{R2yan2cEeEH=rh5MK{VeWxc zrdewzB*^bP`=$PZolQHNet zg>^}N_KRUz=Q;Do9$89y>6P|@!UAS>4~9_54F=V^I7dmySb`T@NI-o~06SoGo{bqR zJZFvD@pGH>a2(XL29zk3OqeOjg0?8#&0!bAzj4h1CYD#CGl#?yMD74?o6_oV*Z|`* z-g&fv`1Qu1bo58-F&T;Qrv5af_mZ#05^g!!(zdnbt#ywQxr?Hx->t*V<8qcNIZ6YL zYVeU>E8g#OEgN_nfHZ#7SiN~GE#p{1~Offu5{53zMYEyV*V(Ccc0d@0g*qEHy#oadlqZs|O703;x=kxCYxP z!Oi-pFK00MWYC$fI2;-*?sn=2VnKXdeZ zTX&E60!>Dr5m>cD;$7*yO^*$Zf$&?!N3n5==#^u*fr8Lrzy8h=jhlUZt~5{9z9W_t z#F!#fR;fhy+Yzj3A3BO_V&d!|@rKppf2XjItPKx~3C;ZYIp#9*FqNERPgP?VtbNQ5 z?kz>PK|2Y(X54?xHm@86lv>-b`o-nEyAI@i+Z2Yaw~AA^L>*==9ln#Dcb^6~qRQ-X ztgFl2$mwLGjcsB#k|BRyCgwx5I6Fq=&GfHQL# z;@!ykG%J=o9_Ir+PAcPK6hi@6&oEIT+#T*KU6((t1|V)F$Fy2kD)nnE%Mp6Ir&Uzc z!#y$!-T&PXd&lFfd~mJTG(AP zF{-F26f-l&ifEo<5O=Gn2vc(mUlW3MvNyM?5{v#+PxIpwW4z`Xl&SmzD8`u7cNFe0 z$1?w0&FOoz%0tpd_?5@B2)&6U1>%-` zjAU6wwTn0V+wubw=c#d0+a;l>UL?H%!8>1^?A>F5~H$;s2yBm%y)}TB3D$+%J{6&BN1{_@3SUd0kn+ko!?3@# zrMCqaKS-c1D_MSkg^G@lnbG(*HU(-9(&;+1UA%=QH9`+eeul=?=KWS9OkK~_aqqtx z9v2-Fagmy2L*gsygw z(AYO)kyu?_fIU;{XrKrkRc0&F^94mgjs?W}@_r45O&FtIOha@~LlRy00T(n%5ihI_f zr_!b_fqkKT3lZ4nyaKo0P^^U(t{wz@f{CelQJWg^}Kh8jL>^fiQ z=W_||TIF3sMu0wRlca-540M!4%N8VeZY|yV8BPt!t^c@cM}oRLO!&7;c59ni4cqcX zhbw3d67)usjdSGEWCt>!orxO%o_1JN?&ygMu&*b4B}kf6<%{b5B$t;ZPxa4g?q=Wn zTeb)^@LjEs8~2Aj3CZ5bT+D0*WnyJ3D^xa6^4!_!*IFJ7!3ohzWyX~N){Us3cze26 zx)n4RjBW2<6U$i0qUhT2cAmHRYC9JGp|h|Jf^MGgqoNeN%uoMIp0b>7a|ohXyBO(h zI`)lN%7D)kgnmze zJ4@!O%!QcOX_XR_dsef`bQ%dUx1Zbwq&po#r)IRd`X1Ys66@eLMrT;CeuiX%s8UvQ zt%OfA`)}K-OeP7eDG@gvqAm_Qj_v_m?MK`cCF;6Mq-rbt6uVoV(FQ@XqAJP6=oXG< zEGT5bVlLg?38q`J+R^(5QJl0Mxqv9s^6`8LP6874n9SoPk*U|oR^NU_md87)3(b#@ z3bxdg8o;G8offCKgb#iQ&A!h;^R#NVsKO!8f@K=$}GmGGt<}ZclD-kV7h$2_U*?xb8WGzJHv{EgnQ@M+Y1`2o*pveCVmHKz=-k6OAIU( z%IVE(*h=CMAgGrotLcABG$HozH~C zW_u5++}y)g#X#daJ;RrBqskB_d(b!#$bp1$q&BVQ6)GzX0vyyRwo8!!Nv_JMoUo$8 zt*YYkT#+5!Q(5Ax57YS~r1kum=b7n2trovtDj!}AG7phuBjn8&AZR;oU2ix}Jw2=! z0supjo~ndZjT>!pgy^<<$3es#)ubKfGse);6`;!23do#r z8#x!dDEnn@Ym%Y4({P$XrGKEh%p9nlDiqHyQvF@Lj?{C5g>E~?ac$MEx~hhl%znk_ zyPBE`wo`{QO`!90&u)^OJBJ-Hz;8Kku=QRWTZrxy81HY^FO+%N+{LKCAE0QsGy)wcHRy4%|z2?5+dd( zMY0in5+KrT`(ju%1w%ks>bV0pX-%@J2MWV=H7*sKV62wqy4rNmj#$fWAXwR0VYCXY z3;{w!rpmXnkNJF^!G5tT15c&$;h0K zvr;X^wyC`Xfombiu5&9R8YzgljWOQcsVv5pe}kt%gYCgD_s-)N*L5 zmnqxkI?-^LqtyUuPYjPP^Tq#)!nf)plU&Q713yT0P_Bh&QX@WpZxQ9tPFsldn7c z^wE-s?-5!mYCiGskmMEuLBH%jIlS()9F}LUC$aOqp8tCi|ATuEr)bWzx)B6ixjusJ zlT_04RgS`m0|c5f2T`rAf+VUl0>;(WOkYs2tW?xUQw%QCf!w74{%0ji@-*(wI(d+A za&&oQOdzi)T612{hSw}s#PiK`l$E;63spDv^?U12Pw$}wkj!w#6e;NKGZTO-+6F|s zpSSg9Z$JgET$nwXrGeQOR2fa{qC%#_vz}gTRf536wj_HOnMvo6Ra36iBKEjP{hX`D z#PAQ~+Qp-?@yvSTb8jnU$7}ATlo&4gTa-1c56kTvpwiTix+{M#nwrPsIe#?HF$K!y zs%hZBRX?SvJ{ZER%*P-QK7xgYC1N&Cko#?CyR)2q&&h-*n~kGyDJVIT>HLyD3OzMM zEAgX6D?0?Nb;=*6G@9w@SF+C(k*p}U-SHkxiq8{UXj)KgTuQk~OL-znPrjvV)CmS% zLZp-ZkAyJ;xvk)2UK3{92N`uwr|WVKPcQ|6XQr4wL__<=4?JasH2zNr=7D(fVL~Nf zLe0*mJt=fP@h!`vvcD45(Cze{Jfsvlk5r3}i1;(Ghq0kX_A*^DtB;0OVDTPErF8@M zf9r5CP&oydqtYK>>>YC$&?~eMCrwpjW)OJ5o*gIbT?_g{Rb^q*j!QB;?0TNv>zZNC zgW7PmO#VQDw9wvo0}n8c@PbEDvErF|dp>!{Ct5_HW+DR3wM z?e_Fp2irCIoH|Og{4@fRwm8umYTZ%_>RSQ~xJw00<_m}>>oEqioBjZhTK6IyTJBBm-No&09mF)RqG1I*pRX2%OH%UjlyrhkZg zZO#)Y&P(gL97*a4&}2!;h2ljabek54bD_&E7x~qom{qQ6IXZ&z3;thkVg8$5Ak%;4 z1)}EDDwi1j^8!u(+g>0OJ=1^k0z2K5l{P!suw0CUl;hz7C2JK3o*F~|2@yyFmUQf%@u)ycZ9_LE@%OqD+)q(yS;sFJKea=;=OvG#(vhkk77OQSoJtX zzw^vyKk7K?e0P0-x|bJJ)IhblUSsV|-$L87Lb`*tIedTgPR8sWw|+ZBUBvCWo}SQF zXt~|WEA4hWz25L*ZG8T_cDcRY_4xpLy};P#yllX3SgBR}kNR8rTPgqE-2AdtSgqQ9IXtdh zbN6mvzyq$s_z+x#9e9j8|9y%_7!U) zY)j&uA?#I0)WRlTB`{*A^QlE29pQ;^ttSz2OEtih)Md?uP$gd=7{WKmvf zE>K|i))i2$$QeLqecJQqpp0FF26PTF*cl%dK)PFayuNsmOVXf1&s)jrOg=+iQWLF@ zqp@DMsKbE)hTZSyDFvGnp0BU5z%5P#4{OXvE4ZY!2XfS^i|v^2(mh{4)RJ1f)_Ewh z%?SamN80QOLHUiM+BdpTwgqn#T8m0{(h@5_uzq4Q#Pp)HDj%Ts8 zo!pt%X>mx_4eeHYDE4GA7wZQd%;kYhobQArwIXYJNKLBYkbfAbvh%S_nsCKHDTl;? z22Vy}Tc`ak{05b^5ObSaXkS{bcOZJwQNbK1C7lD3wT8{iRBb$YV_xzk&@1UVcs%bx zZONV$wJI>HOF!YMI2ry}3zD@|HTQ&OX;%iPah_))bu${6X{ADxu2%xBcJ_vvOluva zo&g6sEqS?38d;&fj@=`H7Q*8iyKDbUq*TU!}4?IF~yZgspZk#Lexxw)l;$29=fG-4nf& z2|}m~QT5LkJw)dpRVgwRy~Yy_Pr}GwRA1az+;adpZ~%;7NMTVOp*sRL0}b=9Ljx3Z z4^M);TBQ>28au_^Plpo-y{1--H~#z6^zRU&e_v(M4GS5ryVP9Z8D<-ocy{H&4tDa) zxQlobJ5HkuUYt@v45kATxlx;)FIO#PG3N9`uS*{g&u+~dQ(wYTxq|1seg}`1l`>-C zTXDBMF*bogaQ3=Q_&UqLvn-0m8Lvd9Z%g$512;g(zcvO_+beokN6ip#bQEhECV+P{ z?QqZB9?r%CxeP#{&-rq)yV^d*yNW!=DLbNGDb?{6INiD)SDS?8@s!GX-3t4050unJ zOiyv7Y>()fxuL3A1*-dUY0BRW<_8pRRxB8(R3Z$o=tXnqy_8Q0#G3TI=ojz4WE=B5 z6SCr)x1&X*#%I;H^T`Q|%FoP(mTkpMZFrnUXGTvy_kjCp@X2J!_bGPh*#A*V@%=)I zFG5h%2a?_l5MvIxZPlzbRTT{dE_zQA(};ukL)G-+KxTLc$7@uR z%HREpy~k?J-PLCM^nnX<=$A>RhKr*=L4w21z#o6lBi7%ckxp_nPJHYIug9|Tp;~>k z7+*z84m_c`PX=RbCJe@e-ydA_@>M7(0@}Szznz1tDYM|is1%`iKY}*3 zU&fJZM|1&NT|H`(H=8?Jn_|kFaXFHjvqtQWu@~@anv?wGf@gxJ)Z13133D}l4{3R< z-+hq$WjU=@K|uR38JJkweUpJcPo~k{LJ(;vRGh0RZZMR#Wp-foHiG zUQfv@nlrT|Z;*rV>!}1DQFcTp=OYT*y(V`iXzj-t_58t7Q@}^8`Te*ztDUX8P_EfJ+V?yNoo{&5bNMpV!}@RAy{Q^ zQ%ZocC84z+P`fj{c`s7gC`;=x1kZ?E;4Wa~{(zsCa^%KyFErjO-5nfT1%7|jFl6!T zV*)3=w!%=piVAPvnp!b)v%*3P*kbSxrPd_LI;C8m(d5!kyLIyls5ghrbHFA_s`zGL z#bL;B-Eh8gmV0Yy%ceigj?x^BQ5wBotL+saLnA+~qlU-?EO(9J<7_hWR=WSe+XOqj zKtJq}iSdQR+!1~BWql*r)@U$Cl{ti`<>LMVxH6D2c8)lmQf!5GIkPAnoX`BW(|A9j z*HzbW@y}I~5382@n^oaC2A*giN#s^AszT~Fm|sY&2)j$IO1CSvwn9ccrOlJrg*utj z`+04Z?wC6aO**h1(CvzMk~3)_;3*WJqq@j=s4bEuM_w{90tWSo5vzrqJw#;M&9L;{ zlekDLY9HZFuY&b!hWe1b3#Isn{e{x`)cIe^Z+(=#)7CChB;cl=6kB}P2W8l%7%3OG zk&oa@xTr^@!n*BawL-k)5tF`6-$E+<6-*W!q>iFiL=i zneR`GL8mpA3aTwQb$z94!JU#j?w*R>IkgmALs7h=;8^_X+f0VDuA#Zhun>RnN$Ri! zD_zxkr3?kDXz<0(qxsZ^$;l!GZ&;e^6<~D*+!D3>VgB8iPds~`{ei>esdJ8@ zP7K-odA_G$$`U8%?!GMZPLIt8vYR^@Ymb0$x9bb<*^D&t20a$?lG2N@K2UGUs6l47 zp1;uAih+@h6dCHi*I49E+vYQ+dD@!*JsB-EU}`^`Sk==n%yV!C_iwv{ zzQ~_{{d1kd5bo*#{ucmH@=wl{Inz34ESg&6SC|woe0t=_C-5)9g~%OumhvWuHK zwOD#~RySBsn6O7sPC`7EwntuNfFTjI>Fnv zBTV8Fw9&YEKbARmwb>=x;Awl2TQQ$x2syonm{gGYW@J{=Af6W-qL zh118Rn$&n#q|A4Gv)gGUgHfhiM1MNtDzk|dkq^I`LgH#JPyMh~F)6Ps$65s!@)}0O zd6A5vI) zBdlpA1cb6n%s310xW7+X)9vmgcIyq_5kz$tPEVBUj%RqWh|^G~jByvnw#^v|{l0T# zujq7{kyYr&lijzJm9}N|V=qO&GN5du*QWsiBRDz(59qmvZ1-)7Kc)B2=5uhELD5c% zEgL~SVODiQtQd+}`+NnP$@Cpp^+274Q(}*ey&OVdU|lP1Xp$7y+ZM3Qu!3~9Iit3) z)q_{NrRX1%hu&G$broT@AEU+-2(n?u&OP^-^T4epL(#nU0~3>^;E^kS!UH zWxn7Gg*$~124EortDwY(VFL~MD*$gnrI9Xlliepx0wJQR52V!)Vp||=&d;^5|raV4p$4!Nk_+|LY4R?VFVm>w^Gi&`ok&-4} z>@8|p5sh9I$+8(kDidkR2F*tOT66a~iiM}3E)FG-+XalcbFeR(Pm^TaBap+Q!i@(m zP(GKc6`a?ftKfeYO$2~0Y;{UTcsLII5jwdwL9qR;Ijl3+M1#PjiA#PLt?`RKzb>Eg zv}oM~-S;I){-?`5r^DpB1(R+Rwb9WX3Qj|3!TG2Ht3A-wrSy7znYCm-n}i_2=}AsLW4Bw%KX)&Pw~b9QqREhlq_=de>J61rAYT**$l|CN?^TdS*hz5xIR|77bc zubhfQg}5O>3TuNJBt$A0yQB2XazRmO6*f}GV;V2Y0->94G2T|~=9E8wd0dlouAU>X z;*sM>BU|jvr=MJQlG$aiG(mEOwfOD02c5BFTM=uU-`7Scs!=P=4Vu*pHqlwUNjr8E z7aB|lTpC$bEiwu=_YKL_Tc<&y(hJkG5aXlgBO> zcbo4+dhAf7ci#-gMU|bSLgZsf&J3!@i)p2mtZNya9Fy`nv%t^^!w67bM^b?14kp>l zK%{4He$i$_t*#Cc_Wl%1Ywi31{?RA!{_7sU%G0RPUDv>1a;5g&!>0lyTMr(7(#K#^ zsrIG6Ph)Fjehn5=$+$^!8Kug)!p zljZU}$haXqeT@~igZdd(M$S>hQ3AJG3Um~9GyJ)T{U9RHB37u8%_(uhEE@RC7UvCG{9g_3wm^%z-t0)!tXV5&J>62DP=Ln|i)r+g1$eU?fXT%SQ~%=_iyPV|WXuW1tvm-WV^wy;V>wB~k%k&2**^n9j2nJ=ODlyN(| zG-Tt`c*mffw~tH%Ot|>Nmyt_>!|p0{UM2NxcBT#)R^@2^5T248;yX<~P#;Y~#w90R zXdO#`_t9^pj&FV6Z_UoEPK*(C(yZIyGqRyzWb4kmA@A;;GY>-B5ZIq^wdg=P~agBv(swM5oXBT7b15rXw~PzJT2oxvoO}x zP41x50~9MI=K-HHcU{f0%p~6;Q*+~ZcR8-PqF9RBFFR8}s)9SUW7YXv(`T2BAe+n_ z)82r9V6NWF-N(QBq?3U-x%_0&wJeV*r5aU;iNcgMks!hvAxX z!d;4}n29f&s$hwptp+gfL!_iyiy1o}KiW`-&xh&JxxGc3+3sR({hr!FD=4-wTla1s zN&wBCxB$Z5+a;=`ntaiZ1s+7^PLZN)<}~eW3;Ov#*O!s@Pirb`k}WuS`49WehO?^e zG+fDb;@bL2*o~4gXcuzE8@&wsan$DC5E$gK)R{$t^=a%}% zuG*Z_%thbP-BnkpQk+J;kjk;BeXm94qT*yw5di9sI z)iP5z>j+nXJG)~89k?6;CAebhL%-pVz?fH2DRTj8N)bnATR4s9ZeH|uBh3?<0((RUwX0HD)03W_iYZ+5_Ie^j_zd9Fn5wVTWO4h&|bvDOu3j zpZ&tVP#czZ1)wJtQL^`=$@(Qp zJgpw+*Z73K0uTmQC9048ddwg0(^0exRXW>VrTfVCf^u~uR=jW`@>zqetFf(_sW$Ez zO_faFJmK^_%r@3mHQ5u34yzbaZb6b>AtuAv)weP(g?B>jK@c9|zKxGcB?LL-skAOT z?YFfB6FU)69Nq{`j46c|W)aH=WD zO6`wRd~@P^JWHcgJzQCPu@OI|YfI|?c^;FW`@Sq|6(lIVki&hFttY!aWgPLZhyP!! zz9}27@j&5`7^9vKUdj6Q`R++_CM#~_K;5cKJmCTQ;LZGertx-6(WM1lDj}C#aP)fs z#1~VHQiVuAMVIYb+GmiA0u?rSjSJV`nY7NHP(kgPtqRF|4+8%*5iCQurg~HCM|%=D zxrEMwc;c=A&w{w8T!*24NF{gEf@EBmj)6a_>+k+o@CxL*Tz`VwYfsy1VrZ|rWL#i< z@5GMdF39G=rWE|Jy*`J(fFL#|qwW)hjDA1zx|PT-WW>&Od{b>oXWkU3 z@UMRrtALSQs*OqQWKr9FSwYgX#^q1ft2`;PUTcSGQ>d4%cC2m?osOG2-F69dQPoe# zX%aEIBo8Am7fhv0ZdOtU+!a@Gyvn}{FK<^o$*6fFt&uQPh4!We%cmu(zy;Ky-SY-P zXKeb1@zt3JV)Jp%&9$sW{>{}9SXAa9*@BOf)=hNcno#T?E~!tE^0bGD zMRS}>ziI9j**=uFp#md}cdM*)b)_7?iT zQ5Yb)*;j!(d;gs?t?7BE$osufsG{E3LQ+K8Vt~TV?xB?I#njU;jWWWQ+KC|inNev_ z&k=QvY!XD3zjcD}lF(&n+Ro6sK@u`Z_U2z$>?st+G}GSmf6!w=cg`XWT|w}Kpx40T zmT?lBnc-?9;-2*dtYdey!>9va8$`qq9`_1#cyFrfW)Cgdb$yy%%wt6bYPcj$OJYGi zIo_0;JY~)N3#}KCmYXvd$zI<%(GE=5kLM81J)(70`kTeBF{Fx3B>s(d%v2e_-^ zV?du#uh~%eB@5@w3!xjZ%&x!vBY|g0pyT_c)s88*z5KmxgkO^6+D&F*E|9{-9kzX| zvhPowK~-s4sEM+ffXKz57ntC_sxbS^|_+$upb1cRJWC1SJ5Zkrjhts~E`&1MgDv*}4fn zg0t|{UJ(-bK!Fv{#^ahd10DYG-RcOvy8b@KZVSjcbS^XGhjX^^cD-*}Z3)lZUbTb9 zFFRGrrKm38h&iHn&C=yQMU0-=;&lrO&y+OuD~DZE9DEQ@Lza4we*gnw`jk);XzT|dU)sTt8R_H-0K*0tWnKY%4vM43qJ7&I z=KI5&`m~vfO(9wJ#wQ^Y3?*4(NgzB2eQ#bNI8y$+7e1B1_EX4U=2xu_m{1m9w0`GbchU-SzY*&8a2VI2JoD&%*7NG7n|!^0 z{20USVCKX+trE6Bfu)rZiO+-K=i!5RlrIax@xBT>c)lbQC0MgT>J1Bicgbz76KJ6t zAF;D1wjglAyxKw2B+i{W)%`T}#dg8&cY`)wB7GKy=^+97FcNLmFdf>XIgoa9E8#Z5 z?vAKc-W4FmvZESYhk>nOeE%-5K_lI|fC=o6qGn8w`KEZ_Szk}~ByH`)(Ay24?*=R` ze_J3Xis!73Y+A+(!akaHh`#RmnmjC6i(Vk`qGj#1oC=w9jf#Nn5NpO!BTo(yv$yGg z5bYlLBUukF`E7BUehoJ}jUmAMg@Kx5?Bq`a8zLYYh_MbVQ`9LF`v>$KQ$KblJ}%W( zK;fKc{Wv}`gr1yERd<~*9XX^lxjSvzK@)zaGiJsFy~-F+ybZQ58l~uNW zG=ytuFT^AIgiLP6i%5p?Oc%2^9SN@=mJ%pZPK}A_QxtD!q+V^L{S{z)eP6WK3-MYf z#=638qR^-KvF}cg`-&$fpK_2}>k6MR$v~)L^dBBZ+r^7c&J4pEinCWG7NRnEf;j7ZtzkzQ(8Z50ZJn-am?QC*UGWCG+HH)9C>&>Ans7j_(Ut{6)H1H( zSz1*`rOwA32Kv30o@2z~-n@jP-%D!0t|@xwcNuY)j8%$DM1Lo!Jv)NzY4F762FL$q z&3~Je5Rdu6f9m%aEa4dIQh4@=pk8ks_lBZGL2h-h^=BLh`AJ?b|4T_MP{ia2*DwJ^ zG@YjELo=XAztm4VvQ5Z*V{k9=LR+d(RNx1YQ8(FpHZfAbQzSXTEFDFQ2jB&dHP)(WQA9XF=YBxNr#!N92mNdi!Yt$*`X16OI1V-ifXP#KKzdznx zva7?Ke!(Nd-viM%{Mg95VuCyEVxNgVWM}Nk93j$N`YV0cY#4;S*cjo+A{OE6; zXIs$dAyrmvz0UNyovNs|RcWb4XWs{Exi(!k#1BrF5@P#C1(-jRsBIjU1=^WN;b%nGKGg$%xR=bMb)H;VzX@zsToPL zzEzmz&cCi@d$}8o+IyDGP2cV z4R#bRAT!_SZW89HhCJbwEwIzy|30O=zA}>)&LFaH$E@BwBjbDpaD#UZYvExL9{DrI z?(s&uAyPXjE7L$6ys1z2T#Wz91guQ5^Q}nY1r%FmsH`VpW7G@op% zhNSO`QK%^?4seTChZK~}KAIY77!E|`!ofkm_T)77i!M`0D1HNj{v=#$Rq5Vvk zWWBeLq5$#7j}H)eF?5tmedJRXNEXaM#sAn18}|Sh8~bF41hS~v_x%7JsWF^fak(o?%ab!VgGIBKGRT8XYbGV1h`Jbb^-BIOQUU_ zg__p7iXSU2%8rs{JjYb85BG~}Wpqz&RBJVpY)IIUuLHa19$IIusW=KUcj4}IH28Z? zYB@#YJ)x$8hR%WrPiex~G@k#Iw=;Uw#JB+hu8`I1t+brL=(3tFKZVcC%)7@oAUlF8 z_g)r3Rri;9uK=GomZX%VI7#7ztZ9hWV8N88*pM^pOy<2j^C|vD+k`rN>YET>E3(vF zTmtfx-ixV0>|u(&E_yoa6f1-?K0f(-aCmK7bWc!)%N{N^kNkP3DHnhKBZt&3r*<#= zSDHdsTUVNV@Q>J(p?+@rKC;y=$avDfM^r4q{fBV3(W=?_7z6ZhW^UcpF zM6EaNn_{WWy2+_vlPB@@CTq(qIIJEd&)nCO6L)LpQ+wub?$Ja-0=ZDM-u@)ly|A=_~Wbt2d2*Cu-Fnqb4LK{B~C!P7?9* z=6ZJQ+v*bt?%_{J|8atqdY3#OIBT`o`h?Zu7kI_UgHKwNofx(5$7C(R<_EU(JgaO^ zxa>$;J&jL5#~V!vbg*|(lo-g;f~>DiG!i@R$&|lQh(1G7jg4R8P3>V4@_6r zI4w1jF*H~XuOd#!iWXXFzbb3@>q=7Z=(Qmfr5hDnaO|?RM1`N%bq@#sgKYlG)=m>{168>w8@NogY|$+BeQ{T?XB| z&okfmUe17(ygE-f-=D`FUIES@Rcxs?xq57_ZV%_qaQJd9;OOQG8Bc#5nf;4NVngxC zN<5{rqpl|M$WZ9Rg-rLnF+!r0VW}qRMgQH&n^gQ$f}Zfzju+oc87EBcX1Bq90G|9` z%>Qpcp5OiV+?Y_=pUaGh%dQLI?629o0`wdp0-i}8T>%XDJx3JA_LR70;~~33wN4_U znkPxiqQN})xA`*G#sc!YFCA>W+h%Fckj}-Vc)6k_yg^kal>Yf_oxI)hDp?Sn!rZP^ z@8jZOl94k#3vLl;>padldH5*3r4@}CORl|H^Hp@2xwBfs6&!$)3i_jpzy+ly$}l-#v_P<%jGX9g9mtHqm~{^Eh1!l~72%7)~07G^~GTFgm*k0IJQ!wt1ntlcq9#GEm^fs ztjVLC0J*qDS8W(c==SkI7HLM_gR}c7OT^t z_|8FNGo=9Qss$cZWj#%?`)QoOF$g^M^+0d&v>T-G$tz2DJO^2*da}huyPYPzEt!jk zwpeQuq9h{_jB*6&dbc0&vbU8X0y|)4>nT6{qN?{E;qeKVh#;)s*mn8p9V6d(A?bNR z(VRVTkb)DXh=IS$zKaSMWOGLD@Y&%c^UN7_gAJT|dj(*ub&DeE&Xq;1lpq`K52~ioRHZ>Ymzv@& z_eI;i5Qs5pQD;KeD2C{Suwu1X^aa`o7jEQUc0IRepC_Kj#S0yIl-?_>r9CVq4)Gt+ zTjF(u)t6;N^I?b9A0HtK$d8lymQ(EA0~X6pQ`++lxsTHlzpts+sCRhA$#=-;9h0LC zL3Vr16i2-Ys5Ox(yb5`#YS10(x2MjLzddm>Zt`{S zu!QHM{wTpyw_vjy*e_N_b=z}<1yTyj``8cWMlN5SE6wAn9u9m9Fgij`_1&2D#)^7}TgWRpvJR#Jn zOEMIij+Q92*ihNq1iMD-Kvw#C%;!98C0zE4iBTLf?!z5{Sr|Uqg11uZW&g$tcr&F&!|E}p7NiQRl}*QspFDX z$h$zA*KNw1`V2gR)lrWoAHRiHeXzx>>O!2Yt@Bn8N;lMFiTaz5G(OG04lo)nlsrDV zd>f{GfUI>&k&1ze=~eT!!Htprv7r;~4J4`gkC%(_+2P9Q`C5XE67M%WTV2HN+fsa6 zeAKTMiRcbE$&Ntre%$jS4fs6=3{SUWpH!x`cWjk=>FKJ|?(??&Cm*LQM`F71p;=j} z#stPmbZiHd(uYoS+5*`M>K^mMb|cz5{$3S*ynq?Tq@JZ5*{rJ71`mf`uqrUmEDY{X zMBt^Xl9xt}!)1%Zq-vLIJk z^L>r!VU8rOx$ndpX{aV=SS_RIw<`>Jgs4~IGP(j7;B5p{Cz7`WJJ-|C70FdqM|MWlA_EHxcz_5O(U zY!Q1x*ptb%1=XpzJ{IjlmFF0#>qRwQH2-XLZX#_^rnMX5BDGt`GlgpJ)BVDskA(6@ z(F8?SuU@IX*EDwfqdpreHhpyF_Fhwk-YQ^0urrJX{Ik<(EPGK4IibF!OJ;0}|5CRm z>_lk`5qYCqtyQEFUAr$a2OTx5%@;uC4CKdipl>@0&b0Y$39}A*?8NhYTHgCBL9F|#?>Gw+JiOlNu*&)bKE$_b1d;MjR<2wm9ovG3Bx}pfk9Eb{A-SL=NMReaLJ)) z)T;VC#`_Lpwu(OaaH?S=CF*ZS;9XvwPpdpIx6(@2KrV}j0C?LLn{)Ng4h@XuEM1qX zo-#JpKpl35EF0Ii{9Xx3ijt>(zc}R^djKRyv;P{7CoKz01;4@Od$a0H7vMZWcdCd# zhuyCL0ZN?)-i}f_IqToL1*7x212hK-pZV32KvwSdYFlX!7TaLPIqHGU_f6Ptm-10d zG4IGMC}@2a@-_1m?hInNMPuacHuu&}J2qbSfbsc&YMj};$;7W59^Mlru17Wbzh{tA zhW$$8GID57UROm)@?rlMWhniEuoO?4yHmWKuF1tRqauCHS#o^FU;{vYfirI0clQMv&a=^VT ztyGV%06d~k;(R)5vK!f=ITfw5OtpFy{TW!|HH!-sH9T*D=NV*K)HNa%FOx2FmTz^@ zw1lV7VoqG9`C-O;4f<<`y?aQWPAZs!uaIj_b z`-$IogY#z~INIPJkWqe??aK1Kj$_VMPDof9-))lNHa z@gb_FG%{|}avr5_r~yRE1kyx?sfo=LaK3`Ne=_j=$*2(#E&jRu(XYsv4-I_+$98RJ z7#CPjz;ofZ!3lot5prgWg>?s_{yNcIvi?2V4bCn6O@H1W&HJr$J)qo?C@hUy=Ye?R z72w2|QF_#EMlQH()MKq_At-k%4?ia4kVJ>_zsPkY)KBSg7TfG7lI8$8#bl5#5 zdF%yaTcT;5kNy0p?0G7UpkWaPf!QRJ$4R+WTr(&^^n6t5M{=gFHnQY1R-f@09L@Gr zDB@wX?m`{cLdGi=HzY6`MSr=(|<^nF? zhdE61imQh@1$^k$%WqKOmkTk(_vf5&q<%9WUSC* z`YbCdV+0)f=hMeV!PZ&0E_-)nBP$jl@idNsyJRm~H51nldG|pRQg$Db;-xLfa{cc3-rYwrsBkXL8BRND)+{p7t}r+ z?$LoE!|@6q}0(DrFNb_vvPRMS1G^K&vfxEopY zV_2)v%9SX84d)HRwfK))B-w6SbP#;#qxYthbZgu|b4PBHw(?&ytwUjxu}>Y@wfP6r z8HhDJ&J3-!cNQV5LgI#U0oU(Tt0cqGL=$hh#(rqGcF+DVx!$KL{Kd*%&(%RopG|n9 zpOyDMiZ#&wIq=%f1D##9CylaJ6mTSM9ss9-ovmv+XH_q{j@YfX1Z;XDU1vEQ;+vL% zZouP2BT)=2nx)44b6%>?Pm*NCRM&C{l3Dl1DU5voqZwU+4QfJdW$`2}WtP9Bzg0+; z==$b@E-jtve}t7qwK4nvI{V!Il!-WyMQ%ZhsqPY`()ibHaa@;TgcxYI#1}WTMad zsmErT>4-bA9(hwFk4!k?r*T>A+0DxQYib!_PmquA7C#c=s(tz4dxF8Fqo25=j%KBf z*4KoRZb=5Jrs_?FKS^=+vG#6~_?Mu5g4!#m4>VQ@Qc!Vkf4Yuz=Lf{+cj_5CtD1Nn z>m$^K1OIG|H5R*M)O+>hy=%X6vIt9Elg{)h>YlOUU&XJ0-jv5uRphT#wA%+lEvZ)f z^@heJyvLRaZg0v%o>A;+PO%nGg*Q_Fyemz{x-^Lq9H^p&zRZi-hcEnaS;)VR8MSm! zm3c92DBfmqO?9K*^`ml>*dSh+Sv>>Zmz454{L6Is1xEr@uJF2aFynn~HKL=)$>YXP zPNa8}6yN8&atboBr*UWTS;uU&@JAwOxU3+(}<+hqQeynkK)KWD_L@{dC0Mn~=zy6ci- z2D%QT{eScZ))($;DHm9UD@RqE{mr%aYDrEf{>Z+PCuIcQr0T!p&A6u5pSW(uy1A@x z+JJrJ=E*&IUf%9xIqg+mCB~S$R-p=?jGRK(E&iw-YRzJ>)jdmuRz9gNJ1K2OU+!!MztCz4(0 z$yF4`teH<1JX` z@c84#um|Jc7WZXs7hcGr1d}Z^?(+{n;L4~pWmtFGUT;9jnZB7MNT$#Itd1mEv@oDf zlHrv{P3}b`!Fs3jJ~;zIVxXqju8e)7r^1hkGIpRq|`h52@puh)$doj-F&rMF4Y)zLN|=g6-IcvB_^0EG&j#1k851= z?Y$ungrc>Drgpodyu*upY`&hqD$28y5>a#un%e8ir_=7GD#LwVBcgfhcC@)GXHBzI zJkC0)Scm$&MVr5+X}^#Bn_--$zH0~^zSz)q4P_ye=%r)I97g|f&{+b;5wgWhfi-_g z8Oo*&FS2%MZC@CsEWvkzag7wVq6=59CmP(@8+G#35{AA;NBZ z+!nvEvEgk5ajPF?h|a&lf~6g-n(t&K{IbB)bSInocaen|`iu8(aNcmp46BKiND4Hs z|10vZ`;3;0T*ACJrEXfHKrIygsA9TzM)L_b#aDFdvvsKn6=~sTZ1fZMJ*0@9L#YoP z=JapgF4F~R#-RKjN?rjxAfL1haZ{7D<169jj~g*f*0t=A@W-(et7h*dT7Ik)q9Y~= zxO{)PFZ{dVsTHN#<4g~UllV4@8*3}0S7)@GOR~yq3qbxCxJrz^z(qKymNt5 zLO)=vr8d7Woy7;D=y5)0>jc z+mra@SiQN0xK0uGBQZ&$j9;iDOGc!niP9cF6(ju8yvDMCalJ{v{SR}u1SKAEso|T= z9WPqzo7bgdoz~b@y?M@61q&rhG?`}=tqLV)$Zc%n8O^P!NbGh(k%~{lzv@DKF)oIE z8m@k~c)u|5B@2gZb$G5L+SV-yBG_uCu5t>jar#R#+H5Lg*5mMoI04f^8={hvYHb+w zHx+N9zCt(bhqK5vZ)CKJ+^9vLm~q0No$X!C#_Idu%{@58qraN!hY3x!Pj)6MUB5m< zU*j$i%rV#xog(&sVX;+_-07Lj>10jV5?D^G(XxKVKU=jF9j0!G+kZ{Py!Gho&=|^( z?Y*1{9m|^yk32)2>16A$L#~>k%roX{ocW^WaM<8)QLSg!<*Kin0dwQDee({;d0 z%lcpgtF#jB%jV>1@;PUQfc%uF>Qr0-ve)Ae^il=m(=TE&>6-U^2gLix+EvLY4OpMXFABRf(mDiZGU&;MaLpSMNd@meDdGc!>PMMsNne_e%v>P8~j;+F{$|Y^H?yFYehrpVF4OhbWKOUs?$nJepz7p2y?tX5>RK@HG z8=9c*DeM-;=w1aF*)%nkkMtw31yVJFs|l6;r`Pazoq&P(V|6#lOlGZP z|FTAuXW+NEd~h^({8T-Z-lp!M#*#iX{%&LcN42udBI@}ruPtm&$92Wb<($o3BzT9u zzT1gyZmRmP5uU2coICl7f{p7NAmnzN)q!*XG((T`5yb+tsV3(s3;~ncApY79(s8S* zFel-bKd_?NATOUbsjB<^b8WZar&Uav?7`1SrO}`FgMw>4!I51>FZ$_+!2RwoPSv)J z+J5h0Y4#)R;lcjdh{d_F(!7;GSH2v2Z9W zV!M=YpBXf@T$FG^?Z#Eq^cj_Z^dq+B?9D`XsGE75DUsLQIFh11_oX`RHp|l^pUATE zfi|YLaw}t_pZ7{Jx~9kM>Ia}%MwcikX7Za6d?D0KELkwQW^rU59e`xmvP!fW*4nM@>|KY_?owQL zac36~T7xtMNJ(%lP>K_R2dzSjWn)Rvl!g#2xNCvp4#BO#i=@FFPTy~gcbxZ(Z=dsH z{aC-&8qd1socBG~d>(^Ib9Rwwd-uvq4zB~)$Q%eB`}*zv1KHd`%5?3^Fo6kM zoP!eNKwLQ+@SN;!RXW$ZYlPk8t)5snOnGO-s^D>)IhA|Hj`4nCgfZ7rYL%y~#2rbA zYIq(aXP!5Ye0d~Ceo@-n?lq}yT^640ESJHIh0W8`{Ksx{KdpAV!Z5KX+!gM?JWI$L zqoky+<;IA2WVleL#DZJXNX+|fago;V+(BGe2{u^7x93Osh`}U$BGVhm|4Za-1L*G^ z)NMCy|Lik9n?zfWDIXO_>`Y`X1I`MamC<->sO7HHZ&n$()l(DX@C}0@*U{u@W2I z`MrU$=Rx7Eps2L2=KcGxWc);wML)GH)_)y;&-_&-GhMJ_%ur#UF?VQ=c6FEle%_EM z29ZD;-^_ObDz09RdoPi&fM*&qmE$%>^UZE8AY{tT{`L_CWq^${wfgW#`xt0p>~-y6 zSmYUwUsXzG^z`WO-OA9n0hle#hRbJo3w;MTUUlSShts<3$H`UXR-s)G$ma{lF^%xf zcWz**R;eg5#8nu|)@yQ*!!84d&=l^r%C(Fmq1#exX;vm;;unnu^43 zpW*wH%&(^UxsDUKbY&R?Fa!*L4_GbG&bn3yC@ zPDvc%w2O?BqX}YxXHSMSw9hS0faeV3?}3l*CpO0%&QSh{*i$I_(T3YnO&Uct+9nj0 zR7hX{HyZ!+tAJ(8zaE{ej`*=Sy%GGYv_)VNu&E&Y*qdfOTSW7Y_)$*aZq4yVMk2OVn<5&$Bx9B#j}n)T*JeZNBP5u zq^KI=bhq)JlHkShcVw33YHxdNc*hN8AN<#dicF_Rg>-ZaHyLKRoSjpXCcu_O%U!PO zF59+k+qP}nwr#u1w(Bd~wrxy5&CA4%iMW3t^Yvuzv)6JJ&i%ME=Zu+tx!6Q$Y_%J` zn_^_k{{yRm4>bsgQ*U@cs;Cc@jA99OYxTp!TXv!O?Y*f<_yD8ZEuKTnaeu|Mb$m(93P-3$8X9)kGABSZ3>NZIz10!N`aP{>>IpALE-D7OVcc|clCuK`65<>B zf==NiR_54sruig2n4zf5{)M1HLv$uePyO<1KujG2`AyfCfd$+aVi)e%_Cdn&PT8y2 zLWTC_>`LWDRR?Gnqe$u@AvIU`Xowh&#w+@Fw~-Pch9>}99dg6ei2ApKR3b#KCw0(t zI2(#&ClGVhOCpurnb}Hg!Yv2$ZD>+F0b= z9nT+a+h$AFRTb_#i+rb#M;{Jt2|B)kO~-=s zQ($n9CX&h3gwVW;hF2wrN}$U70zDr>Vk~`ku@x;Ks2Dkibi6k(V0VVd4WcFht+j`< z)gjJR@MkhLFbR~O-o`55CV{&WYg(&no#;dLr+sg1k!;YSjvlM^2IS!KB$zWR4{O=^ zYfs`02B3|#en_Xy@SDvKAe%Zm?xjAqv`Eg`B0L(f#sM9Kt72+ zZ}O!wlq^5hmt$hTM+SUtuQx!P<_c}Cw|G)$TR)Xe0(bn%^I1oFMBHb6{|Z4spci$y z`9@Vz-U40u)YFZz*l6lD1oik_r;-$lwA!!)SE5)~ZFeO}dq71(Yrkt9;TyJN0GQ7l zXYgC2Tu&M~uY6sV;7#egGjfjxkG|sW7>hWp*h7^h??stC^VCqyrp{?`&*kmuLsi&6 zgauP!>6)@7bU<$xb%tTE9EgxSd?#G}(H0)Oj>6T- z4Oi!O6$7@()|e#f=I%xu;H_9uL`IaKJ!O2Dr!@QE-u&J}rFJyaY+*-DfkgaZQ~KFm zt998F&L*W{-5zcGDZV^&=ZeSV$Wq(x;k|4rS>C=i=m2sr{S2H0?)09L5!OhUGj_P< zcliOapGD`J$EPpZPt4LJd!y2DxvKXtm$G{0;mrQK@V0StS>a&xNP=Xgvk&>M0cB_#$2svPnNU8h8ORU+QXs_(Bt;$ySFF6eAF)I!R@R914n+e9Y! zZR%v{c0n6Cq-TVYnQ%;{{1GGq^a1o>sHcgQx%cI5{Vqv4^QU^8>uY+U^t}$lvy1VB z@8($mk~#&Dw_5pVppqmBc&Ew+VwK5I03WGcqFN|qNSjJJm0`M8psbGik|I2;n#FW;Fs*4px*z zafaBO<0wtxSt@+y1vZg|w1u1%p;6*W6SMb(Vft(V$W>GFQm)uLg2Qm%dU zl(@5H3CwC+3(AWMMf?a^3$lP?HmWjdxp)P@|;cM|aTDDv` zO34?~)~NWw7PWe(j8!GNo*yMDc6Yw2CC2%qaKBo0b`qoxN4^9{X+0Z0z;~~Yqc~9H zXvgJ>aCUX4*PA<8?%_ z_QNPa&52|( zx@;1E-w_NGpfW(Kj60U_O#857vy$X5&_)2Qp_8quQm3V(bfu$Qo@%HVf1g^?);a;V zIc<5XB8MzdHcFA9m+~j}{llb`6W(b|y*q0gO>ea##&z4S zZs#3la~x_GoU~x5^(t_ia_NWF4{y~Ep)|o0Iw|*GT1@DxL6zRK+15C0zd&>!3Y*(2 zPu`cRKMq_;wJdXbh)#M}pf9thyl+7CIQ+dtX=B&o`uW%cF-Z^QKSYaZzzPgurHGSz!)60VyUc`V>$Ss%A~JWhPUD3895>Ax-@ucY=Y?B!Na z1=AInrI}3;ckR8X+`LXSz$Tz;r%hO*KOfgjD)$EFr}ro!i8zjlxszE=^_e+dDo@m8+Ol(+ z0d#aGGHp3=J5H7y+H-XJ>Y&t3#lSzH<6^lVm*=-ww-}YWOOFb9c9u$JOq>;FU3dir ztI^u*(yPi04h{r>uUC94M$cj9pVCUWeQMX1;>$A*AI_B{D{0evW%E9ooQVTf?Q*qX z<4*nhfiL?hfiucCvqb~wz8=IWv?se9b@}j>RxGsXMIKX6*fR)iAT2zlZM;<>9#-6p zw90shqroWY_rtaOxSS}=cf6&Gc_RmycuDfy*e4xM>hzrD3TV?Dj7_SXQ`OI})hmC> zj*Om7s;(^Yazl>=d_?vKNBqnNvjSe|vcqt}+FDo)f!c;uPIJ7Y^na zCVZ*ud8}LLmaHj3)-(_(x8&r#=}di6-Dngm73SIeTextznaJoJC>tqK2;zBcA5p1D zfLQoyo@}@%R|Ca5x=v@3R>v?FeV^eWJjMShl0Sd-K5wj!KiM0=H%z9> z-&o3L+NHhO!wYug`4y>&av}EAOpY&~HA3e=G~{-5eMNfK>RmjH!Dwh?#5Aw&CBZZB z+&Oj3iF?^iZa4%36w#k_!?eKWq`MhI<8>asFfzQ@+&*H3(6LCiuxekYWmh4}R`Pho zPG%_qVlD`lwU-mM_Iu%@3=A-5-19mw^cGC~bEX;JNyG+}AK-oYe(9>39Yjs?hAkSN z%kkm!pf@H@=G^dL8-E~qzR3$ypK3#|Gm`|*h$HMl1B`kujk(ENQx`#0i-LyH{ zo$Q?m+u~g?Myq31=>VWpBYHrL)lR)CLayq9g<@j%|1T zIdFwMmrP1^FFdBHRsOhmJWm#|OhYoRp0UGK1tNBbauNOY{a6Y+^0^O8@$%j;JH_8S zNB^dieC}M+lj9@dB-(guFJIFTqNQo>#GH|xY|XGpGT7r?j(1E9(#RxNhtd{H(2>W3 zvV1M5##Csmclz5b~V(ti0_<7wc7(FqS2mNs8E1uFTca%PeHlGnmA=UYN9R>3^2XeN3R z+Nho}VqX56mv*3)SUwX~$}5~COvNWz48{DnExB=X0e&GJts7`n%QPfvAw`|CK#;ah zg{93N-a}weWs$g(o#es`F+aJ)-J4v923s2rE42Zg8TST@LC+kWT746nU zzR4RN`$r*H=cM3jfJME6XS@b$9r%%20r%F}u zN<13S7mR=CY{k%Q8nQEfXXRqpmR5I=z&q4*m?_x+4ppbc`A78b(!@FrVDD~9#{^Fd z6!74__ykVLLea=a3fbC-GePr8t3^APLt)FoX_%j#`N_0Ywb95`9>t5T=?2U$-C*Z~ zm+q-Q^zMX6+Vy=AVNa58FLk+k%|OgaW+pOEn(`)1Y^LjIM~IWtT4$h&z_r{B14t~LxE4G^=V zQ@e_N;2IX~5lL4gw8Gz}<` z@ls3dEBKV`hbU3}!l)uy1>7$r*$&)fr#Kp&V5b%-X=W)MUKQINIHppDNI6rnMpZ@| z#|4wXdXK7!M}?sb)OO+FB(9QPtnv zaPrAD=Wk>db^-D3^|P;i(G^UklmmszjCBqjHrqR9<^G%{sl^PMjxR<=q+D1Po=fHx z3-cFNUQ6g*w-Q(mLgQ4mAY0E*l(b#`wf8=-=cY7lAFQ6V?$MK?(n#C!*j=->bfliU zFv#Pa4JfS%>vYLg`6(3srd42A3>n0rZi1Vy3+`O2hU9}^Vutmp;^Ek5gB*`bid9%| zJ#$gZRQPd*oP<7ZCh49eJ_#`7C-?lJjPtd~m4@4p>Dmg;^1KgTjTw>Mg_}dMeXcP5 zizv%kV;JguDNgRP)?$n_E+$`d+SvOAOiG?KY&)!vb zyQ2=ulZYx?Rq`1#soafB7ADUyi)CE*Wwep9--U+BDXKPEjq?F@f%*868YiF6`hLC} zpP}5?)FjxXXSVat>JTS2KOEbqhrnzkLG(ujaMdkn0pqQ-G5WVnNvChlOi1TH<#otbk7O&BIrjcb(ntBQf0)qNTCl& zQ&s_8P~k8~bTgm3I*iVbC{8_|U(a>5nMs*iaIg9n5VaGQv~%6sg(zNqglB)q{(-s4 z#%D^@guHv9c&s5@`o|3NNWd=s7jKsw9M12fTUPQoIbEXAtr!;2Em@?Y{lQ9djL&pz zVtXl@bx9c$|6w7sA))F&U`FjaV7@WwmGvxMW-=e@21&@=8q{9FY-!L$WHb}k)5_8p zq`Iuu(l=4VHa?7{l+CW03hd1o4JDP}<7^&LFAY1)ZDjVQ^%VLmrae>bXo*rDr>T_L zc+f${h;1McI!?W5FP<4|r;)lg4M7Y9q{$!Q4fpD8?wk<-%{?QeRBVdX-^fUEcAJ~_ zw76ibM1|)TxUW#hos$sCjLY^KyJ^KZ*vWn?(VLcKg1oNec}BEBgU{y5gfmu^fc~jy zGjK&d4H+UnK$M^8h&Rl!*>S@+_jPZBHyV?n6R>)F`&W1H5uDkhiOHTRxSu9?KN8J? zuS;zSJiyXNog6}A%Zjpc8ovI6k^91c|qB@g^B4SHj z5uWnm#uef+6@>M5^|G>zt%;uJl)nx!w8nF>dFmv^6J1M`GG1T7F9EH?SPi|6h{jP5 z=YXxk8JIRV?D?7zKZtp*<7lkInY7Fd%FYKcN3e1g_>5DeB5S+iXs)&{hi4%&I=3Ry z2ZhPP$s1Tw-mhPgKgE;4(zJo=uDE?`XBGOtyzpZ6r9$eP^ZO*~wJdm)08w}6M#l3z zc>B!QY~WG>*OgSZrS))0!+1>OA6?-aSH;yUuGKgn1EBFE^-T4lU2I81Lhv`NTPj+A zIAyOYlo&WX6*9gB-3*7HRlTF2EZ>zhB7eU2>41ai=A}Lfy6)N74c znld`terxo=FNzX_fT!V2!;@R34U4JV+)C91+KNh5f;d6Q{CSk5pmT8g&`7vaUNf^3 z&*y7Eo4-BGJ7*(vO49Pm5r>J>0Zr=ec7+a^;wmB^L{be>r5P{GA$U~(ZYc7LLDN}M ze{Dlq$Mv+#_5wbQ+ltec)esh|qrmz+df3$lFMWtgVJRVI>GOxxn94Z)~1 z_X=K-Yd$X!FE9L;ZX3@6Cu5Slk7%r)9;GC`_XwPX zlqahg;XeR68O6%V>kqo_yGK5S_b^mEB}9XR$d*dcGNjdud)I|(ENKgmd+x5HJK73@ zlIjL@$3e*Y6ME5ZhCeQt|Aunc{a+RIq!NEb&M)S=LQgfXF>$lyMp@ayoet`M*J$Dp z(np$^oP~cjRX0A~lbMXvSa&kX6}`tXcE-);=5{CB*_d!9VFiJb_InWAper5=?X8Nxc0P-H(y)() zB@!s733HjFJV^oYKWIGe*kUwz^$`Bfv%6}stD8+0@XkH`h=Y8PnC6l?L>lK5IBfYi zg(?`MYr=D%$?-o75>6^O^t{_#Y?wZmV6qX4zzfv{MAWqWE6Zw!d}a(*V--okbmt($ zq18^l-Yptk`3EH}>PMWwhM{4V$4b1!&8RBm6&opq8LpcHLC&l5WUtwi z@r8y9i@hOcnlev1sp9IrxnP|By5+q~i}Ew|*Z@X$ZCL9bHG+zjpx}Kw!W2T8)L>wS zv4cSdy3J$%5^CvKcBqLI=}0wo4NmzPLuS6U?F6Z;q}dz=Tv#GdE=<$$I#2__UC+K- zeEaf*o(0N|9T6@v*p};FrS52sDsX+$T!!Q)iJNdrW&lUW%hd5|Xo{qQQO&~1P#a1% zFpV+;Sl3l$AxDT!9RQ@U1jQ{!Y`{(0k? zc;v4Dpss_C``CE#7h}UcUJ`rCu)J>;E4Tf^LmT^?^Z67JkT4DDlA>G1+b+ScbvWaX zD#jpF#Z5goNj2eiaqD`N`gSi5)P*CL6gQEC|v{hXQKDLC}|9n0CX)lVP7FgVq76#nYT|O4{PVR$q@+Y~6ejpkDRuwI5427DEl3g59P5MJlIS8;Wb zVPd3vBAJCh+qu`lw@ZibXSdFGHv)DNAOvA`y2ci*VrS91J)X6cWu7ir7d(1NdtgsgZ`2_tVMZx)Vml|3z>D zx#HVuqe_U);{r>Ux?g1%*Jl?FBRJJs1vBti>%UYTZT8ZERBQ{lp`_Z0LSX#=My60Q z5!AD(KvT+O*Tp;=NTROp?wy{19;ZP(DvC3ErR|lc|D7&*z-msc?_Gmzc{T&WIix}j zc?zJTD&T2T{3+ehwe}0hyv~pE@d?>1Mb*9DauhLJ9KM1MZ^N~wntc0fWFr2@mTJk9 z5Gq%Rt%c+pGsa3OhE)irSrfM&YAK`BjmF3B1|)?N|3b8(86PizYGop9r|S)ufk-{W zMeBSPV6d#gN|Jb7QTnSrB@(>Db0r+247s$%ZU&;u+Txm-Ja9AuT=Pp){L^rS$`?iE zt3bdaAaWUtopWbmS$^;xM*+^#{sLJCY+ZoUX@}z+Qmi-ci1i$U9f9X6$W+eeeHkXC z&54=-E-6Sd`~BLV;u_NE;-9gox)xo6aH$!dc^~ghNJ$XrzQ`JVd033I@H`WeQObSo zPV#b=HwCGUD%dqHAzdKJ3u}-x$8yNkv!w5k)wH>KFSjjaA9!Iel}ykArF9!tL-;{z z=qk$e=dw>V^FF~CLPRIYX!(j-*@O$LJxtgX;rGEUl8+J{M-yhVj(fr#8Bzn)7YHJi z2tHE@#fpO}Y(!Couz_0D%E6HA;5*z> zA;T2N{`w8i`|DujQ!2`zjff}eWWQjiXz#?HpU*X|c=6P4)yBhh#O>)s;EdOQKLlE} zt6Nl5PE1Zi4K(-0=SR7|(hM{E3#+O%a3l(gY~G7NPorpga}Y0Vm-Iq!Tr5UBm+31s znjlgesAo+Z$TRPgR;W>{HV4M4nn(fEy%kjNZBhLupRdL$8m!_5OB-|bZKVnbi%%WT zGABDLueCMXB(GW<$oGvRPHXn^A&}vdL&Y*Aa|oWV@5@K3Khm!zK#A5E7q}ZJ`_rSl zTkAZd*wsL1cFe213w z8|FVtM*d4rBIEz#Nvxm4)ysnh0#f+rO8hT9iT``W|51+Qq@227=UUVKt(PIE=F0DjGUtOOeLTiTbG?ED*}dH z@X7~c{Y&|`Kh`c(kTpntC1N@ySTXQA5KuzMC&ezEKt4T&28V^@J+xvN1d7EwJ-Tvc zb#-*~A|_cgC}U+q6)WadlGfEZ+zxW3X?F4(VnJi?aY_ePQ0v+d*(If-?m;U{rj<+U zsm;=ksimo{LHowUGQ3rslf5&i<70Z~=p9mSkMFk`D9B6>LND@f3=|wEj<@wEWW)2A zrs@s1f8xiR<0CXaN)K&KRo%PdmfD^@kAtYvV|dCd7qgYD>s*8{ydQ?!2o84U5!}4j zi8odbmZ`i9lu4))5tt|{ZA2i5x3q7fw8~@{%9;RJ?+_S}7)=NHl!PsF;#SK%s!cBE zC(;Ar;PvmxFqXP_PEuQLmpuB=t`XA(2Ayx{^*rMroYkeDs7t%Qeok<}k@VqB?(`}^ zpwv;33oQer^n^iaDM*G&y3aIq;nSn0SM(CNS8RyvbQZfdc7Q1#&efocw|wb4?ZrfL zZ>`3!Ljp*C3t6H-kD2U z1YtW#jvgQoc9av+f5Gu_?fd1m;t^|EPkb~m;X)k6w$VQy=>9VhY zK=i&8?YBWxs z(YtCMa=3AV`n^k(K*BjG7IjU_KOcjx&Z6GJlEW zMAdd(`}3+vZL9+`KDoD1tiV1hl!=ghy&&L&xBZ>BZ)QueE)S-LG^Zmey#CMBli`nxM%LvmE#+yvAlEPASTKRjnu_h6@4xWFfT@L*1ls)nzCZVe4<| zOk77Wu<4_yDlIIz=yy8o1~$ZW@npG;^RG$wSEh?dP!07!b;< zcxNK`;V~pI_|7$)c}-N)P qrI}ZA%&DF<^|uPaE3Q&o^x+1mKX5~Lnm3M($s0p} z#f;i^vVr5(rV#2drpK+(ZAne?H8GnTdl@Jz96o_|Y`Su*@B9$U8E-?A!d$A8kcvkqvjwkAl={U=C}H@BP+mA>Qvn>Dq_XzW zA}p)(H^q|^wH&XG`2U--sn8K<<{Lgc$4i<=`!S11}@%% zt_{PZIv6CeZ>G+^Q%&=&uv}Iq8C-V`7Pi>^r}u8Z#;NiBS?Dk)V!YO$jex#p)V=eK zHuR}KxEwB{an_@}$6$$m2g{w>kF~sgimP{rbFa$`L$Fyaj#1|*~h)MJ`8Ye#bXXgvSrY)JgnFK(Uh>s zwYj9*H6~YSUWVc5ChR)?pvqQ4=dvSLmB6BgxTSG5;=)92zcC*~oJCH7SP8jaVokhs z#IO>dS8p=q6@%6Q+ij%Ce4ZBADa6Y}2HGmuJw>~;HTsWEag^l*QrnY$zf7lgeH%HmbpS3dv@<|)sk+>pYNb74gKNgH{kom03jd`EE4 z9DWjN%7=i}ifBQAc_G^pbc6ig5&9F2V)YU`4b&#Iit++)2oVBk zlt*IKttIS4>_ld-eq(vXsx@UI0m$l0TW(Y9501S;NF_iELH`tg&*RqP)SVj^M5pzi z237I}R@-_?;kFe+@$(nwIeBq7ouwO@i<-2jot*eTK_ze|&VE`*@&m%jy|gCW@j23t zb=zG-jd|t+al?@CFf!kJE!gFw;rA1UD~lB*koYn(>rhs?3w|$oGd&{H{NO$6>`u6vU)CJnSx9wgldBa4HcZ@d&HGz5~g1@?P_SM= zTx&J>{9e7ntZrDFP(V9IvHYav&E~k9s~)yf<)yOXQ&M_gJKvoVe<$bOlwD008FMDd zsuujwaVl-Pt89AOIWWzw#l0e0a)Ag7?0XJAZ{yHKuOwaHQDB6!;fZ*bC5is^*l4B2 zcCcZWn7%_Ij+S8iv`H1IaztPxrX-cn2=n#VF0pa7zw^_ zR6=84h-5<&Sx_u%`c4zbKYmgK<-*|Ov3{ddUmrpWz}^h^`~C8_xP6S`dus!=NwQy&E6&OHYsWX{#Iqor8Gx57M{ zR+bN+Tvn^Cf(~2y->xRE(EV}!l}?l;`#kqE2q@M{X^yjo*>YqdOIcSUq3V|bF8iz8 ze;&5~OQRpte=_=EQW#aV(g6X5GyK;^KPEaR21Z&-dlNGiWpE(izLq6}<_;5O?X7wG zRWJY&HE|mmKP213yF4{_5)0d%gX`0mt+Q_iIB&Omh4vY z8vlwwa$$9aSdgcTwg@cteH;+t!S@l#D9NueU_^`= zja)vz+aEGdje|{STkc)?+2(Rl1;r62!aKZQzw_R_%**Wf57FYVHE8+-TpsQ$~(!7Gwn7ua@Rw#x2R?c)?E=y64 zrnDqoUrt^*zbF&J6d~tP+(VwK^|oqD$K>np0&SMu_L=AJ@0;j3@1($uln|X|rxWig zE~PKDI@6k@%}X~KE&0+-7%y<()VNCTZ~y$>BZele2W)Frh_R0*)9_$*<4!z8F=bTS zktB#(1Lj~WK~%i-A~#tjx>>BF+m7xjsmyh-Rh+PBzmdKT2`P7R{q?{fej`A$L#KZ@ zgAB8;bKU8L8eA9rvrm@OmI}I6;t=ZwNbrKc<+imZ5dpzCzMmYl^&D2+4WHC2& z-Ha&fr|{>VVqu}{IpIy$QL`B26z>f`$%)1z z%^lvt20Rlr%Pig1li2iI?;mH40%8d@_r623`vsY8JKM(bG#y2On^AqwUYcpanWm5bbXtSjG~!!up%K!OmHEZiI(gKXyG$v%OoZ> z7Xq;BD(q!htVy-fXB}o!r>&oXW`%Z}B^ZpSxX)62&EwT^&i-9}yy1DHrD(QhUTDPv z`jn?HaV|G7yl-UDd(H~F50)QoJGFOET^fuK%^YVHA!omjp4o1>8z$m)>g6AVQSf;% zlo7f%s}i-%2Tf@h)hRhPcuz<4@KaQBi%gUdZ)HM!9K>C&o-X{-`C^aqx2r z1ud*qdQ^qEt;Bo-i}NkijdYc2*faj1 zTiw@QWdNQmT{@bH$U7Z_$ml7eWMW(ImXWU}`Bg>Pl(!9%Vq z?H1r}miXr`PtRnT0y9RXZO=i8iLTnN>$~+zjS2IAh~c7VjTE1Z&gc-E^bGj$#MNfJ z6)tPgAA1+Gix;qRW$bXYO}r?I%C(nwjUdt*YoEX|)xW#-+IW8H2B_0F0{fpKk0~&} zwWylaPMeT{LB_SzxpmIQU2DPE_GFV7;u* zY^UWj3`o}A*X%zP7Vc90xsBGVtldn}SEo$`yT}9DEjteBdKz~twh=~M-q$V@*wz~+ z^BolGSP$$z+Z46;lAK@rpDC!zbWOa{zmLA;|CrTz>NFO1O%P8LeM#XyD#uUVAd!<= zZ#G`|bS;;I8*14d84YeWHDDRbO3@wPJ&I5hg%nqW=9>zy=l7DtZy{`>_uSlRJD!@f zS3)JnM3We2TG?e9T8HW_oD{ZOb9KdcjOV4Ys2q1%hoI4~%UbFeQN~YMZjd;$tVrHt z71V!6S1MKP;@hiR=rm6|9{*L--ee(cu|i46lrT3bD+aKfLfG zJDN>GO5~4pSIa?jtKgpJKe~V2bi>nOe9Y!4z15+%=%T0~*68F%{0!_p=0{r;xWDGd zqt`N&YgX%---3Gi$<9Y~p_UYU$gQ0>zh4Ozo}rf?WQ-)9X-fqKq$e_7;ZWh6;`Vu4 zjyVovWT}nvWgP4zDOf33NnmBXJ)0dAua(`R6b>lfAhnETZ)MjS)kv_CT1{Q3E#yK- zHr9eHsDa76y0vyx8$cqiLq7= zok@YQPLi1854pc@MMua;QZjGVx|F4Ir3M{4E>XS?)`VLh>@5W1ELwHIR+i8`&F3&) zh-wATZ*h4fc2bGJ>6LuE?Umz$2r5=s^H{3BYCGwM&jeW2~42WJ4RPtBLdt-o4cc45e;ztU6@l)x!!!(w{O3NO3{wJ&iV$MzY5yu*uf zYVs@ewtZ!`19$M?=$fQalrS;T2%am<4hPMhKY*U1@

    b;jZr6d| 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

    )YjY&CqcP%`%SMSy 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%0AM!3SI=A67Tui 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%0AFI5*+?KrmLU#H-@A16 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�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�_;8bRiTz&qREs7aD)_&Mr^c&Po#vp8)3x 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 1, + 'prod_name' => 'Мини юбка, латекс', + 'prod_price' => 1500, + 'prod_desc' => 'Подчеркнёт Вашу фигуру, все будут в ударе', + 'prod_matter' => 'latex', + 'prod_count' => 5, + ], + [ + 'prod_id' => 2, + 'prod_name' => 'Мини юбка, кожа', + 'prod_price' => 1800, + 'prod_desc' => 'Красиво будет сидеть на Вашей фигуру, Вам понравится', + 'prod_matter' => 'leather', + 'prod_count' => 7, + ], + [ + 'prod_id' => 3, + 'prod_name' => 'Атласные перчатки', + 'prod_price' => 900, + 'prod_desc' => 'Подчеркнёт изящество Ваших рук', + 'prod_matter' => 'satin', + 'prod_count' => 5, + ], + [ + 'prod_id' => 4, + 'prod_name' => 'Виниловое платье', + 'prod_price' => 1800, + 'prod_desc' => 'Подчеркнёт изящество Вашего тела', + 'prod_matter' => 'vinyl', + 'prod_count' => 8, + ], + [ + 'prod_id' => 5, + 'prod_name' => 'Виниловая юбка карандаш', + 'prod_price' => 900, + 'prod_desc' => 'Подчеркнёт изящество Вашей фигуры', + 'prod_matter' => 'vinyl', + 'prod_count' => 0, + ], + [ + 'prod_id' => 6, + 'prod_name' => 'Чулки из искусственной кожи', + 'prod_price' => 1100, + 'prod_desc' => 'Подчеркнёт изящество Ваших ног', + 'prod_matter' => 'leather', + 'prod_count' => 3, + ], + [ + 'prod_id' => 7, + 'prod_name' => 'Кожанный комбинизен', + 'prod_price' => 1100, + 'prod_desc' => 'Подчеркнёт изящество Ваших рук', + 'prod_matter' => 'leather', + 'prod_count' => 4, + ], + [ + 'prod_id' => 8, + 'prod_name' => 'Сахар', + 'prod_price' => 48, + 'prod_desc' => 'Подсластите себе жизнь', + 'prod_matter' => 'weight', + 'prod_count' => 4, + ], + [ + 'prod_id' => 9, + 'prod_name' => 'Мука', + 'prod_price' => 50, + 'prod_desc' => 'Испечёте что угодно', + 'prod_matter' => 'weight', + 'prod_count' => 4, + ], + ]; +?> \ No newline at end of file diff --git a/site/www/data/.htaccess b/site/www/data/.htaccess new file mode 100644 index 0000000..2ec6034 --- /dev/null +++ b/site/www/data/.htaccess @@ -0,0 +1,21 @@ +#default +#AddDefaultCharset windows-1251 +#��������� ������ +#Options +FollowSymLinks -MultiViews +# Turn mod_rewrite on + +#php_value date.timezone Asia/Yekaterinburg + +#php_value post_max_size 1000M +#php_value upload_max_filesize 1000M + +RewriteEngine on +RewriteBase / + +#�������� .htaccess ���� + +order allow,deny +deny from all + + +RewriteRule ^script$ /data/index.php?all_in_one [NC,L,QSA] diff --git a/site/www/data/index.php b/site/www/data/index.php new file mode 100644 index 0000000..47c8c8e --- /dev/null +++ b/site/www/data/index.php @@ -0,0 +1,17 @@ + \ No newline at end of file diff --git a/site/www/img/products/1/123.jpeg b/site/www/img/products/1/123.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..50eef903e40b3de9a0a35c9112c521ea1daaf596 GIT binary patch literal 17108 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 FKLB=g4GaJP literal 0 HcmV?d00001 diff --git a/site/www/img/products/2/223.jpeg b/site/www/img/products/2/223.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..11d94f01446b1aefc860e5b997316ed2d09c6eda GIT binary patch literal 26324 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 z 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 YZCZ&}v}Y|TnsZ7kZxXBaFb^F32X#k}1poj5 literal 0 HcmV?d00001 diff --git a/site/www/img/products/3/312.jpeg b/site/www/img/products/3/312.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..44bd6f480bbd579e718f33fd7651c4e60e367a4a GIT binary patch literal 12680 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 literal 0 HcmV?d00001 diff --git a/site/www/img/products/3/thumbs/312.jpeg b/site/www/img/products/3/thumbs/312.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..9999efe46958ee9a2752d3afb246b233fc146bce GIT binary patch literal 3045 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 H!JPXir{VLz literal 0 HcmV?d00001 diff --git a/site/www/img/system/logo.gif b/site/www/img/system/logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..a88628d8fe21d5de6e164fda6a0da10920697b45 GIT binary patch literal 796222 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 z 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

    o9t#b(=>_Evs0hg1i)+e1dt=n*LOz z0LQ_EtnKHzS^DLanlD$50c@+Kma^TobSPFsVte=@Ll{ceNSrs?=Pd}ZJZczmti^A! zhv=g|wWt9dFX(?;auQOV`%5Xp+l+S$0kHdc&8&;$=U-ckgHJt+e}9Dh_xlj<)61kb z@~-H=Kj+$?er;OPgr^h>OtA*H@2~oOGwWnqpuB8vxJRzO9#$ND#uJfazv%YG;v*Ml zQ8-P9)ALbbtH5U?QE&WtIgRLqC(w>=*h;^=o{JH<7DgfO@&5tC!Nb5+PPhCN04lUW z_YijHyn_TWhddtpOv^-hbOrVDvm?3%vx$TW1R|3j+^>f;_{mV*i5YG)@eZT(+x)m9 z`MGW#gU2hJn;qe=Wuj?vgD0$G12aSilwIL;7>_(i6C$&uJg!?$3EVQjU~JnOGl4dT93ld*x~Oc1{hsA^qkJ|MUy*^ zBqI=A>?@&xV?xfB??$=bpS*Y;eE11{(#nLFP-{Y-RgxJZX?8ftd59)R4vR3KJ&Tx3 zq1~`cgnHZvGunym7@j<^#h_#FKl}n1?L{Bo3fex@!TG8NRCco$@gk}TmF7=m4 z@n6EgZS#&;K11^)d37I8Sn7>^k}02qMn!Q1mmpO#6Y-#fCQw?13`9E<8`J$6BJrPa z*+pSvs%5zDLd|~lCTP+*M?UQ$2jkh8SObdm*?g8xi}NAH&p1ZU$P~^XWzV2U6t8O) z4SC9N?{I|sh}6JhO6WqDG9e)OkVXMM9uF6`4zSf?XCg?q(VMp3C&MaQ@{DoR zYE1=mQRLHnt_}1Ikexi#NbCip+)6Q`#L-P=vK|BMMAPz6q#`>0$s040=x}b7v|?X0 zq&=;9oyF1uodq^X_=cscT7iZjgeandNa7jJZ8^+K=f)PWD1YedNd(utYom4H=lN zpjZ>(Tr+Nl#q5CgnCf;HkW&zW6RXov5gWy-GtL+$XBWskuJd?@CBj$wTennEHmNEy zYNVT5*@XJLYJB~9X~GmWb3#P(6nj&mbhIn2(z$?dNGiiZ#lstJ*5|h*cvw3 zKgzder&bk;-$^75j>r1XGf{^uO}*U@m(F_=!`TZ_zGrOF2$f=?ARkjGH+8nO?ZJ3T zOuZoSKgK|_spwx}1RwgmK5G?wG@&Bq+fF?HyQo)D*wmTe89GUG6-)X^cHaVh{>rYZ|VALp_3Lg0!NFPW0X+ z*WVl5NP*Kc&O4{dj}z#v&L)Tu(*b>G!1(E#YM4*VDkb}ckOaaC42GzHJX8JS^~sx( zgQ!yrOD5rv}EPRaWBLL?Fy`ie4_#FWLmkO$;Ow zykm&CC(F~p9LOfFe8FKCAgZ`n<`R*KulW2;f_x>RL?`1k{N1hs&aZlEyoQM1j&bPU zQW@1j@n|A%~Wqx5<;Tt{2S0Zmsl-zjcoWx(lSw4E-bZNBO7|#EK|SU(8ZCfnB-t4E@JgO(>$^!!*> zu$1x{NLXwp__xm{W12eWkvay22I^wWw&wMrFZ8Wp1W;h`j57iX?Ity4WH$2`z9drs z`b*0)KDovK}^jtjcPz*oL!Y z2;6W0*~2H$=3Z9Jd%l)J@ew8}nyX*EA8hf|SBW5R@U(x0t{s-l<|naZm-hE^3hrSq z))e-}x+fEm#@#{^Vk%wBL0o${_EjIVE^!9s#>5X>Nb_+lM|%ELfGE5K_}?%VJyas? z^84LT#wk6UUg;2G61(BEcJPCMVJjp5$uM_T3n+Ug++n4rw=%hb;bU%V-hK$trcrRTW5z4*eXNE$2Xnlt| zZH15}vytlJ>KYBo&0PkXP&95atd$TY_Onk4L*>wonLRe!MKuI{96Gn-?2e0G6DLdI zwztuD0vt20(N{B;6iM7YL@y-jQUVg=95tN5_NvT2o8KWj#q*!%ln;s_yWczZs1`EW z2RzW7&Oa_FWiBY%G6k?Qw_-1@P%c(Xcl4)l{wAyv<>brm!*N|=kyo#=;zJHgdp7Wh zz0)vq`hK?a)7-A*^1(%OGs*z9xO~xRWQ~A9?DQQxQq`u2S#iWw(jT!VJ%$%2H z%8`ua{z~Eby*t-n<9QWCv`X zW%=tQhf`R=cO3uyF0ZTc0CN-yjm?m-q&kVM81t>Tu&ubiU{M6x+tjUhf5T|Iwo>;c zI%jeA(zCPvZWZDbDOqjj?)S?9i7Ah`Mi@|12DWSGw+n0B@A!89AcKb_2zCjfq*Y-% zbz!?T+r2y8`0bLrw7=B|_;$O@XL`-|9#(rRN{Z+N6P18_r`eJtC_5L*Y7BqWQ#tp~ zb|@^6&tBmkGs%Es`0sh4%mk0x8uG zfx&Xzb^OJOhrr#E!>@YS+4}UDbEYH1`zWQ7*fgaY%BmFQM4603K|?lNttyr4Xr36K z`fNZjK^~0CAbSr&DJwb|Xc3ib9Xd1zTL;IN1CnO)(YAr&GE8&6w80z3tPO7Kj zGmt}_O?JdNSE;V<)H+DbB86mfy@(k2w5m1-P17%`NyY_6v10_V?O%Pk+f z*j9daIe*3{V;uMggn@hYwc{|^sqzvdF>8EH5q2K*EOk`q#ELjll-UdFz>n-6IEazX zro)RyT zI~oy>=RkbzPlq}ONl?p2wX{bY%gnph$7S=oh46>G>^a+mrwcFXUs}5XJOv92j2p-{ zkFsaj-8CT1SgCbie(@W-YMV5dL!35_S#o7P+8X|4QMEIbgyY(V?~BlPR!o}RH@rD- z7Ix*YIgNuOWwbXu)JiNRH)3Gxj{A>T$fjSox8fS}eC46P61je7hJpq?hb<{zRV-k+ zq#aNW6M>m?2ETI^zkO~?)#mz3;A?H_CyZcr$JuU>uYx6Va<3rFcoz<4UXgOOr5;RP z>?B3LWoX}-{`>nAZHs^mOBJ}{*lppYSoOQ*g6T2xTKrSO?#>zSbCct8^4-^xc^nKr zF$H_p8Fm~t!AolHv%|AkCZXK(#7vTZME%E+JM4+Ffg>@}{((8(T6zFnArXI?pNIlW z>HQ5KR~B8KwR)8nEicOx-9&Ddqm5Yak1oHrW}(7(X`0WfVO;^i)cR(oL4**Bs02wc zN{k#Zl?W9mnw|+xCq&81$Hy*4mZX#=m!W4?q5+HY(F!Y@JQK_);(|~>mEfL=w6e_X z^sLId<`2c4#o&)qz!2ZzveB~cN>F*_=GOMk?%w|AgTtd^f=}C4ds?4Qx4!OP>|gC% z?_F-{@3-H~6QBs~@NaYiMMm5KaGNs#+v-LOO$`}F2P$A`US-Ucgw5Mk1y5#(H2JA6 zsOxG=8i*^Z`GusNQq{eWqrx}n)^s+te&T;&xN8>wVYtyW`=XpM-z&G##g_Zdtx#$e zsWIOXxn$N$%_%5$2!S~p$!%B)m~^L=sTZft$#U#iN-G@QdvSE>exv|ZR@cU(Hno`g zd4J8&qX)(w(zzv4{n%=Ij+-p4&3~kVy0e}Z9x`!LO>#78MT<@{kN)9qUkop2Cd>Z# z3Qe{Yq#APBV^S;|QH&lH`;=dku_iV9j9o?Qu^Df`4@TEwN&QnbX$F zax^{p)X>F#l4Sc$E9lZV$JQC<^a9LU8}C;1V9Zk@d^kGkxnGq zt`#;XtZHo%O~p;~b?D$lYeh@XBtz>K9?gxk>dz{}Z5UQfo6-QM7t2?TY4++2!FIJj zWxyt34JD?F4iV+tf>;H#Xd42!j=hqwYJ(-BMvRMP&w0_r!ov-% zj!~^>z$h~c`k}H&I!cHa7lsNaKKy7fg8?mnE-yJ&Es5WPV~jm*-D2QFeihSd zx73f!cMaU>efmJepGeXM3#z*rT#8x5bsT>ry7ikB_Di%3N6Qp?6q9C6+MHw!n#`bt z$ay&hil1&qV{#K@vn-NJed8DJ^lY@f3_827c6)uWuKtaVwjJZa#BgpzFB||&nH4QBNIvHKTBh07bFM+mzZI0ksBIzfbiB@aqC?21DB-P=o{r^-yllrgk**Eu zk%A`ROnnd-cNBpGlDwLqDTfO`=dT zsRBr{SaCvhV@`P0o_>E&t5Yd2@-NTmXO*iw7D)wf_ z;&)lDm8E}+B4I)ab*J-vwK@EH0?6Yrpg2P(z-ZZgvwn(m<38;By|Jds!V$U4>TBJ${_{{ zpxKG3U@z7!>lf2hhYDnE( z5gHRyq+8%IJ@pL?;6Ka*M!g2ezkwqK0m({q5S%j+8Pjw9%y(;Gq$#>pGOOEiDmvtb zR>HL$otSUr`+O`Gj*7vgpbRE>;646P!YJ?At1+~sN}QwG1C;TeSd}eQLP5-Z@=C8p z-SaP`ZYWC(6t@x<<1>g`Q-N{XUmzDZlZv4%*JiozLW*krdIrj4>iokiIp8gVA4Fuw4&&ZfsBC2<%9( z21Z+Uz}!S0+8;5aNJnK;UCxyI{E4zL!IEqkQ&EL9%$+nyJMvmNR<-4%U>1IYu3Dwn zGdjigwg0SObt=kgE1884m28@IYDP0Fx&J^Ve5rLBj%urgI}g>i;>Tzy&kIt%$u;|# zr&>P897L5jpb5fn{vXzxN?GtwCu}u!TtUMmCKtIbZP9w-UML#Oo+wYU>okqB3YDMR z!Tz9R-Bgst^QD^*j(j52kznQoEq1U=#1J#P8I*=T{Zp1aq}77P?G_#H^RQPX;hSw?5mfRGSudtN zGirSimiOExSyG`HdxeKS60qAqlTZlh_2`7IQ;CP)o@vve2&&*jU3$Dm-xaxa4{~Y$ z#)C7K&$ZcCNdbqZX z0-uJBX0km>mKxAotF^?U!O9M&LFXqN>BG-umA@Qk-x|=@Qi4VAM1Qi)wvO3B?xwmX zciyIS9jum@s@wdYs>{nSA8wzg2vsGOBe!UB&>C_y&ilBIqmz27KkFDXl&gl{Tb

    LL3}z)vQ{vmBeA-(QseUs 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%0Abc(@34?G1F{3ol6K)QZs0CAt8_gR)?w7Wl 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 _4n+}k`^#L(eqv0WU^C@oOn_1=V!uN%_ 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 z%0D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