├── .nojekyll ├── loadtesterrors.txt ├── .swp ├── composer.json ├── docs ├── googleb15838bee3877d6b.html └── stylesheets │ └── extra.css ├── logo.jpg ├── site ├── googleb15838bee3877d6b.html ├── sitemap.xml.gz ├── img │ └── favicon.ico ├── css │ └── fonts │ │ ├── lato-bold.woff │ │ ├── lato-bold.woff2 │ │ ├── lato-normal.woff │ │ ├── lato-normal.woff2 │ │ ├── Roboto-Slab-Bold.woff │ │ ├── Roboto-Slab-Bold.woff2 │ │ ├── lato-bold-italic.woff │ │ ├── lato-bold-italic.woff2 │ │ ├── Roboto-Slab-Regular.woff │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── lato-normal-italic.woff │ │ ├── lato-normal-italic.woff2 │ │ ├── Roboto-Slab-Regular.woff2 │ │ └── fontawesome-webfont.woff2 ├── sitemap.xml ├── js │ └── theme_extra.js └── stylesheets │ └── extra.css ├── loadtestingresults2.ods ├── mkdocs.yml ├── tests └── fixtures │ ├── backuptester_V3.1.2.mbz │ ├── backuptester_V4.5.3.mbz │ ├── backuptester_V5.0.3.mbz │ └── sqrmodule.py ├── vendor ├── twig │ └── twig │ │ ├── phpstan.neon.dist │ │ ├── src │ │ ├── Extension │ │ │ ├── RuntimeExtensionInterface.php │ │ │ ├── GlobalsInterface.php │ │ │ ├── OptimizerExtension.php │ │ │ ├── LastModifiedExtensionInterface.php │ │ │ ├── YieldNotReadyExtension.php │ │ │ ├── StringLoaderExtension.php │ │ │ └── ProfilerExtension.php │ │ ├── Node │ │ │ ├── Expression │ │ │ │ ├── Variable │ │ │ │ │ ├── ContextVariable.php │ │ │ │ │ ├── LocalVariable.php │ │ │ │ │ ├── AssignContextVariable.php │ │ │ │ │ └── TemplateVariable.php │ │ │ │ ├── Binary │ │ │ │ │ ├── PowerBinary.php │ │ │ │ │ ├── SpaceshipBinary.php │ │ │ │ │ ├── AddBinary.php │ │ │ │ │ ├── AndBinary.php │ │ │ │ │ ├── DivBinary.php │ │ │ │ │ ├── ModBinary.php │ │ │ │ │ ├── MulBinary.php │ │ │ │ │ ├── OrBinary.php │ │ │ │ │ ├── SubBinary.php │ │ │ │ │ ├── ConcatBinary.php │ │ │ │ │ ├── XorBinary.php │ │ │ │ │ ├── BitwiseAndBinary.php │ │ │ │ │ ├── BitwiseOrBinary.php │ │ │ │ │ ├── BitwiseXorBinary.php │ │ │ │ │ ├── FloorDivBinary.php │ │ │ │ │ ├── RangeBinary.php │ │ │ │ │ ├── InBinary.php │ │ │ │ │ ├── NotInBinary.php │ │ │ │ │ ├── HasSomeBinary.php │ │ │ │ │ ├── HasEveryBinary.php │ │ │ │ │ ├── EqualBinary.php │ │ │ │ │ ├── LessBinary.php │ │ │ │ │ ├── GreaterBinary.php │ │ │ │ │ ├── LessEqualBinary.php │ │ │ │ │ ├── NotEqualBinary.php │ │ │ │ │ ├── GreaterEqualBinary.php │ │ │ │ │ ├── EndsWithBinary.php │ │ │ │ │ └── StartsWithBinary.php │ │ │ │ ├── Unary │ │ │ │ │ ├── SpreadUnary.php │ │ │ │ │ ├── NegUnary.php │ │ │ │ │ ├── NotUnary.php │ │ │ │ │ ├── PosUnary.php │ │ │ │ │ └── StringCastUnary.php │ │ │ │ ├── VariadicExpression.php │ │ │ │ ├── OperatorEscapeInterface.php │ │ │ │ ├── ConstantExpression.php │ │ │ │ ├── Test │ │ │ │ │ ├── NullTest.php │ │ │ │ │ ├── OddTest.php │ │ │ │ │ ├── EvenTest.php │ │ │ │ │ ├── SameasTest.php │ │ │ │ │ └── DivisiblebyTest.php │ │ │ │ ├── InlinePrint.php │ │ │ │ └── AbstractExpression.php │ │ │ ├── NodeOutputInterface.php │ │ │ ├── NodeCaptureInterface.php │ │ │ ├── BodyNode.php │ │ │ ├── Nodes.php │ │ │ ├── TypesNode.php │ │ │ ├── EmptyNode.php │ │ │ ├── CheckSecurityCallNode.php │ │ │ ├── FlushNode.php │ │ │ ├── DoNode.php │ │ │ ├── TextNode.php │ │ │ ├── AutoEscapeNode.php │ │ │ ├── BlockReferenceNode.php │ │ │ ├── ForElseNode.php │ │ │ ├── NameDeprecation.php │ │ │ └── PrintNode.php │ │ ├── Cache │ │ │ ├── RemovableCacheInterface.php │ │ │ ├── ReadOnlyFilesystemCache.php │ │ │ └── NullCache.php │ │ ├── Error │ │ │ ├── LoaderError.php │ │ │ └── RuntimeError.php │ │ ├── Attribute │ │ │ ├── YieldReady.php │ │ │ └── FirstClassTwigCallableReady.php │ │ ├── Sandbox │ │ │ ├── SecurityError.php │ │ │ ├── SourcePolicyInterface.php │ │ │ ├── SecurityNotAllowedTagError.php │ │ │ ├── SecurityNotAllowedFilterError.php │ │ │ ├── SecurityNotAllowedFunctionError.php │ │ │ ├── SecurityNotAllowedMethodError.php │ │ │ ├── SecurityNotAllowedPropertyError.php │ │ │ └── SecurityPolicyInterface.php │ │ ├── Resources │ │ │ ├── debug.php │ │ │ └── string_loader.php │ │ ├── TokenParser │ │ │ ├── AbstractTokenParser.php │ │ │ ├── FlushTokenParser.php │ │ │ ├── DoTokenParser.php │ │ │ └── TokenParserInterface.php │ │ ├── Util │ │ │ └── TemplateDirIterator.php │ │ ├── RuntimeLoader │ │ │ ├── RuntimeLoaderInterface.php │ │ │ ├── ContainerRuntimeLoader.php │ │ │ └── FactoryRuntimeLoader.php │ │ ├── OperatorPrecedenceChange.php │ │ ├── Profiler │ │ │ ├── Node │ │ │ │ └── LeaveProfileNode.php │ │ │ └── Dumper │ │ │ │ └── TextDumper.php │ │ ├── Source.php │ │ ├── NodeVisitor │ │ │ └── NodeVisitorInterface.php │ │ └── Markup.php │ │ ├── README.rst │ │ └── phpstan-baseline.neon ├── composer │ ├── autoload_namespaces.php │ ├── autoload_classmap.php │ ├── autoload_psr4.php │ ├── autoload_files.php │ ├── platform_check.php │ └── LICENSE ├── symfony │ ├── deprecation-contracts │ │ ├── CHANGELOG.md │ │ ├── composer.json │ │ ├── function.php │ │ ├── LICENSE │ │ └── README.md │ ├── polyfill-ctype │ │ ├── README.md │ │ ├── composer.json │ │ └── LICENSE │ ├── polyfill-mbstring │ │ ├── README.md │ │ ├── LICENSE │ │ └── composer.json │ └── polyfill-php81 │ │ ├── Resources │ │ └── stubs │ │ │ └── ReturnTypeWillChange.php │ │ ├── README.md │ │ ├── bootstrap.php │ │ ├── Php81.php │ │ ├── composer.json │ │ └── LICENSE └── autoload.php ├── amd ├── src │ ├── ui_ace_gapfiller.json │ ├── ui_html.json │ ├── ui_gapfiller.json │ ├── ui_ace.json │ └── ui_table.json └── build │ └── resetbutton.min.js ├── ace ├── mode-text.js ├── snippets │ ├── d.js │ ├── abap.js │ ├── ada.js │ ├── alda.js │ ├── apex.js │ ├── aql.js │ ├── asl.js │ ├── csp.js │ ├── dot.js │ ├── ejs.js │ ├── elm.js │ ├── ftl.js │ ├── glsl.js │ ├── haxe.js │ ├── ini.js │ ├── jack.js │ ├── jade.js │ ├── json.js │ ├── jssm.js │ ├── jsx.js │ ├── less.js │ ├── lisp.js │ ├── mask.js │ ├── mel.js │ ├── mips.js │ ├── nim.js │ ├── nix.js │ ├── nsis.js │ ├── pig.js │ ├── qml.js │ ├── raku.js │ ├── rdoc.js │ ├── red.js │ ├── rust.js │ ├── sass.js │ ├── scad.js │ ├── scss.js │ ├── sjs.js │ ├── slim.js │ ├── svg.js │ ├── text.js │ ├── toml.js │ ├── tsx.js │ ├── twig.js │ ├── vhdl.js │ ├── xml.js │ ├── yaml.js │ ├── zeek.js │ ├── cirru.js │ ├── cobol.js │ ├── crystal.js │ ├── csharp.js │ ├── curly.js │ ├── eiffel.js │ ├── elixir.js │ ├── forth.js │ ├── fortran.js │ ├── fsharp.js │ ├── gcode.js │ ├── gherkin.js │ ├── golang.js │ ├── groovy.js │ ├── hjson.js │ ├── json5.js │ ├── julia.js │ ├── kotlin.js │ ├── latex.js │ ├── latte.js │ ├── logiql.js │ ├── logtalk.js │ ├── luapage.js │ ├── lucene.js │ ├── matlab.js │ ├── mixal.js │ ├── mysql.js │ ├── nginx.js │ ├── ocaml.js │ ├── pascal.js │ ├── pgsql.js │ ├── praat.js │ ├── prisma.js │ ├── prolog.js │ ├── puppet.js │ ├── rhtml.js │ ├── scala.js │ ├── scheme.js │ ├── scrypt.js │ ├── smarty.js │ ├── smithy.js │ ├── space.js │ ├── sparql.js │ ├── stylus.js │ ├── swift.js │ ├── turtle.js │ ├── verilog.js │ ├── asciidoc.js │ ├── batchfile.js │ ├── c9search.js │ ├── gitignore.js │ ├── html_ruby.js │ ├── mediawiki.js │ ├── mushcode.js │ ├── nunjucks.js │ ├── protobuf.js │ ├── redshift.js │ ├── terraform.js │ ├── vbscript.js │ ├── apache_conf.js │ ├── applescript.js │ ├── assembly_x86.js │ ├── autohotkey.js │ ├── coldfusion.js │ ├── csound_score.js │ ├── dockerfile.js │ ├── handlebars.js │ ├── html_elixir.js │ ├── livescript.js │ ├── objectivec.js │ ├── plain_text.js │ ├── powershell.js │ ├── properties.js │ ├── soy_template.js │ ├── typescript.js │ ├── visualforce.js │ ├── haskell_cabal.js │ ├── php_laravel_blade.js │ ├── fsl.js │ ├── razor.js │ ├── makefile.js │ ├── maze.js │ ├── snippets.js │ ├── csound_document.js │ ├── drools.js │ ├── haml.js │ ├── rst.js │ ├── diff.js │ ├── lua.js │ ├── textile.js │ ├── velocity.js │ └── graphqlschema.js ├── ext-error_marker.js └── mode-plain_text.js ├── thirdpartylibs.xml ├── ucprivate └── findquiztagsforquestionattempt.sql ├── pix ├── icon.svg ├── fullscreen.svg └── windowed.svg ├── .github └── workflows │ └── docs.yml ├── .gitignore ├── classes ├── bad_json_exception.php └── exception.php ├── db └── install.php └── downloadquizattemptsanon.php /.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /loadtesterrors.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/.swp -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "twig/twig": "^3.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /docs/googleb15838bee3877d6b.html: -------------------------------------------------------------------------------- 1 | google-site-verification: googleb15838bee3877d6b.html -------------------------------------------------------------------------------- /logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/logo.jpg -------------------------------------------------------------------------------- /site/googleb15838bee3877d6b.html: -------------------------------------------------------------------------------- 1 | google-site-verification: googleb15838bee3877d6b.html -------------------------------------------------------------------------------- /site/sitemap.xml.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/sitemap.xml.gz -------------------------------------------------------------------------------- /site/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/img/favicon.ico -------------------------------------------------------------------------------- /loadtestingresults2.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/loadtestingresults2.ods -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: CodeRunner 2 | theme: 3 | name: readthedocs 4 | extra_css: 5 | - stylesheets/extra.css 6 | -------------------------------------------------------------------------------- /site/css/fonts/lato-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/lato-bold.woff -------------------------------------------------------------------------------- /site/css/fonts/lato-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/lato-bold.woff2 -------------------------------------------------------------------------------- /site/css/fonts/lato-normal.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/lato-normal.woff -------------------------------------------------------------------------------- /site/css/fonts/lato-normal.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/lato-normal.woff2 -------------------------------------------------------------------------------- /site/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /site/css/fonts/Roboto-Slab-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/Roboto-Slab-Bold.woff -------------------------------------------------------------------------------- /site/css/fonts/Roboto-Slab-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/Roboto-Slab-Bold.woff2 -------------------------------------------------------------------------------- /site/css/fonts/lato-bold-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/lato-bold-italic.woff -------------------------------------------------------------------------------- /site/css/fonts/lato-bold-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/lato-bold-italic.woff2 -------------------------------------------------------------------------------- /site/css/fonts/Roboto-Slab-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/Roboto-Slab-Regular.woff -------------------------------------------------------------------------------- /site/css/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /site/css/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /site/css/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /site/css/fonts/lato-normal-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/lato-normal-italic.woff -------------------------------------------------------------------------------- /site/css/fonts/lato-normal-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/lato-normal-italic.woff2 -------------------------------------------------------------------------------- /tests/fixtures/backuptester_V3.1.2.mbz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/tests/fixtures/backuptester_V3.1.2.mbz -------------------------------------------------------------------------------- /tests/fixtures/backuptester_V4.5.3.mbz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/tests/fixtures/backuptester_V4.5.3.mbz -------------------------------------------------------------------------------- /tests/fixtures/backuptester_V5.0.3.mbz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/tests/fixtures/backuptester_V5.0.3.mbz -------------------------------------------------------------------------------- /site/css/fonts/Roboto-Slab-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/Roboto-Slab-Regular.woff2 -------------------------------------------------------------------------------- /site/css/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/HEAD/site/css/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /tests/fixtures/sqrmodule.py: -------------------------------------------------------------------------------- 1 | """An implementation of the sqr function in a file to be attached and imported""" 2 | def sqr(n): 3 | return n * n 4 | -------------------------------------------------------------------------------- /vendor/twig/twig/phpstan.neon.dist: -------------------------------------------------------------------------------- 1 | includes: 2 | - phpstan-baseline.neon 3 | 4 | parameters: 5 | level: 3 6 | paths: 7 | - src 8 | excludePaths: 9 | - src/Test 10 | -------------------------------------------------------------------------------- /vendor/composer/autoload_namespaces.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | vendor/twig 5 | Twig 6 | 1.28.2 7 | BSD 3-Clause 8 | 9 | 10 | ace 11 | Ace 12 | 1.2.5 13 | BSD 3-Clause 14 | 15 | 16 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-mbstring/README.md: -------------------------------------------------------------------------------- 1 | Symfony Polyfill / Mbstring 2 | =========================== 3 | 4 | This component provides a partial, native PHP implementation for the 5 | [Mbstring](https://php.net/mbstring) extension. 6 | 7 | More information can be found in the 8 | [main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). 9 | 10 | License 11 | ======= 12 | 13 | This library is released under the [MIT license](LICENSE). 14 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Extension/RuntimeExtensionInterface.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | interface RuntimeExtensionInterface 18 | { 19 | } 20 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Variable/ContextVariable.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | interface NodeOutputInterface 20 | { 21 | } 22 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Variable/AssignContextVariable.php: -------------------------------------------------------------------------------- 1 | $vendorDir . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', 10 | 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 11 | 'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', 12 | ); 13 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Cache/RemovableCacheInterface.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | interface RemovableCacheInterface 18 | { 19 | public function remove(string $name, string $cls): void; 20 | } 21 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Error/LoaderError.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class LoaderError extends Error 20 | { 21 | } 22 | -------------------------------------------------------------------------------- /vendor/composer/autoload_psr4.php: -------------------------------------------------------------------------------- 1 | array($vendorDir . '/twig/twig/src'), 10 | 'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'), 11 | 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), 12 | 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), 13 | ); 14 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/NodeCaptureInterface.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | interface NodeCaptureInterface 20 | { 21 | } 22 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Attribute/YieldReady.php: -------------------------------------------------------------------------------- 1 | 20 | */ 21 | #[YieldReady] 22 | class BodyNode extends Node 23 | { 24 | } 25 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Error/RuntimeError.php: -------------------------------------------------------------------------------- 1 | 19 | */ 20 | class RuntimeError extends Error 21 | { 22 | } 23 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Attribute/FirstClassTwigCallableReady.php: -------------------------------------------------------------------------------- 1 | 20 | */ 21 | class SecurityError extends Error 22 | { 23 | } 24 | -------------------------------------------------------------------------------- /ace/snippets/fsl.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/fsl",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = ""; 6 | 7 | }); (function() { 8 | ace.require(["ace/snippets/fsl"], function(m) { 9 | if (typeof module == "object" && typeof exports == "object" && module) { 10 | module.exports = m; 11 | } 12 | }); 13 | })(); 14 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/PowerBinary.php: -------------------------------------------------------------------------------- 1 | raw('**'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | if (\PHP_VERSION_ID < 80100) { 13 | #[Attribute(Attribute::TARGET_METHOD)] 14 | final class ReturnTypeWillChange 15 | { 16 | public function __construct() 17 | { 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Unary/SpreadUnary.php: -------------------------------------------------------------------------------- 1 | raw('...'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/SpaceshipBinary.php: -------------------------------------------------------------------------------- 1 | raw('<=>'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Unary/NegUnary.php: -------------------------------------------------------------------------------- 1 | raw('-'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Unary/NotUnary.php: -------------------------------------------------------------------------------- 1 | raw('!'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Unary/PosUnary.php: -------------------------------------------------------------------------------- 1 | raw('+'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Unary/StringCastUnary.php: -------------------------------------------------------------------------------- 1 | raw('(string)'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/AddBinary.php: -------------------------------------------------------------------------------- 1 | raw('+'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/AndBinary.php: -------------------------------------------------------------------------------- 1 | raw('&&'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/DivBinary.php: -------------------------------------------------------------------------------- 1 | raw('/'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/ModBinary.php: -------------------------------------------------------------------------------- 1 | raw('%'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/MulBinary.php: -------------------------------------------------------------------------------- 1 | raw('*'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/OrBinary.php: -------------------------------------------------------------------------------- 1 | raw('||'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/SubBinary.php: -------------------------------------------------------------------------------- 1 | raw('-'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/ConcatBinary.php: -------------------------------------------------------------------------------- 1 | raw('.'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/XorBinary.php: -------------------------------------------------------------------------------- 1 | raw('xor'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php: -------------------------------------------------------------------------------- 1 | raw('&'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php: -------------------------------------------------------------------------------- 1 | raw('|'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php: -------------------------------------------------------------------------------- 1 | raw('^'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/VariadicExpression.php: -------------------------------------------------------------------------------- 1 | raw('...'); 21 | 22 | parent::compile($compiler); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ace/snippets/razor.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/razor",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet if\n\ 5 | (${1} == ${2}) {\n\ 6 | ${3}\n\ 7 | }"; 8 | exports.scope = "razor"; 9 | 10 | }); (function() { 11 | ace.require(["ace/snippets/razor"], function(m) { 12 | if (typeof module == "object" && typeof exports == "object" && module) { 13 | module.exports = m; 14 | } 15 | }); 16 | })(); 17 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Extension/GlobalsInterface.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | interface GlobalsInterface 20 | { 21 | /** 22 | * @return array 23 | */ 24 | public function getGlobals(): array; 25 | } 26 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SourcePolicyInterface.php: -------------------------------------------------------------------------------- 1 | 1. 16 | * 17 | * @author Fabien Potencier 18 | */ 19 | interface OperatorEscapeInterface 20 | { 21 | /** 22 | * @return string[] 23 | */ 24 | public function getOperandNamesToEscape(): array; 25 | } 26 | -------------------------------------------------------------------------------- /pix/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 16 | 21 | Cr 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ace/snippets/makefile.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/makefile",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet ifeq\n\ 5 | ifeq (${1:cond0},${2:cond1})\n\ 6 | ${3:code}\n\ 7 | endif\n\ 8 | "; 9 | exports.scope = "makefile"; 10 | 11 | }); (function() { 12 | ace.require(["ace/snippets/makefile"], function(m) { 13 | if (typeof module == "object" && typeof exports == "object" && module) { 14 | module.exports = m; 15 | } 16 | }); 17 | })(); 18 | -------------------------------------------------------------------------------- /amd/src/ui_ace.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ui_ace", 3 | "parameters": { 4 | "auto_switch_light_dark": { 5 | "type": "boolean", 6 | "default": false 7 | }, 8 | "font_size": { 9 | "type": "string", 10 | "default": "14px" 11 | }, 12 | "import_from_scratchpad": { 13 | "type": "boolean", 14 | "default": true 15 | }, 16 | "live_autocompletion": { 17 | "type": "boolean", 18 | "default": false 19 | }, 20 | "theme": { 21 | "type": "string", 22 | "default": "textmate" 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Nodes.php: -------------------------------------------------------------------------------- 1 | 20 | */ 21 | #[YieldReady] 22 | final class Nodes extends Node 23 | { 24 | public function __construct(array $nodes = [], int $lineno = 0) 25 | { 26 | parent::__construct($nodes, [], $lineno); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Extension/OptimizerExtension.php: -------------------------------------------------------------------------------- 1 | optimizers)]; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Cache/ReadOnlyFilesystemCache.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class ReadOnlyFilesystemCache extends FilesystemCache 20 | { 21 | public function write(string $key, string $content): void 22 | { 23 | // Do nothing with the content, it's a read-only filesystem. 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Resources/debug.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | use Twig\Environment; 13 | use Twig\Extension\DebugExtension; 14 | 15 | /** 16 | * @internal 17 | * 18 | * @deprecated since Twig 3.9 19 | */ 20 | function twig_var_dump(Environment $env, $context, ...$vars) 21 | { 22 | trigger_deprecation('twig/twig', '3.9', 'Using the internal "%s" function is deprecated.', __FUNCTION__); 23 | 24 | DebugExtension::dump($env, $context, ...$vars); 25 | } 26 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/TypesNode.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | #[YieldReady] 14 | class TypesNode extends Node 15 | { 16 | /** 17 | * @param array $types 18 | */ 19 | public function __construct(array $types, int $lineno) 20 | { 21 | parent::__construct([], ['mapping' => $types], $lineno); 22 | } 23 | 24 | /** 25 | * @return void 26 | */ 27 | public function compile(Compiler $compiler) 28 | { 29 | // Don't compile anything. 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /.github/workflows/docs.yml: -------------------------------------------------------------------------------- 1 | name: Deploy Documentation 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | - main 8 | 9 | jobs: 10 | deploy-docs: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v4 14 | with: 15 | fetch-depth: 0 # Fetch full history for gh-pages deployment 16 | 17 | - name: Setup Python 18 | uses: actions/setup-python@v4 19 | with: 20 | python-version: '3.x' 21 | 22 | - name: Install mkdocs and dependencies 23 | run: | 24 | pip install mkdocs mkdocs-material 25 | 26 | - name: Build documentation 27 | run: mkdocs build 28 | 29 | - name: Deploy to GitHub Pages 30 | run: mkdocs gh-deploy --force -------------------------------------------------------------------------------- /ace/snippets/maze.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/maze",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet >\n\ 5 | description assignment\n\ 6 | scope maze\n\ 7 | -> ${1}= ${2}\n\ 8 | \n\ 9 | snippet >\n\ 10 | description if\n\ 11 | scope maze\n\ 12 | -> IF ${2:**} THEN %${3:L} ELSE %${4:R}\n\ 13 | "; 14 | exports.scope = "maze"; 15 | 16 | }); (function() { 17 | ace.require(["ace/snippets/maze"], function(m) { 18 | if (typeof module == "object" && typeof exports == "object" && module) { 19 | module.exports = m; 20 | } 21 | }); 22 | })(); 23 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/TokenParser/AbstractTokenParser.php: -------------------------------------------------------------------------------- 1 | 20 | */ 21 | abstract class AbstractTokenParser implements TokenParserInterface 22 | { 23 | /** 24 | * @var Parser 25 | */ 26 | protected $parser; 27 | 28 | public function setParser(Parser $parser): void 29 | { 30 | $this->parser = $parser; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Extension/LastModifiedExtensionInterface.php: -------------------------------------------------------------------------------- 1 | useYield)]; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php: -------------------------------------------------------------------------------- 1 | raw('(int) floor('); 21 | parent::compile($compiler); 22 | $compiler->raw(')'); 23 | } 24 | 25 | public function operator(Compiler $compiler): Compiler 26 | { 27 | return $compiler->raw('/'); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php81/README.md: -------------------------------------------------------------------------------- 1 | Symfony Polyfill / Php81 2 | ======================== 3 | 4 | This component provides features added to PHP 8.1 core: 5 | 6 | - [`array_is_list`](https://php.net/array_is_list) 7 | - [`enum_exists`](https://php.net/enum-exists) 8 | - [`MYSQLI_REFRESH_REPLICA`](https://php.net/mysqli.constants#constantmysqli-refresh-replica) constant 9 | - [`ReturnTypeWillChange`](https://wiki.php.net/rfc/internal_method_return_types) 10 | - [`CURLStringFile`](https://php.net/CURLStringFile) (but only if PHP >= 7.4 is used) 11 | 12 | More information can be found in the 13 | [main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). 14 | 15 | License 16 | ======= 17 | 18 | This library is released under the [MIT license](LICENSE). 19 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/ConstantExpression.php: -------------------------------------------------------------------------------- 1 | $value], $lineno); 25 | } 26 | 27 | public function compile(Compiler $compiler): void 28 | { 29 | $compiler->repr($this->getAttribute('value')); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ace/snippets/snippets.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/snippets",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# snippets for making snippets :)\n\ 5 | snippet snip\n\ 6 | snippet ${1:trigger}\n\ 7 | ${2}\n\ 8 | snippet msnip\n\ 9 | snippet ${1:trigger} ${2:description}\n\ 10 | ${3}\n\ 11 | snippet v\n\ 12 | {VISUAL}\n\ 13 | "; 14 | exports.scope = "snippets"; 15 | 16 | }); (function() { 17 | ace.require(["ace/snippets/snippets"], function(m) { 18 | if (typeof module == "object" && typeof exports == "object" && module) { 19 | module.exports = m; 20 | } 21 | }); 22 | })(); 23 | -------------------------------------------------------------------------------- /ace/snippets/csound_document.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/csound_document",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# \n\ 5 | snippet synth\n\ 6 | \n\ 7 | \n\ 8 | ${1}\n\ 9 | \n\ 10 | \n\ 11 | e\n\ 12 | \n\ 13 | \n\ 14 | "; 15 | exports.scope = "csound_document"; 16 | 17 | }); (function() { 18 | ace.require(["ace/snippets/csound_document"], function(m) { 19 | if (typeof module == "object" && typeof exports == "object" && module) { 20 | module.exports = m; 21 | } 22 | }); 23 | })(); 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/EmptyNode.php: -------------------------------------------------------------------------------- 1 | 20 | */ 21 | #[YieldReady] 22 | final class EmptyNode extends Node 23 | { 24 | public function __construct(int $lineno = 0) 25 | { 26 | parent::__construct([], [], $lineno); 27 | } 28 | 29 | public function setNode(string $name, Node $node): void 30 | { 31 | throw new \LogicException('EmptyNode cannot have children.'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Resources/string_loader.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | use Twig\Environment; 13 | use Twig\Extension\StringLoaderExtension; 14 | use Twig\TemplateWrapper; 15 | 16 | /** 17 | * @internal 18 | * 19 | * @deprecated since Twig 3.9 20 | */ 21 | function twig_template_from_string(Environment $env, $template, ?string $name = null): TemplateWrapper 22 | { 23 | trigger_deprecation('twig/twig', '3.9', 'Using the internal "%s" function is deprecated.', __FUNCTION__); 24 | 25 | return StringLoaderExtension::templateFromString($env, $template, $name); 26 | } 27 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/CheckSecurityCallNode.php: -------------------------------------------------------------------------------- 1 | 19 | */ 20 | #[YieldReady] 21 | class CheckSecurityCallNode extends Node 22 | { 23 | /** 24 | * @return void 25 | */ 26 | public function compile(Compiler $compiler) 27 | { 28 | $compiler 29 | ->write("\$this->sandbox = \$this->extensions[SandboxExtension::class];\n") 30 | ->write("\$this->checkSecurity();\n") 31 | ; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Util/TemplateDirIterator.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class TemplateDirIterator extends \IteratorIterator 18 | { 19 | /** 20 | * @return mixed 21 | */ 22 | #[\ReturnTypeWillChange] 23 | public function current() 24 | { 25 | return file_get_contents(parent::current()); 26 | } 27 | 28 | /** 29 | * @return mixed 30 | */ 31 | #[\ReturnTypeWillChange] 32 | public function key() 33 | { 34 | return (string) parent::key(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | interface RuntimeLoaderInterface 20 | { 21 | /** 22 | * Creates the runtime implementation of a Twig element (filter/function/test). 23 | * 24 | * @return object|null The runtime instance or null if the loader does not know how to create the runtime for this class 25 | */ 26 | public function load(string $class); 27 | } 28 | -------------------------------------------------------------------------------- /vendor/twig/twig/README.rst: -------------------------------------------------------------------------------- 1 | Twig, the flexible, fast, and secure template language for PHP 2 | ============================================================== 3 | 4 | Twig is a template language for PHP. 5 | 6 | Twig uses a syntax similar to the Django and Jinja template languages which 7 | inspired the Twig runtime environment. 8 | 9 | Sponsors 10 | -------- 11 | 12 | .. raw:: html 13 | 14 | 15 | Blackfire.io 16 | 17 | 18 | More Information 19 | ---------------- 20 | 21 | Read the `documentation`_ for more information. 22 | 23 | .. _documentation: https://twig.symfony.com/documentation 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Test/NullTest.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | class NullTest extends TestExpression 25 | { 26 | public function compile(Compiler $compiler): void 27 | { 28 | $compiler 29 | ->raw('(null === ') 30 | ->subcompile($this->getNode('node')) 31 | ->raw(')') 32 | ; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Test/OddTest.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | class OddTest extends TestExpression 25 | { 26 | public function compile(Compiler $compiler): void 27 | { 28 | $compiler 29 | ->raw('(') 30 | ->subcompile($this->getNode('node')) 31 | ->raw(' % 2 != 0') 32 | ->raw(')') 33 | ; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/RangeBinary.php: -------------------------------------------------------------------------------- 1 | raw('range(') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Compiler $compiler): Compiler 30 | { 31 | return $compiler->raw('..'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Test/EvenTest.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | class EvenTest extends TestExpression 25 | { 26 | public function compile(Compiler $compiler): void 27 | { 28 | $compiler 29 | ->raw('(') 30 | ->subcompile($this->getNode('node')) 31 | ->raw(' % 2 == 0') 32 | ->raw(')') 33 | ; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class SecurityNotAllowedTagError extends SecurityError 20 | { 21 | private string $tagName; 22 | 23 | public function __construct(string $message, string $tagName) 24 | { 25 | parent::__construct($message); 26 | $this->tagName = $tagName; 27 | } 28 | 29 | public function getTagName(): string 30 | { 31 | return $this->tagName; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/autoload.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | use Symfony\Polyfill\Php81 as p; 13 | 14 | if (\PHP_VERSION_ID >= 80100) { 15 | return; 16 | } 17 | 18 | if (defined('MYSQLI_REFRESH_SLAVE') && !defined('MYSQLI_REFRESH_REPLICA')) { 19 | define('MYSQLI_REFRESH_REPLICA', 64); 20 | } 21 | 22 | if (!function_exists('array_is_list')) { 23 | function array_is_list(array $array): bool { return p\Php81::array_is_list($array); } 24 | } 25 | 26 | if (!function_exists('enum_exists')) { 27 | function enum_exists(string $enum, bool $autoload = true): bool { return $autoload && class_exists($enum) && false; } 28 | } 29 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/InBinary.php: -------------------------------------------------------------------------------- 1 | raw('CoreExtension::inFilter(') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Compiler $compiler): Compiler 30 | { 31 | return $compiler->raw('in'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/TokenParser/FlushTokenParser.php: -------------------------------------------------------------------------------- 1 | parser->getStream()->expect(Token::BLOCK_END_TYPE); 30 | 31 | return new FlushNode($token->getLine()); 32 | } 33 | 34 | public function getTag(): string 35 | { 36 | return 'flush'; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/NotInBinary.php: -------------------------------------------------------------------------------- 1 | raw('!CoreExtension::inFilter(') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Compiler $compiler): Compiler 30 | { 31 | return $compiler->raw('not in'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php81/Php81.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | namespace Symfony\Polyfill\Php81; 13 | 14 | /** 15 | * @author Nicolas Grekas 16 | * 17 | * @internal 18 | */ 19 | final class Php81 20 | { 21 | public static function array_is_list(array $array): bool 22 | { 23 | if ([] === $array || $array === array_values($array)) { 24 | return true; 25 | } 26 | 27 | $nextKey = -1; 28 | 29 | foreach ($array as $k => $v) { 30 | if ($k !== ++$nextKey) { 31 | return false; 32 | } 33 | } 34 | 35 | return true; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/HasSomeBinary.php: -------------------------------------------------------------------------------- 1 | raw('CoreExtension::arraySome($this->env, ') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Compiler $compiler): Compiler 30 | { 31 | return $compiler->raw(''); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class SecurityNotAllowedFilterError extends SecurityError 20 | { 21 | private string $filterName; 22 | 23 | public function __construct(string $message, string $functionName) 24 | { 25 | parent::__construct($message); 26 | $this->filterName = $functionName; 27 | } 28 | 29 | public function getFilterName(): string 30 | { 31 | return $this->filterName; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/HasEveryBinary.php: -------------------------------------------------------------------------------- 1 | raw('CoreExtension::arrayEvery($this->env, ') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Compiler $compiler): Compiler 30 | { 31 | return $compiler->raw(''); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class SecurityNotAllowedFunctionError extends SecurityError 20 | { 21 | private string $functionName; 22 | 23 | public function __construct(string $message, string $functionName) 24 | { 25 | parent::__construct($message); 26 | $this->functionName = $functionName; 27 | } 28 | 29 | public function getFunctionName(): string 30 | { 31 | return $this->functionName; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | nbproject 2 | TopLogs 3 | .html 4 | loadtestingresults.ods 5 | /MoodleBook/makemoodlebook.py 6 | gh-md-toc 7 | moodlebook.zip 8 | /makemoodlebook.py 9 | /MoodleBook/ 10 | /Screendumps/ 11 | Readme.md.* 12 | /tests/fixtures/test-sandbox-config.php 13 | /LocalStuff/ 14 | /Preloading/selenium-server-standalone-2.53.0.jar 15 | /selenium-server-standalone-2.53.0.jar 16 | /selenium-server-standalone-3.0.1.jar 17 | striptrailingwhitespace.py 18 | excludesfromstylechecker.txt 19 | miscsqlqueries 20 | moodleopenshift.md 21 | dbquerieswhilefixingbug.sql 22 | /questions-moodle-Questions for export-20171106-1418.xml 23 | /twighacking.php 24 | NonRepoFiles/* 25 | /amd/src/blockly/ 26 | /amd/build/blockly/ 27 | /amd/build/bak/ 28 | /amd/build/ui_blockly.min.js 29 | /amd/build/ui_blockly.min.js.map 30 | /amd/src/partiallyupdatedgraph/ 31 | /amd/src/ui_blockly.js 32 | /amd/src/ui_blockly.json 33 | /amd/src/.eslintrc.js 34 | .grunt 35 | .vscode/ 36 | -------------------------------------------------------------------------------- /ace/snippets/drools.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/drools",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "\n\ 5 | snippet rule\n\ 6 | rule \"${1?:rule_name}\"\n\ 7 | when\n\ 8 | ${2:// when...} \n\ 9 | then\n\ 10 | ${3:// then...}\n\ 11 | end\n\ 12 | \n\ 13 | snippet query\n\ 14 | query ${1?:query_name}\n\ 15 | ${2:// find} \n\ 16 | end\n\ 17 | \n\ 18 | snippet declare\n\ 19 | declare ${1?:type_name}\n\ 20 | ${2:// attributes} \n\ 21 | end\n\ 22 | \n\ 23 | "; 24 | exports.scope = "drools"; 25 | 26 | }); (function() { 27 | ace.require(["ace/snippets/drools"], function(m) { 28 | if (typeof module == "object" && typeof exports == "object" && module) { 29 | module.exports = m; 30 | } 31 | }); 32 | })(); 33 | -------------------------------------------------------------------------------- /pix/fullscreen.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Test/SameasTest.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | class SameasTest extends TestExpression 23 | { 24 | public function compile(Compiler $compiler): void 25 | { 26 | $compiler 27 | ->raw('(') 28 | ->subcompile($this->getNode('node')) 29 | ->raw(' === ') 30 | ->subcompile($this->getNode('arguments')->getNode('0')) 31 | ->raw(')') 32 | ; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /pix/windowed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/TokenParser/DoTokenParser.php: -------------------------------------------------------------------------------- 1 | parser->getExpressionParser()->parseExpression(); 28 | 29 | $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); 30 | 31 | return new DoNode($expr, $token->getLine()); 32 | } 33 | 34 | public function getTag(): string 35 | { 36 | return 'do'; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/FlushNode.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | #[YieldReady] 23 | class FlushNode extends Node 24 | { 25 | public function __construct(int $lineno) 26 | { 27 | parent::__construct([], [], $lineno); 28 | } 29 | 30 | public function compile(Compiler $compiler): void 31 | { 32 | $compiler->addDebugInfo($this); 33 | 34 | if ($compiler->getEnvironment()->useYield()) { 35 | $compiler->write("yield '';\n"); 36 | } 37 | 38 | $compiler->write("flush();\n"); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/composer/autoload_files.php: -------------------------------------------------------------------------------- 1 | $vendorDir . '/symfony/deprecation-contracts/function.php', 10 | '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', 11 | '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', 12 | '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php', 13 | '89efb1254ef2d1c5d80096acd12c4098' => $vendorDir . '/twig/twig/src/Resources/core.php', 14 | 'ffecb95d45175fd40f75be8a23b34f90' => $vendorDir . '/twig/twig/src/Resources/debug.php', 15 | 'c7baa00073ee9c61edf148c51917cfb4' => $vendorDir . '/twig/twig/src/Resources/escaper.php', 16 | 'f844ccf1d25df8663951193c3fc307c8' => $vendorDir . '/twig/twig/src/Resources/string_loader.php', 17 | ); 18 | -------------------------------------------------------------------------------- /classes/bad_json_exception.php: -------------------------------------------------------------------------------- 1 | . 16 | 17 | /** 18 | * Library routines for qtype_coderunner 19 | */ 20 | 21 | /* The class for an exception when bad json passed to util::template_params */ 22 | class qtype_coderunner_bad_json_exception extends Exception { 23 | } 24 | -------------------------------------------------------------------------------- /db/install.php: -------------------------------------------------------------------------------- 1 | . 16 | 17 | /** 18 | * Extra install code for the CodeRunner question type. 19 | */ 20 | 21 | function xmldb_qtype_coderunner_install() { 22 | require_once(__DIR__ . '/upgradelib.php'); 23 | update_question_types(); 24 | } 25 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | class DivisiblebyTest extends TestExpression 25 | { 26 | public function compile(Compiler $compiler): void 27 | { 28 | $compiler 29 | ->raw('(0 == ') 30 | ->subcompile($this->getNode('node')) 31 | ->raw(' % ') 32 | ->subcompile($this->getNode('arguments')->getNode('0')) 33 | ->raw(')') 34 | ; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/OperatorPrecedenceChange.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class OperatorPrecedenceChange 20 | { 21 | public function __construct( 22 | private string $package, 23 | private string $version, 24 | private int $newPrecedence, 25 | ) { 26 | } 27 | 28 | public function getPackage(): string 29 | { 30 | return $this->package; 31 | } 32 | 33 | public function getVersion(): string 34 | { 35 | return $this->version; 36 | } 37 | 38 | public function getNewPrecedence(): int 39 | { 40 | return $this->newPrecedence; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Cache/NullCache.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class NullCache implements CacheInterface, RemovableCacheInterface 20 | { 21 | public function generateKey(string $name, string $className): string 22 | { 23 | return ''; 24 | } 25 | 26 | public function write(string $key, string $content): void 27 | { 28 | } 29 | 30 | public function load(string $key): void 31 | { 32 | } 33 | 34 | public function getTimestamp(string $key): int 35 | { 36 | return 0; 37 | } 38 | 39 | public function remove(string $name, string $cls): void 40 | { 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ace/snippets/haml.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/haml",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet t\n\ 5 | %table\n\ 6 | %tr\n\ 7 | %th\n\ 8 | ${1:headers}\n\ 9 | %tr\n\ 10 | %td\n\ 11 | ${2:headers}\n\ 12 | snippet ul\n\ 13 | %ul\n\ 14 | %li\n\ 15 | ${1:item}\n\ 16 | %li\n\ 17 | snippet =rp\n\ 18 | = render :partial => '${1:partial}'\n\ 19 | snippet =rpl\n\ 20 | = render :partial => '${1:partial}', :locals => {}\n\ 21 | snippet =rpc\n\ 22 | = render :partial => '${1:partial}', :collection => @$1\n\ 23 | \n\ 24 | "; 25 | exports.scope = "haml"; 26 | 27 | }); (function() { 28 | ace.require(["ace/snippets/haml"], function(m) { 29 | if (typeof module == "object" && typeof exports == "object" && module) { 30 | module.exports = m; 31 | } 32 | }); 33 | })(); 34 | -------------------------------------------------------------------------------- /ace/snippets/rst.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/rst",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# rst\n\ 5 | \n\ 6 | snippet :\n\ 7 | :${1:field name}: ${2:field body}\n\ 8 | snippet *\n\ 9 | *${1:Emphasis}*\n\ 10 | snippet **\n\ 11 | **${1:Strong emphasis}**\n\ 12 | snippet _\n\ 13 | \\`${1:hyperlink-name}\\`_\n\ 14 | .. _\\`$1\\`: ${2:link-block}\n\ 15 | snippet =\n\ 16 | ${1:Title}\n\ 17 | =====${2:=}\n\ 18 | ${3}\n\ 19 | snippet -\n\ 20 | ${1:Title}\n\ 21 | -----${2:-}\n\ 22 | ${3}\n\ 23 | snippet cont:\n\ 24 | .. contents::\n\ 25 | \n\ 26 | "; 27 | exports.scope = "rst"; 28 | 29 | }); (function() { 30 | ace.require(["ace/snippets/rst"], function(m) { 31 | if (typeof module == "object" && typeof exports == "object" && module) { 32 | module.exports = m; 33 | } 34 | }); 35 | })(); 36 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/DoNode.php: -------------------------------------------------------------------------------- 1 | 22 | */ 23 | #[YieldReady] 24 | class DoNode extends Node 25 | { 26 | public function __construct(AbstractExpression $expr, int $lineno) 27 | { 28 | parent::__construct(['expr' => $expr], [], $lineno); 29 | } 30 | 31 | public function compile(Compiler $compiler): void 32 | { 33 | $compiler 34 | ->addDebugInfo($this) 35 | ->write('') 36 | ->subcompile($this->getNode('expr')) 37 | ->raw(";\n") 38 | ; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/symfony/deprecation-contracts/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "symfony/deprecation-contracts", 3 | "type": "library", 4 | "description": "A generic function and convention to trigger deprecation notices", 5 | "homepage": "https://symfony.com", 6 | "license": "MIT", 7 | "authors": [ 8 | { 9 | "name": "Nicolas Grekas", 10 | "email": "p@tchwork.com" 11 | }, 12 | { 13 | "name": "Symfony Community", 14 | "homepage": "https://symfony.com/contributors" 15 | } 16 | ], 17 | "require": { 18 | "php": ">=8.1" 19 | }, 20 | "autoload": { 21 | "files": [ 22 | "function.php" 23 | ] 24 | }, 25 | "minimum-stability": "dev", 26 | "extra": { 27 | "branch-alias": { 28 | "dev-main": "3.6-dev" 29 | }, 30 | "thanks": { 31 | "name": "symfony/contracts", 32 | "url": "https://github.com/symfony/contracts" 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php: -------------------------------------------------------------------------------- 1 | 22 | * @author Robin Chalas 23 | */ 24 | class ContainerRuntimeLoader implements RuntimeLoaderInterface 25 | { 26 | public function __construct( 27 | private ContainerInterface $container, 28 | ) { 29 | } 30 | 31 | public function load(string $class) 32 | { 33 | return $this->container->has($class) ? $this->container->get($class) : null; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Profiler/Node/LeaveProfileNode.php: -------------------------------------------------------------------------------- 1 | 22 | */ 23 | #[YieldReady] 24 | class LeaveProfileNode extends Node 25 | { 26 | public function __construct(string $varName) 27 | { 28 | parent::__construct([], ['var_name' => $varName]); 29 | } 30 | 31 | public function compile(Compiler $compiler): void 32 | { 33 | $compiler 34 | ->write("\n") 35 | ->write(\sprintf("\$%s->leave(\$%s);\n\n", $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof')) 36 | ; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class FactoryRuntimeLoader implements RuntimeLoaderInterface 20 | { 21 | /** 22 | * @param array $map An array where keys are class names and values factory callables 23 | */ 24 | public function __construct( 25 | private array $map = [], 26 | ) { 27 | } 28 | 29 | public function load(string $class) 30 | { 31 | if (!isset($this->map[$class])) { 32 | return null; 33 | } 34 | 35 | $runtimeFactory = $this->map[$class]; 36 | 37 | return $runtimeFactory(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/EqualBinary.php: -------------------------------------------------------------------------------- 1 | = 80000) { 21 | parent::compile($compiler); 22 | 23 | return; 24 | } 25 | 26 | $compiler 27 | ->raw('(0 === CoreExtension::compare(') 28 | ->subcompile($this->getNode('left')) 29 | ->raw(', ') 30 | ->subcompile($this->getNode('right')) 31 | ->raw('))') 32 | ; 33 | } 34 | 35 | public function operator(Compiler $compiler): Compiler 36 | { 37 | return $compiler->raw('=='); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/LessBinary.php: -------------------------------------------------------------------------------- 1 | = 80000) { 21 | parent::compile($compiler); 22 | 23 | return; 24 | } 25 | 26 | $compiler 27 | ->raw('(-1 === CoreExtension::compare(') 28 | ->subcompile($this->getNode('left')) 29 | ->raw(', ') 30 | ->subcompile($this->getNode('right')) 31 | ->raw('))') 32 | ; 33 | } 34 | 35 | public function operator(Compiler $compiler): Compiler 36 | { 37 | return $compiler->raw('<'); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/TextNode.php: -------------------------------------------------------------------------------- 1 | 22 | */ 23 | #[YieldReady] 24 | class TextNode extends Node implements NodeOutputInterface 25 | { 26 | public function __construct(string $data, int $lineno) 27 | { 28 | parent::__construct([], ['data' => $data], $lineno); 29 | } 30 | 31 | public function compile(Compiler $compiler): void 32 | { 33 | $compiler->addDebugInfo($this); 34 | 35 | $compiler 36 | ->write('yield ') 37 | ->string($this->getAttribute('data')) 38 | ->raw(";\n") 39 | ; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/GreaterBinary.php: -------------------------------------------------------------------------------- 1 | = 80000) { 21 | parent::compile($compiler); 22 | 23 | return; 24 | } 25 | 26 | $compiler 27 | ->raw('(1 === CoreExtension::compare(') 28 | ->subcompile($this->getNode('left')) 29 | ->raw(', ') 30 | ->subcompile($this->getNode('right')) 31 | ->raw('))') 32 | ; 33 | } 34 | 35 | public function operator(Compiler $compiler): Compiler 36 | { 37 | return $compiler->raw('>'); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php: -------------------------------------------------------------------------------- 1 | = 80000) { 21 | parent::compile($compiler); 22 | 23 | return; 24 | } 25 | 26 | $compiler 27 | ->raw('(0 >= CoreExtension::compare(') 28 | ->subcompile($this->getNode('left')) 29 | ->raw(', ') 30 | ->subcompile($this->getNode('right')) 31 | ->raw('))') 32 | ; 33 | } 34 | 35 | public function operator(Compiler $compiler): Compiler 36 | { 37 | return $compiler->raw('<='); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php: -------------------------------------------------------------------------------- 1 | = 80000) { 21 | parent::compile($compiler); 22 | 23 | return; 24 | } 25 | 26 | $compiler 27 | ->raw('(0 !== CoreExtension::compare(') 28 | ->subcompile($this->getNode('left')) 29 | ->raw(', ') 30 | ->subcompile($this->getNode('right')) 31 | ->raw('))') 32 | ; 33 | } 34 | 35 | public function operator(Compiler $compiler): Compiler 36 | { 37 | return $compiler->raw('!='); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/InlinePrint.php: -------------------------------------------------------------------------------- 1 | $node], [], $lineno); 30 | } 31 | 32 | public function compile(Compiler $compiler): void 33 | { 34 | $compiler 35 | ->raw('yield ') 36 | ->subcompile($this->getNode('node')) 37 | ; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ace/snippets/diff.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/diff",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# DEP-3 (http://dep.debian.net/deps/dep3/) style patch header\n\ 5 | snippet header DEP-3 style header\n\ 6 | Description: ${1}\n\ 7 | Origin: ${2:vendor|upstream|other}, ${3:url of the original patch}\n\ 8 | Bug: ${4:url in upstream bugtracker}\n\ 9 | Forwarded: ${5:no|not-needed|url}\n\ 10 | Author: ${6:`g:snips_author`}\n\ 11 | Reviewed-by: ${7:name and email}\n\ 12 | Last-Update: ${8:`strftime(\"%Y-%m-%d\")`}\n\ 13 | Applied-Upstream: ${9:upstream version|url|commit}\n\ 14 | \n\ 15 | "; 16 | exports.scope = "diff"; 17 | 18 | }); (function() { 19 | ace.require(["ace/snippets/diff"], function(m) { 20 | if (typeof module == "object" && typeof exports == "object" && module) { 21 | module.exports = m; 22 | } 23 | }); 24 | })(); 25 | -------------------------------------------------------------------------------- /vendor/composer/platform_check.php: -------------------------------------------------------------------------------- 1 | = 80100)) { 8 | $issues[] = 'Your Composer dependencies require a PHP version ">= 8.1.0". You are running ' . PHP_VERSION . '.'; 9 | } 10 | 11 | if ($issues) { 12 | if (!headers_sent()) { 13 | header('HTTP/1.1 500 Internal Server Error'); 14 | } 15 | if (!ini_get('display_errors')) { 16 | if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { 17 | fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); 18 | } elseif (!headers_sent()) { 19 | 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; 20 | } 21 | } 22 | trigger_error( 23 | 'Composer detected issues in your platform: ' . implode(' ', $issues), 24 | E_USER_ERROR 25 | ); 26 | } 27 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php: -------------------------------------------------------------------------------- 1 | = 80000) { 21 | parent::compile($compiler); 22 | 23 | return; 24 | } 25 | 26 | $compiler 27 | ->raw('(0 <= CoreExtension::compare(') 28 | ->subcompile($this->getNode('left')) 29 | ->raw(', ') 30 | ->subcompile($this->getNode('right')) 31 | ->raw('))') 32 | ; 33 | } 34 | 35 | public function operator(Compiler $compiler): Compiler 36 | { 37 | return $compiler->raw('>='); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ace/snippets/lua.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/lua",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet #!\n\ 5 | #!/usr/bin/env lua\n\ 6 | $1\n\ 7 | snippet local\n\ 8 | local ${1:x} = ${2:1}\n\ 9 | snippet fun\n\ 10 | function ${1:fname}(${2:...})\n\ 11 | ${3:-- body}\n\ 12 | end\n\ 13 | snippet for\n\ 14 | for ${1:i}=${2:1},${3:10} do\n\ 15 | ${4:print(i)}\n\ 16 | end\n\ 17 | snippet forp\n\ 18 | for ${1:i},${2:v} in pairs(${3:table_name}) do\n\ 19 | ${4:-- body}\n\ 20 | end\n\ 21 | snippet fori\n\ 22 | for ${1:i},${2:v} in ipairs(${3:table_name}) do\n\ 23 | ${4:-- body}\n\ 24 | end\n\ 25 | "; 26 | exports.scope = "lua"; 27 | 28 | }); (function() { 29 | ace.require(["ace/snippets/lua"], function(m) { 30 | if (typeof module == "object" && typeof exports == "object" && module) { 31 | module.exports = m; 32 | } 33 | }); 34 | })(); 35 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/AutoEscapeNode.php: -------------------------------------------------------------------------------- 1 | 27 | */ 28 | #[YieldReady] 29 | class AutoEscapeNode extends Node 30 | { 31 | public function __construct($value, Node $body, int $lineno) 32 | { 33 | parent::__construct(['body' => $body], ['value' => $value], $lineno); 34 | } 35 | 36 | public function compile(Compiler $compiler): void 37 | { 38 | $compiler->subcompile($this->getNode('body')); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/BlockReferenceNode.php: -------------------------------------------------------------------------------- 1 | 22 | */ 23 | #[YieldReady] 24 | class BlockReferenceNode extends Node implements NodeOutputInterface 25 | { 26 | public function __construct(string $name, int $lineno) 27 | { 28 | parent::__construct([], ['name' => $name], $lineno); 29 | } 30 | 31 | public function compile(Compiler $compiler): void 32 | { 33 | $compiler 34 | ->addDebugInfo($this) 35 | ->write(\sprintf("yield from \$this->unwrap()->yieldBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name'))) 36 | ; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/ForElseNode.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | #[YieldReady] 23 | class ForElseNode extends Node 24 | { 25 | public function __construct(Node $body, int $lineno) 26 | { 27 | parent::__construct(['body' => $body], [], $lineno); 28 | } 29 | 30 | public function compile(Compiler $compiler): void 31 | { 32 | $compiler 33 | ->addDebugInfo($this) 34 | ->write("if (!\$context['_iterated']) {\n") 35 | ->indent() 36 | ->subcompile($this->getNode('body')) 37 | ->outdent() 38 | ->write("}\n") 39 | ; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /vendor/twig/twig/phpstan-baseline.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | ignoreErrors: 3 | - # The method is dynamically generated by the CheckSecurityNode 4 | message: '#^Call to an undefined method Twig\\Template\:\:checkSecurity\(\)\.$#' 5 | identifier: method.notFound 6 | count: 1 7 | path: src/Extension/CoreExtension.php 8 | 9 | - # 2 parameters will be required 10 | message: '#^Method Twig\\Node\\IncludeNode\:\:addGetTemplate\(\) invoked with 2 parameters, 1 required\.$#' 11 | identifier: arguments.count 12 | count: 1 13 | path: src/Node/IncludeNode.php 14 | 15 | - # int|string will be supported in 4.x 16 | message: '#^PHPDoc tag @param for parameter $name with type int|string is not subtype of native type string\.$#' 17 | identifier: parameter.phpDocType 18 | count: 5 19 | path: src/Node/Node.php 20 | 21 | - # Adding 0 to the string representation of a number is valid and what we want here 22 | message: '#^Binary operation "\+" between 0 and string results in an error\.$#' 23 | identifier: binaryOp.invalid 24 | count: 1 25 | path: src/Lexer.php 26 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Profiler/Dumper/TextDumper.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class TextDumper extends BaseDumper 20 | { 21 | protected function formatTemplate(Profile $profile, $prefix): string 22 | { 23 | return \sprintf('%s└ %s', $prefix, $profile->getTemplate()); 24 | } 25 | 26 | protected function formatNonTemplate(Profile $profile, $prefix): string 27 | { 28 | return \sprintf('%s└ %s::%s(%s)', $prefix, $profile->getTemplate(), $profile->getType(), $profile->getName()); 29 | } 30 | 31 | protected function formatTime(Profile $profile, $percent): string 32 | { 33 | return \sprintf('%.2fms/%.0f%%', $profile->getDuration() * 1000, $percent); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php81/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "symfony/polyfill-php81", 3 | "type": "library", 4 | "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", 5 | "keywords": ["polyfill", "shim", "compatibility", "portable"], 6 | "homepage": "https://symfony.com", 7 | "license": "MIT", 8 | "authors": [ 9 | { 10 | "name": "Nicolas Grekas", 11 | "email": "p@tchwork.com" 12 | }, 13 | { 14 | "name": "Symfony Community", 15 | "homepage": "https://symfony.com/contributors" 16 | } 17 | ], 18 | "require": { 19 | "php": ">=7.2" 20 | }, 21 | "autoload": { 22 | "psr-4": { "Symfony\\Polyfill\\Php81\\": "" }, 23 | "files": [ "bootstrap.php" ], 24 | "classmap": [ "Resources/stubs" ] 25 | }, 26 | "minimum-stability": "dev", 27 | "extra": { 28 | "thanks": { 29 | "name": "symfony/polyfill", 30 | "url": "https://github.com/symfony/polyfill" 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php: -------------------------------------------------------------------------------- 1 | getVarName(); 21 | $right = $compiler->getVarName(); 22 | $compiler 23 | ->raw(\sprintf('(is_string($%s = ', $left)) 24 | ->subcompile($this->getNode('left')) 25 | ->raw(\sprintf(') && is_string($%s = ', $right)) 26 | ->subcompile($this->getNode('right')) 27 | ->raw(\sprintf(') && str_ends_with($%1$s, $%2$s))', $left, $right)) 28 | ; 29 | } 30 | 31 | public function operator(Compiler $compiler): Compiler 32 | { 33 | return $compiler->raw(''); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php: -------------------------------------------------------------------------------- 1 | getVarName(); 21 | $right = $compiler->getVarName(); 22 | $compiler 23 | ->raw(\sprintf('(is_string($%s = ', $left)) 24 | ->subcompile($this->getNode('left')) 25 | ->raw(\sprintf(') && is_string($%s = ', $right)) 26 | ->subcompile($this->getNode('right')) 27 | ->raw(\sprintf(') && str_starts_with($%1$s, $%2$s))', $left, $right)) 28 | ; 29 | } 30 | 31 | public function operator(Compiler $compiler): Compiler 32 | { 33 | return $compiler->raw(''); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class SecurityNotAllowedMethodError extends SecurityError 20 | { 21 | private string $className; 22 | private string $methodName; 23 | 24 | public function __construct(string $message, string $className, string $methodName) 25 | { 26 | parent::__construct($message); 27 | $this->className = $className; 28 | $this->methodName = $methodName; 29 | } 30 | 31 | public function getClassName(): string 32 | { 33 | return $this->className; 34 | } 35 | 36 | public function getMethodName(): string 37 | { 38 | return $this->methodName; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/TokenParser/TokenParserInterface.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | interface TokenParserInterface 25 | { 26 | /** 27 | * Sets the parser associated with this token parser. 28 | */ 29 | public function setParser(Parser $parser): void; 30 | 31 | /** 32 | * Parses a token and returns a node. 33 | * 34 | * @return Node 35 | * 36 | * @throws SyntaxError 37 | */ 38 | public function parse(Token $token); 39 | 40 | /** 41 | * Gets the tag name associated with this token parser. 42 | * 43 | * @return string 44 | */ 45 | public function getTag(); 46 | } 47 | -------------------------------------------------------------------------------- /amd/build/resetbutton.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This AMD module provides the functionality for the "Reset" 3 | * button that is shown just below the student answer field if the question is 4 | * defined to have preloaded text. 5 | * If clicked, the button reloads the student answer field with the original 6 | * preloaded text (after a Confirm dialogue, of course). 7 | * 8 | * @module qtype_coderunner/resetbutton 9 | * @copyright Richard Lobb, 2016, The University of Canterbury 10 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 11 | */ 12 | define("qtype_coderunner/resetbutton",["jquery"],(function($){return{initResetButton:function(buttonId,answerId,confirmText){var uiWrapper,resetButton=$('[id="'+buttonId+'"]'),studentAnswer=$('[id="'+answerId+'"]');resetButton.on("click",(function(){if(window.behattesting||window.confirm(confirmText)){var reloadText=resetButton.attr("data-reload-text");(uiWrapper=studentAnswer.get(0).current_ui_wrapper)&&uiWrapper.uiInstance?(uiWrapper.stop(),studentAnswer.val(reloadText),uiWrapper.restart()):studentAnswer.val(reloadText)}}))}}})); 13 | 14 | //# sourceMappingURL=resetbutton.min.js.map -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class SecurityNotAllowedPropertyError extends SecurityError 20 | { 21 | private string $className; 22 | private string $propertyName; 23 | 24 | public function __construct(string $message, string $className, string $propertyName) 25 | { 26 | parent::__construct($message); 27 | $this->className = $className; 28 | $this->propertyName = $propertyName; 29 | } 30 | 31 | public function getClassName(): string 32 | { 33 | return $this->className; 34 | } 35 | 36 | public function getPropertyName(): string 37 | { 38 | return $this->propertyName; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/composer/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) Nils Adermann, Jordi Boggiano 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/NameDeprecation.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class NameDeprecation 20 | { 21 | private $package; 22 | private $version; 23 | private $newName; 24 | 25 | public function __construct(string $package = '', string $version = '', string $newName = '') 26 | { 27 | $this->package = $package; 28 | $this->version = $version; 29 | $this->newName = $newName; 30 | } 31 | 32 | public function getPackage(): string 33 | { 34 | return $this->package; 35 | } 36 | 37 | public function getVersion(): string 38 | { 39 | return $this->version; 40 | } 41 | 42 | public function getNewName(): string 43 | { 44 | return $this->newName; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-ctype/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "symfony/polyfill-ctype", 3 | "type": "library", 4 | "description": "Symfony polyfill for ctype functions", 5 | "keywords": ["polyfill", "compatibility", "portable", "ctype"], 6 | "homepage": "https://symfony.com", 7 | "license": "MIT", 8 | "authors": [ 9 | { 10 | "name": "Gert de Pagter", 11 | "email": "BackEndTea@gmail.com" 12 | }, 13 | { 14 | "name": "Symfony Community", 15 | "homepage": "https://symfony.com/contributors" 16 | } 17 | ], 18 | "require": { 19 | "php": ">=7.2" 20 | }, 21 | "provide": { 22 | "ext-ctype": "*" 23 | }, 24 | "autoload": { 25 | "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" }, 26 | "files": [ "bootstrap.php" ] 27 | }, 28 | "suggest": { 29 | "ext-ctype": "For best performance" 30 | }, 31 | "minimum-stability": "dev", 32 | "extra": { 33 | "thanks": { 34 | "name": "symfony/polyfill", 35 | "url": "https://github.com/symfony/polyfill" 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Source.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class Source 20 | { 21 | /** 22 | * @param string $code The template source code 23 | * @param string $name The template logical name 24 | * @param string $path The filesystem path of the template if any 25 | */ 26 | public function __construct( 27 | private string $code, 28 | private string $name, 29 | private string $path = '', 30 | ) { 31 | } 32 | 33 | public function getCode(): string 34 | { 35 | return $this->code; 36 | } 37 | 38 | public function getName(): string 39 | { 40 | return $this->name; 41 | } 42 | 43 | public function getPath(): string 44 | { 45 | return $this->path; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /amd/src/ui_table.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ui_table", 3 | "parameters": { 4 | "num_rows": { 5 | "type": "int", 6 | "default": null, 7 | "required": true 8 | }, 9 | "num_columns": { 10 | "type": "int", 11 | "default": null, 12 | "required": true 13 | }, 14 | "column_headers": { 15 | "type": "string[]", 16 | "default": [] 17 | }, 18 | "row_labels": { 19 | "type": "string[]", 20 | "default": [] 21 | }, 22 | "dynamic_rows": { 23 | "type": "boolean", 24 | "default": false 25 | }, 26 | "locked_cells": { 27 | "type": "int[][]", 28 | "default": [] 29 | }, 30 | "column_width_percents": { 31 | "type": "float[]", 32 | "default": [] 33 | }, 34 | "sync_interval_secs": { 35 | "type": "int", 36 | "default": 5 37 | }, 38 | "lines_per_cell": { 39 | "type": "int", 40 | "default": 2 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /vendor/symfony/deprecation-contracts/function.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | if (!function_exists('trigger_deprecation')) { 13 | /** 14 | * Triggers a silenced deprecation notice. 15 | * 16 | * @param string $package The name of the Composer package that is triggering the deprecation 17 | * @param string $version The version of the package that introduced the deprecation 18 | * @param string $message The message of the deprecation 19 | * @param mixed ...$args Values to insert in the message using printf() formatting 20 | * 21 | * @author Nicolas Grekas 22 | */ 23 | function trigger_deprecation(string $package, string $version, string $message, mixed ...$args): void 24 | { 25 | @trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-ctype/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018-present Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php81/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021-present Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vendor/symfony/deprecation-contracts/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020-present Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-mbstring/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015-present Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/AbstractExpression.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | abstract class AbstractExpression extends Node 23 | { 24 | public function isGenerator(): bool 25 | { 26 | return $this->hasAttribute('is_generator') && $this->getAttribute('is_generator'); 27 | } 28 | 29 | /** 30 | * @return static 31 | */ 32 | public function setExplicitParentheses(): self 33 | { 34 | $this->setAttribute('with_parentheses', true); 35 | 36 | return $this; 37 | } 38 | 39 | public function hasExplicitParentheses(): bool 40 | { 41 | return $this->hasAttribute('with_parentheses') && $this->getAttribute('with_parentheses'); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ace/snippets/textile.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/textile",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# Jekyll post header\n\ 5 | snippet header\n\ 6 | ---\n\ 7 | title: ${1:title}\n\ 8 | layout: post\n\ 9 | date: ${2:date} ${3:hour:minute:second} -05:00\n\ 10 | ---\n\ 11 | \n\ 12 | # Image\n\ 13 | snippet img\n\ 14 | !${1:url}(${2:title}):${3:link}!\n\ 15 | \n\ 16 | # Table\n\ 17 | snippet |\n\ 18 | |${1}|${2}\n\ 19 | \n\ 20 | # Link\n\ 21 | snippet link\n\ 22 | \"${1:link text}\":${2:url}\n\ 23 | \n\ 24 | # Acronym\n\ 25 | snippet (\n\ 26 | (${1:Expand acronym})${2}\n\ 27 | \n\ 28 | # Footnote\n\ 29 | snippet fn\n\ 30 | [${1:ref number}] ${3}\n\ 31 | \n\ 32 | fn$1. ${2:footnote}\n\ 33 | \n\ 34 | "; 35 | exports.scope = "textile"; 36 | 37 | }); (function() { 38 | ace.require(["ace/snippets/textile"], function(m) { 39 | if (typeof module == "object" && typeof exports == "object" && module) { 40 | module.exports = m; 41 | } 42 | }); 43 | })(); 44 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Variable/TemplateVariable.php: -------------------------------------------------------------------------------- 1 | getAttribute('name')) { 22 | $this->setAttribute('name', $compiler->getVarName()); 23 | } 24 | 25 | return $this->getAttribute('name'); 26 | } 27 | 28 | public function compile(Compiler $compiler): void 29 | { 30 | $name = $this->getName($compiler); 31 | 32 | if ('_self' === $name) { 33 | $compiler->raw('$this'); 34 | } else { 35 | $compiler 36 | ->raw('$macros[') 37 | ->string($name) 38 | ->raw(']') 39 | ; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-mbstring/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "symfony/polyfill-mbstring", 3 | "type": "library", 4 | "description": "Symfony polyfill for the Mbstring extension", 5 | "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"], 6 | "homepage": "https://symfony.com", 7 | "license": "MIT", 8 | "authors": [ 9 | { 10 | "name": "Nicolas Grekas", 11 | "email": "p@tchwork.com" 12 | }, 13 | { 14 | "name": "Symfony Community", 15 | "homepage": "https://symfony.com/contributors" 16 | } 17 | ], 18 | "require": { 19 | "php": ">=7.2", 20 | "ext-iconv": "*" 21 | }, 22 | "provide": { 23 | "ext-mbstring": "*" 24 | }, 25 | "autoload": { 26 | "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" }, 27 | "files": [ "bootstrap.php" ] 28 | }, 29 | "suggest": { 30 | "ext-mbstring": "For best performance" 31 | }, 32 | "minimum-stability": "dev", 33 | "extra": { 34 | "thanks": { 35 | "name": "symfony/polyfill", 36 | "url": "https://github.com/symfony/polyfill" 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ace/mode-plain_text.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | var oop = require("../lib/oop"); 5 | var TextMode = require("./text").Mode; 6 | var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; 7 | var Behaviour = require("./behaviour").Behaviour; 8 | 9 | var Mode = function() { 10 | this.HighlightRules = TextHighlightRules; 11 | this.$behaviour = new Behaviour(); 12 | }; 13 | 14 | oop.inherits(Mode, TextMode); 15 | 16 | (function() { 17 | this.type = "text"; 18 | this.getNextLineIndent = function(state, line, tab) { 19 | return ''; 20 | }; 21 | this.$id = "ace/mode/plain_text"; 22 | }).call(Mode.prototype); 23 | 24 | exports.Mode = Mode; 25 | }); (function() { 26 | ace.require(["ace/mode/plain_text"], function(m) { 27 | if (typeof module == "object" && typeof exports == "object" && module) { 28 | module.exports = m; 29 | } 30 | }); 31 | })(); 32 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/PrintNode.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | #[YieldReady] 25 | class PrintNode extends Node implements NodeOutputInterface 26 | { 27 | public function __construct(AbstractExpression $expr, int $lineno) 28 | { 29 | parent::__construct(['expr' => $expr], [], $lineno); 30 | } 31 | 32 | public function compile(Compiler $compiler): void 33 | { 34 | /** @var AbstractExpression */ 35 | $expr = $this->getNode('expr'); 36 | 37 | $compiler 38 | ->addDebugInfo($this) 39 | ->write($expr->isGenerator() ? 'yield from ' : 'yield ') 40 | ->subcompile($expr) 41 | ->raw(";\n") 42 | ; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SecurityPolicyInterface.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | interface SecurityPolicyInterface 20 | { 21 | /** 22 | * @param string[] $tags 23 | * @param string[] $filters 24 | * @param string[] $functions 25 | * 26 | * @throws SecurityError 27 | */ 28 | public function checkSecurity($tags, $filters, $functions): void; 29 | 30 | /** 31 | * @param object $obj 32 | * @param string $method 33 | * 34 | * @throws SecurityNotAllowedMethodError 35 | */ 36 | public function checkMethodAllowed($obj, $method): void; 37 | 38 | /** 39 | * @param object $obj 40 | * @param string $property 41 | * 42 | * @throws SecurityNotAllowedPropertyError 43 | */ 44 | public function checkPropertyAllowed($obj, $property): void; 45 | } 46 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Extension/StringLoaderExtension.php: -------------------------------------------------------------------------------- 1 | true]), 24 | ]; 25 | } 26 | 27 | /** 28 | * Loads a template from a string. 29 | * 30 | * {{ include(template_from_string("Hello {{ name }}")) }} 31 | * 32 | * @param string|null $name An optional name of the template to be used in error messages 33 | * 34 | * @internal 35 | */ 36 | public static function templateFromString(Environment $env, string|\Stringable $template, ?string $name = null): TemplateWrapper 37 | { 38 | return $env->createTemplate((string) $template, $name); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/NodeVisitor/NodeVisitorInterface.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | interface NodeVisitorInterface 23 | { 24 | /** 25 | * Called before child nodes are visited. 26 | * 27 | * @return Node The modified node 28 | */ 29 | public function enterNode(Node $node, Environment $env): Node; 30 | 31 | /** 32 | * Called after child nodes are visited. 33 | * 34 | * @return Node|null The modified node or null if the node must be removed 35 | */ 36 | public function leaveNode(Node $node, Environment $env): ?Node; 37 | 38 | /** 39 | * Returns the priority for this visitor. 40 | * 41 | * Priority should be between -10 and 10 (0 is the default). 42 | * 43 | * @return int The priority level 44 | */ 45 | public function getPriority(); 46 | } 47 | -------------------------------------------------------------------------------- /ace/snippets/velocity.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/velocity",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# macro\n\ 5 | snippet #macro\n\ 6 | #macro ( ${1:macroName} ${2:\\$var1, [\\$var2, ...]} )\n\ 7 | ${3:## macro code}\n\ 8 | #end\n\ 9 | # foreach\n\ 10 | snippet #foreach\n\ 11 | #foreach ( ${1:\\$item} in ${2:\\$collection} )\n\ 12 | ${3:## foreach code}\n\ 13 | #end\n\ 14 | # if\n\ 15 | snippet #if\n\ 16 | #if ( ${1:true} )\n\ 17 | ${0}\n\ 18 | #end\n\ 19 | # if ... else\n\ 20 | snippet #ife\n\ 21 | #if ( ${1:true} )\n\ 22 | ${2}\n\ 23 | #else\n\ 24 | ${0}\n\ 25 | #end\n\ 26 | #import\n\ 27 | snippet #import\n\ 28 | #import ( \"${1:path/to/velocity/format}\" )\n\ 29 | # set\n\ 30 | snippet #set\n\ 31 | #set ( $${1:var} = ${0} )\n\ 32 | "; 33 | exports.scope = "velocity"; 34 | exports.includeScopes = ["html", "javascript", "css"]; 35 | 36 | }); (function() { 37 | ace.require(["ace/snippets/velocity"], function(m) { 38 | if (typeof module == "object" && typeof exports == "object" && module) { 39 | module.exports = m; 40 | } 41 | }); 42 | })(); 43 | -------------------------------------------------------------------------------- /classes/exception.php: -------------------------------------------------------------------------------- 1 | . 16 | 17 | /** 18 | * Library routines for qtype_coderunner 19 | */ 20 | 21 | /* The class for exceptions thrown in the coderunner plugin */ 22 | class qtype_coderunner_exception extends moodle_exception { 23 | /** 24 | * @param string $errorcode exception description identifier 25 | * @param mixed $debuginfo debugging data to display 26 | */ 27 | public function __construct($errorcode, $a = null, $debuginfo = null) { 28 | parent::__construct($errorcode, 'qtype_coderunner', '', $a, $debuginfo); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /downloadquizattemptsanon.php: -------------------------------------------------------------------------------- 1 | . 16 | 17 | /** 18 | * This admin script is a variant of downloadquizattempts.php (q.v.) that 19 | * differs only in that the user name and email are replaced by a single 20 | * hashed_email field. 21 | * 22 | * @package qtype_coderunner 23 | * @copyright 2017 Richard Lobb, The University of Canterbury 24 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 25 | */ 26 | defined('MOODLE_INTERNAL') || die(); 27 | 28 | define('ANONYMISE', 1); 29 | require(__DIR__ . '/downloadquizattempts.php'); 30 | -------------------------------------------------------------------------------- /ace/snippets/graphqlschema.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/graphqlschema",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# Type Snippet\n\ 5 | trigger type\n\ 6 | snippet type\n\ 7 | type ${1:type_name} {\n\ 8 | ${2:type_siblings}\n\ 9 | }\n\ 10 | \n\ 11 | # Input Snippet\n\ 12 | trigger input\n\ 13 | snippet input\n\ 14 | input ${1:input_name} {\n\ 15 | ${2:input_siblings}\n\ 16 | }\n\ 17 | \n\ 18 | # Interface Snippet\n\ 19 | trigger interface\n\ 20 | snippet interface\n\ 21 | interface ${1:interface_name} {\n\ 22 | ${2:interface_siblings}\n\ 23 | }\n\ 24 | \n\ 25 | # Interface Snippet\n\ 26 | trigger union\n\ 27 | snippet union\n\ 28 | union ${1:union_name} = ${2:type} | ${3: type}\n\ 29 | \n\ 30 | # Enum Snippet\n\ 31 | trigger enum\n\ 32 | snippet enum\n\ 33 | enum ${1:enum_name} {\n\ 34 | ${2:enum_siblings}\n\ 35 | }\n\ 36 | "; 37 | exports.scope = "graphqlschema"; 38 | 39 | }); (function() { 40 | ace.require(["ace/snippets/graphqlschema"], function(m) { 41 | if (typeof module == "object" && typeof exports == "object" && module) { 42 | module.exports = m; 43 | } 44 | }); 45 | })(); 46 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Extension/ProfilerExtension.php: -------------------------------------------------------------------------------- 1 | actives[] = $profile; 24 | } 25 | 26 | /** 27 | * @return void 28 | */ 29 | public function enter(Profile $profile) 30 | { 31 | $this->actives[0]->addProfile($profile); 32 | array_unshift($this->actives, $profile); 33 | } 34 | 35 | /** 36 | * @return void 37 | */ 38 | public function leave(Profile $profile) 39 | { 40 | $profile->leave(); 41 | array_shift($this->actives); 42 | 43 | if (1 === \count($this->actives)) { 44 | $this->actives[0]->leave(); 45 | } 46 | } 47 | 48 | public function getNodeVisitors(): array 49 | { 50 | return [new ProfilerNodeVisitor(static::class)]; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /vendor/symfony/deprecation-contracts/README.md: -------------------------------------------------------------------------------- 1 | Symfony Deprecation Contracts 2 | ============================= 3 | 4 | A generic function and convention to trigger deprecation notices. 5 | 6 | This package provides a single global function named `trigger_deprecation()` that triggers silenced deprecation notices. 7 | 8 | By using a custom PHP error handler such as the one provided by the Symfony ErrorHandler component, 9 | the triggered deprecations can be caught and logged for later discovery, both on dev and prod environments. 10 | 11 | The function requires at least 3 arguments: 12 | - the name of the Composer package that is triggering the deprecation 13 | - the version of the package that introduced the deprecation 14 | - the message of the deprecation 15 | - more arguments can be provided: they will be inserted in the message using `printf()` formatting 16 | 17 | Example: 18 | ```php 19 | trigger_deprecation('symfony/blockchain', '8.9', 'Using "%s" is deprecated, use "%s" instead.', 'bitcoin', 'fabcoin'); 20 | ``` 21 | 22 | This will generate the following message: 23 | `Since symfony/blockchain 8.9: Using "bitcoin" is deprecated, use "fabcoin" instead.` 24 | 25 | While not recommended, the deprecation notices can be completely ignored by declaring an empty 26 | `function trigger_deprecation() {}` in your application. 27 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Markup.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class Markup implements \Countable, \JsonSerializable, \Stringable 20 | { 21 | private $content; 22 | private ?string $charset; 23 | 24 | public function __construct($content, $charset) 25 | { 26 | $this->content = (string) $content; 27 | $this->charset = $charset; 28 | } 29 | 30 | public function __toString(): string 31 | { 32 | return $this->content; 33 | } 34 | 35 | public function getCharset(): string 36 | { 37 | return $this->charset; 38 | } 39 | 40 | /** 41 | * @return int 42 | */ 43 | #[\ReturnTypeWillChange] 44 | public function count() 45 | { 46 | return mb_strlen($this->content, $this->charset); 47 | } 48 | 49 | /** 50 | * @return mixed 51 | */ 52 | #[\ReturnTypeWillChange] 53 | public function jsonSerialize() 54 | { 55 | return $this->content; 56 | } 57 | } 58 | --------------------------------------------------------------------------------