Safe SVG - Version 1.7.1

Version Description

  • Updated underlying lib and added new filters for filtering allowed tags and attributes
Download this release

Release Info

Developer enshrined
Plugin Icon 128x128 Safe SVG
Version 1.7.1
Comparing to
See all releases

Code changes from version 1.6.1 to 1.7.1

includes/safe-svg-attributes.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ class safe_svg_attributes extends \enshrined\svgSanitize\data\AllowedAttributes {
5
+
6
+ /**
7
+ * Returns an array of attributes
8
+ *
9
+ * @return array
10
+ */
11
+ public static function getAttributes() {
12
+
13
+ /**
14
+ * var array Attributes that are allowed.
15
+ */
16
+ return apply_filters( 'svg_allowed_attributes', parent::getAttributes() );
17
+ }
18
+ }
includes/safe-svg-tags.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ class safe_svg_tags extends \enshrined\svgSanitize\data\AllowedTags {
5
+
6
+ /**
7
+ * Returns an array of tags
8
+ *
9
+ * @return array
10
+ */
11
+ public static function getTags() {
12
+
13
+ /**
14
+ * var array Tags that are allowed.
15
+ */
16
+ return apply_filters( 'svg_allowed_tags', parent::getTags() );
17
+ }
18
+ }
lib/composer.lock CHANGED
@@ -1,29 +1,28 @@
1
  {
2
  "_readme": [
3
  "This file locks the dependencies of your project to a known state",
4
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5
  "This file is @generated automatically"
6
  ],
7
- "hash": "1ed57f7ea0ec83a7af33211c4ed92344",
8
  "content-hash": "b63765525e5fabcf664728d548ecf8a2",
9
  "packages": [
10
  {
11
  "name": "enshrined/svg-sanitize",
12
- "version": "0.8.2",
13
  "source": {
14
  "type": "git",
15
  "url": "https://github.com/darylldoyle/svg-sanitizer.git",
16
- "reference": "432fc4fc7e95b8a866790ba27e35076b9dd96ebe"
17
  },
18
  "dist": {
19
  "type": "zip",
20
- "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/432fc4fc7e95b8a866790ba27e35076b9dd96ebe",
21
- "reference": "432fc4fc7e95b8a866790ba27e35076b9dd96ebe",
22
  "shasum": ""
23
  },
24
  "require-dev": {
25
  "codeclimate/php-test-reporter": "^0.1.2",
26
- "phpunit/phpunit": "^4.7"
27
  },
28
  "type": "library",
29
  "autoload": {
@@ -42,7 +41,7 @@
42
  }
43
  ],
44
  "description": "An SVG sanitizer for PHP",
45
- "time": "2017-12-06 15:31:26"
46
  }
47
  ],
48
  "packages-dev": [],
1
  {
2
  "_readme": [
3
  "This file locks the dependencies of your project to a known state",
4
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
  "This file is @generated automatically"
6
  ],
 
7
  "content-hash": "b63765525e5fabcf664728d548ecf8a2",
8
  "packages": [
9
  {
10
  "name": "enshrined/svg-sanitize",
11
+ "version": "0.9.2",
12
  "source": {
13
  "type": "git",
14
  "url": "https://github.com/darylldoyle/svg-sanitizer.git",
15
+ "reference": "e0cb5ad3abea5459e0962cf79a92d34714c74dfa"
16
  },
17
  "dist": {
18
  "type": "zip",
19
+ "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/e0cb5ad3abea5459e0962cf79a92d34714c74dfa",
20
+ "reference": "e0cb5ad3abea5459e0962cf79a92d34714c74dfa",
21
  "shasum": ""
22
  },
23
  "require-dev": {
24
  "codeclimate/php-test-reporter": "^0.1.2",
25
+ "phpunit/phpunit": "^6"
26
  },
27
  "type": "library",
28
  "autoload": {
41
  }
42
  ],
43
  "description": "An SVG sanitizer for PHP",
44
+ "time": "2018-10-01T17:11:02+00:00"
45
  }
46
  ],
47
  "packages-dev": [],
lib/vendor/autoload.php CHANGED
@@ -2,6 +2,6 @@
2
 
3
  // autoload.php @generated by Composer
4
 
5
- require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
  return ComposerAutoloaderInit0917edb609b9527c9322825d39f92c1b::getLoader();
2
 
3
  // autoload.php @generated by Composer
4
 
5
+ require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
  return ComposerAutoloaderInit0917edb609b9527c9322825d39f92c1b::getLoader();
lib/vendor/composer/ClassLoader.php CHANGED
@@ -53,8 +53,9 @@ class ClassLoader
53
 
54
  private $useIncludePath = false;
55
  private $classMap = array();
56
-
57
  private $classMapAuthoritative = false;
 
 
58
 
59
  public function getPrefixes()
60
  {
@@ -271,6 +272,26 @@ class ClassLoader
271
  return $this->classMapAuthoritative;
272
  }
273
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  /**
275
  * Registers this instance as an autoloader.
276
  *
@@ -313,29 +334,34 @@ class ClassLoader
313
  */
314
  public function findFile($class)
315
  {
316
- // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
317
- if ('\\' == $class[0]) {
318
- $class = substr($class, 1);
319
- }
320
-
321
  // class map lookup
322
  if (isset($this->classMap[$class])) {
323
  return $this->classMap[$class];
324
  }
325
- if ($this->classMapAuthoritative) {
326
  return false;
327
  }
 
 
 
 
 
 
328
 
329
  $file = $this->findFileWithExtension($class, '.php');
330
 
331
  // Search for Hack files if we are running on HHVM
332
- if ($file === null && defined('HHVM_VERSION')) {
333
  $file = $this->findFileWithExtension($class, '.hh');
334
  }
335
 
336
- if ($file === null) {
 
 
 
 
337
  // Remember that this class does not exist.
338
- return $this->classMap[$class] = false;
339
  }
340
 
341
  return $file;
@@ -348,10 +374,14 @@ class ClassLoader
348
 
349
  $first = $class[0];
350
  if (isset($this->prefixLengthsPsr4[$first])) {
351
- foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
352
- if (0 === strpos($class, $prefix)) {
353
- foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
354
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
 
 
 
 
355
  return $file;
356
  }
357
  }
@@ -399,6 +429,8 @@ class ClassLoader
399
  if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
400
  return $file;
401
  }
 
 
402
  }
403
  }
404
 
53
 
54
  private $useIncludePath = false;
55
  private $classMap = array();
 
56
  private $classMapAuthoritative = false;
57
+ private $missingClasses = array();
58
+ private $apcuPrefix;
59
 
60
  public function getPrefixes()
61
  {
272
  return $this->classMapAuthoritative;
273
  }
274
 
275
+ /**
276
+ * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
277
+ *
278
+ * @param string|null $apcuPrefix
279
+ */
280
+ public function setApcuPrefix($apcuPrefix)
281
+ {
282
+ $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
283
+ }
284
+
285
+ /**
286
+ * The APCu prefix in use, or null if APCu caching is not enabled.
287
+ *
288
+ * @return string|null
289
+ */
290
+ public function getApcuPrefix()
291
+ {
292
+ return $this->apcuPrefix;
293
+ }
294
+
295
  /**
296
  * Registers this instance as an autoloader.
297
  *
334
  */
335
  public function findFile($class)
336
  {
 
 
 
 
 
337
  // class map lookup
338
  if (isset($this->classMap[$class])) {
339
  return $this->classMap[$class];
340
  }
341
+ if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
342
  return false;
343
  }
344
+ if (null !== $this->apcuPrefix) {
345
+ $file = apcu_fetch($this->apcuPrefix.$class, $hit);
346
+ if ($hit) {
347
+ return $file;
348
+ }
349
+ }
350
 
351
  $file = $this->findFileWithExtension($class, '.php');
352
 
353
  // Search for Hack files if we are running on HHVM
354
+ if (false === $file && defined('HHVM_VERSION')) {
355
  $file = $this->findFileWithExtension($class, '.hh');
356
  }
357
 
358
+ if (null !== $this->apcuPrefix) {
359
+ apcu_add($this->apcuPrefix.$class, $file);
360
+ }
361
+
362
+ if (false === $file) {
363
  // Remember that this class does not exist.
364
+ $this->missingClasses[$class] = true;
365
  }
366
 
367
  return $file;
374
 
375
  $first = $class[0];
376
  if (isset($this->prefixLengthsPsr4[$first])) {
377
+ $subPath = $class;
378
+ while (false !== $lastPos = strrpos($subPath, '\\')) {
379
+ $subPath = substr($subPath, 0, $lastPos);
380
+ $search = $subPath . '\\';
381
+ if (isset($this->prefixDirsPsr4[$search])) {
382
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
383
+ foreach ($this->prefixDirsPsr4[$search] as $dir) {
384
+ if (file_exists($file = $dir . $pathEnd)) {
385
  return $file;
386
  }
387
  }
429
  if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
430
  return $file;
431
  }
432
+
433
+ return false;
434
  }
435
  }
436
 
lib/vendor/composer/LICENSE CHANGED
@@ -1,5 +1,5 @@
1
 
2
- Copyright (c) 2016 Nils Adermann, Jordi Boggiano
3
 
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
5
  of this software and associated documentation files (the "Software"), to deal
1
 
2
+ Copyright (c) Nils Adermann, Jordi Boggiano
3
 
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
5
  of this software and associated documentation files (the "Software"), to deal
lib/vendor/composer/autoload_real.php CHANGED
@@ -23,7 +23,7 @@ class ComposerAutoloaderInit0917edb609b9527c9322825d39f92c1b
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
  spl_autoload_unregister(array('ComposerAutoloaderInit0917edb609b9527c9322825d39f92c1b', 'loadClassLoader'));
25
 
26
- $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION');
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
  spl_autoload_unregister(array('ComposerAutoloaderInit0917edb609b9527c9322825d39f92c1b', 'loadClassLoader'));
25
 
26
+ $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
lib/vendor/composer/installed.json CHANGED
@@ -1,24 +1,24 @@
1
  [
2
  {
3
  "name": "enshrined/svg-sanitize",
4
- "version": "0.8.2",
5
- "version_normalized": "0.8.2.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/darylldoyle/svg-sanitizer.git",
9
- "reference": "432fc4fc7e95b8a866790ba27e35076b9dd96ebe"
10
  },
11
  "dist": {
12
  "type": "zip",
13
- "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/432fc4fc7e95b8a866790ba27e35076b9dd96ebe",
14
- "reference": "432fc4fc7e95b8a866790ba27e35076b9dd96ebe",
15
  "shasum": ""
16
  },
17
  "require-dev": {
18
  "codeclimate/php-test-reporter": "^0.1.2",
19
- "phpunit/phpunit": "^4.7"
20
  },
21
- "time": "2017-12-06 15:31:26",
22
  "type": "library",
23
  "installation-source": "dist",
24
  "autoload": {
1
  [
2
  {
3
  "name": "enshrined/svg-sanitize",
4
+ "version": "0.9.2",
5
+ "version_normalized": "0.9.2.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/darylldoyle/svg-sanitizer.git",
9
+ "reference": "e0cb5ad3abea5459e0962cf79a92d34714c74dfa"
10
  },
11
  "dist": {
12
  "type": "zip",
13
+ "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/e0cb5ad3abea5459e0962cf79a92d34714c74dfa",
14
+ "reference": "e0cb5ad3abea5459e0962cf79a92d34714c74dfa",
15
  "shasum": ""
16
  },
17
  "require-dev": {
18
  "codeclimate/php-test-reporter": "^0.1.2",
19
+ "phpunit/phpunit": "^6"
20
  },
21
+ "time": "2018-10-01T17:11:02+00:00",
22
  "type": "library",
23
  "installation-source": "dist",
24
  "autoload": {
lib/vendor/enshrined/svg-sanitize/.travis.yml CHANGED
@@ -1,10 +1,8 @@
1
  language: php
2
  php:
3
- - 5.4
4
- - 5.5
5
- - 5.6
6
  - 7.0
7
  - 7.1
 
8
 
9
  before_script:
10
  - composer install --dev
1
  language: php
2
  php:
 
 
 
3
  - 7.0
4
  - 7.1
5
+ - 7.2
6
 
7
  before_script:
8
  - composer install --dev
lib/vendor/enshrined/svg-sanitize/composer.json CHANGED
@@ -16,7 +16,7 @@
16
  "minimum-stability": "stable",
17
  "require": {},
18
  "require-dev": {
19
- "phpunit/phpunit": "^4.7",
20
  "codeclimate/php-test-reporter": "^0.1.2"
21
  }
22
  }
16
  "minimum-stability": "stable",
17
  "require": {},
18
  "require-dev": {
19
+ "phpunit/phpunit": "^6",
20
  "codeclimate/php-test-reporter": "^0.1.2"
21
  }
22
  }
lib/vendor/enshrined/svg-sanitize/composer.lock CHANGED
@@ -1,10 +1,10 @@
1
  {
2
  "_readme": [
3
  "This file locks the dependencies of your project to a known state",
4
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5
  "This file is @generated automatically"
6
  ],
7
- "hash": "5de16e26bfc22a583a99a771e94688b8",
8
  "packages": [],
9
  "packages-dev": [
10
  {
@@ -62,7 +62,7 @@
62
  "codeclimate",
63
  "coverage"
64
  ],
65
- "time": "2014-07-23 13:42:41"
66
  },
67
  {
68
  "name": "doctrine/instantiator",
@@ -116,7 +116,7 @@
116
  "constructor",
117
  "instantiate"
118
  ],
119
- "time": "2015-06-14 21:17:01"
120
  },
121
  {
122
  "name": "guzzle/guzzle",
@@ -211,41 +211,292 @@
211
  "rest",
212
  "web service"
213
  ],
214
- "time": "2015-03-18 18:23:50"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
215
  },
216
  {
217
  "name": "phpdocumentor/reflection-docblock",
218
- "version": "2.0.4",
219
  "source": {
220
  "type": "git",
221
  "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
222
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
223
  },
224
  "dist": {
225
  "type": "zip",
226
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
227
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
228
  "shasum": ""
229
  },
230
  "require": {
231
- "php": ">=5.3.3"
 
 
 
232
  },
233
  "require-dev": {
234
- "phpunit/phpunit": "~4.0"
 
 
235
  },
236
- "suggest": {
237
- "dflydev/markdown": "~1.0",
238
- "erusev/parsedown": "~1.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
239
  },
240
  "type": "library",
241
  "extra": {
242
  "branch-alias": {
243
- "dev-master": "2.0.x-dev"
244
  }
245
  },
246
  "autoload": {
247
- "psr-0": {
248
- "phpDocumentor": [
249
  "src/"
250
  ]
251
  }
@@ -257,37 +508,40 @@
257
  "authors": [
258
  {
259
  "name": "Mike van Riel",
260
- "email": "mike.vanriel@naenius.com"
261
  }
262
  ],
263
- "time": "2015-02-03 12:10:50"
264
  },
265
  {
266
  "name": "phpspec/prophecy",
267
- "version": "v1.4.1",
268
  "source": {
269
  "type": "git",
270
  "url": "https://github.com/phpspec/prophecy.git",
271
- "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373"
272
  },
273
  "dist": {
274
  "type": "zip",
275
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
276
- "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
277
  "shasum": ""
278
  },
279
  "require": {
280
  "doctrine/instantiator": "^1.0.2",
281
- "phpdocumentor/reflection-docblock": "~2.0",
282
- "sebastian/comparator": "~1.1"
 
 
283
  },
284
  "require-dev": {
285
- "phpspec/phpspec": "~2.0"
 
286
  },
287
  "type": "library",
288
  "extra": {
289
  "branch-alias": {
290
- "dev-master": "1.4.x-dev"
291
  }
292
  },
293
  "autoload": {
@@ -320,43 +574,44 @@
320
  "spy",
321
  "stub"
322
  ],
323
- "time": "2015-04-27 22:15:08"
324
  },
325
  {
326
  "name": "phpunit/php-code-coverage",
327
- "version": "2.1.5",
328
  "source": {
329
  "type": "git",
330
  "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
331
- "reference": "be2286cb8c7e1773eded49d9719219e6f74f9e3e"
332
  },
333
  "dist": {
334
  "type": "zip",
335
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/be2286cb8c7e1773eded49d9719219e6f74f9e3e",
336
- "reference": "be2286cb8c7e1773eded49d9719219e6f74f9e3e",
337
  "shasum": ""
338
  },
339
  "require": {
340
- "php": ">=5.3.3",
341
- "phpunit/php-file-iterator": "~1.3",
342
- "phpunit/php-text-template": "~1.2",
343
- "phpunit/php-token-stream": "~1.3",
344
- "sebastian/environment": "~1.0",
345
- "sebastian/version": "~1.0"
 
 
 
 
346
  },
347
  "require-dev": {
348
- "ext-xdebug": ">=2.1.4",
349
- "phpunit/phpunit": "~4"
350
  },
351
  "suggest": {
352
- "ext-dom": "*",
353
- "ext-xdebug": ">=2.2.1",
354
- "ext-xmlwriter": "*"
355
  },
356
  "type": "library",
357
  "extra": {
358
  "branch-alias": {
359
- "dev-master": "2.1.x-dev"
360
  }
361
  },
362
  "autoload": {
@@ -371,7 +626,7 @@
371
  "authors": [
372
  {
373
  "name": "Sebastian Bergmann",
374
- "email": "sb@sebastian-bergmann.de",
375
  "role": "lead"
376
  }
377
  ],
@@ -382,20 +637,20 @@
382
  "testing",
383
  "xunit"
384
  ],
385
- "time": "2015-06-09 13:05:42"
386
  },
387
  {
388
  "name": "phpunit/php-file-iterator",
389
- "version": "1.4.0",
390
  "source": {
391
  "type": "git",
392
  "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
393
- "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb"
394
  },
395
  "dist": {
396
  "type": "zip",
397
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a923bb15680d0089e2316f7a4af8f437046e96bb",
398
- "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb",
399
  "shasum": ""
400
  },
401
  "require": {
@@ -429,20 +684,20 @@
429
  "filesystem",
430
  "iterator"
431
  ],
432
- "time": "2015-04-02 05:19:05"
433
  },
434
  {
435
  "name": "phpunit/php-text-template",
436
- "version": "1.2.0",
437
  "source": {
438
  "type": "git",
439
  "url": "https://github.com/sebastianbergmann/php-text-template.git",
440
- "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a"
441
  },
442
  "dist": {
443
  "type": "zip",
444
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
445
- "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
446
  "shasum": ""
447
  },
448
  "require": {
@@ -451,20 +706,17 @@
451
  "type": "library",
452
  "autoload": {
453
  "classmap": [
454
- "Text/"
455
  ]
456
  },
457
  "notification-url": "https://packagist.org/downloads/",
458
- "include-path": [
459
- ""
460
- ],
461
  "license": [
462
  "BSD-3-Clause"
463
  ],
464
  "authors": [
465
  {
466
  "name": "Sebastian Bergmann",
467
- "email": "sb@sebastian-bergmann.de",
468
  "role": "lead"
469
  }
470
  ],
@@ -473,26 +725,34 @@
473
  "keywords": [
474
  "template"
475
  ],
476
- "time": "2014-01-30 17:20:04"
477
  },
478
  {
479
  "name": "phpunit/php-timer",
480
- "version": "1.0.6",
481
  "source": {
482
  "type": "git",
483
  "url": "https://github.com/sebastianbergmann/php-timer.git",
484
- "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d"
485
  },
486
  "dist": {
487
  "type": "zip",
488
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/83fe1bdc5d47658b727595c14da140da92b3d66d",
489
- "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d",
490
  "shasum": ""
491
  },
492
  "require": {
493
- "php": ">=5.3.3"
 
 
 
494
  },
495
  "type": "library",
 
 
 
 
 
496
  "autoload": {
497
  "classmap": [
498
  "src/"
@@ -514,33 +774,33 @@
514
  "keywords": [
515
  "timer"
516
  ],
517
- "time": "2015-06-13 07:35:30"
518
  },
519
  {
520
  "name": "phpunit/php-token-stream",
521
- "version": "1.4.2",
522
  "source": {
523
  "type": "git",
524
  "url": "https://github.com/sebastianbergmann/php-token-stream.git",
525
- "reference": "db63be1159c81df649cd0260e30249a586d4129e"
526
  },
527
  "dist": {
528
  "type": "zip",
529
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/db63be1159c81df649cd0260e30249a586d4129e",
530
- "reference": "db63be1159c81df649cd0260e30249a586d4129e",
531
  "shasum": ""
532
  },
533
  "require": {
534
  "ext-tokenizer": "*",
535
- "php": ">=5.3.3"
536
  },
537
  "require-dev": {
538
- "phpunit/phpunit": "~4.2"
539
  },
540
  "type": "library",
541
  "extra": {
542
  "branch-alias": {
543
- "dev-master": "1.4-dev"
544
  }
545
  },
546
  "autoload": {
@@ -563,45 +823,57 @@
563
  "keywords": [
564
  "tokenizer"
565
  ],
566
- "time": "2015-06-12 07:34:24"
567
  },
568
  {
569
  "name": "phpunit/phpunit",
570
- "version": "4.7.4",
571
  "source": {
572
  "type": "git",
573
  "url": "https://github.com/sebastianbergmann/phpunit.git",
574
- "reference": "e5f851f324f7add846316f39e668e9deac97a103"
575
  },
576
  "dist": {
577
  "type": "zip",
578
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e5f851f324f7add846316f39e668e9deac97a103",
579
- "reference": "e5f851f324f7add846316f39e668e9deac97a103",
580
  "shasum": ""
581
  },
582
  "require": {
583
  "ext-dom": "*",
584
  "ext-json": "*",
585
- "ext-pcre": "*",
586
- "ext-reflection": "*",
587
- "ext-spl": "*",
588
- "php": ">=5.3.3",
589
- "phpspec/prophecy": "~1.3,>=1.3.1",
590
- "phpunit/php-code-coverage": "~2.1",
591
- "phpunit/php-file-iterator": "~1.4",
592
- "phpunit/php-text-template": "~1.2",
593
- "phpunit/php-timer": ">=1.0.6",
594
- "phpunit/phpunit-mock-objects": "~2.3",
595
- "sebastian/comparator": "~1.1",
596
- "sebastian/diff": "~1.2",
597
- "sebastian/environment": "~1.2",
598
- "sebastian/exporter": "~1.2",
599
- "sebastian/global-state": "~1.0",
600
- "sebastian/version": "~1.0",
601
- "symfony/yaml": "~2.1|~3.0"
 
 
 
 
 
 
 
 
 
 
 
602
  },
603
  "suggest": {
604
- "phpunit/php-invoker": "~1.1"
 
605
  },
606
  "bin": [
607
  "phpunit"
@@ -609,7 +881,7 @@
609
  "type": "library",
610
  "extra": {
611
  "branch-alias": {
612
- "dev-master": "4.7.x-dev"
613
  }
614
  },
615
  "autoload": {
@@ -635,29 +907,33 @@
635
  "testing",
636
  "xunit"
637
  ],
638
- "time": "2015-06-18 13:33:26"
639
  },
640
  {
641
  "name": "phpunit/phpunit-mock-objects",
642
- "version": "2.3.4",
643
  "source": {
644
  "type": "git",
645
  "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
646
- "reference": "92408bb1968a81b3217a6fdf6c1a198da83caa35"
647
  },
648
  "dist": {
649
  "type": "zip",
650
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/92408bb1968a81b3217a6fdf6c1a198da83caa35",
651
- "reference": "92408bb1968a81b3217a6fdf6c1a198da83caa35",
652
  "shasum": ""
653
  },
654
  "require": {
655
- "doctrine/instantiator": "~1.0,>=1.0.2",
656
- "php": ">=5.3.3",
657
- "phpunit/php-text-template": "~1.2"
 
 
 
 
658
  },
659
  "require-dev": {
660
- "phpunit/phpunit": "~4.4"
661
  },
662
  "suggest": {
663
  "ext-soap": "*"
@@ -665,7 +941,7 @@
665
  "type": "library",
666
  "extra": {
667
  "branch-alias": {
668
- "dev-master": "2.3.x-dev"
669
  }
670
  },
671
  "autoload": {
@@ -680,7 +956,7 @@
680
  "authors": [
681
  {
682
  "name": "Sebastian Bergmann",
683
- "email": "sb@sebastian-bergmann.de",
684
  "role": "lead"
685
  }
686
  ],
@@ -690,7 +966,7 @@
690
  "mock",
691
  "xunit"
692
  ],
693
- "time": "2015-06-11 15:55:48"
694
  },
695
  {
696
  "name": "psr/log",
@@ -728,7 +1004,7 @@
728
  "psr",
729
  "psr-3"
730
  ],
731
- "time": "2012-12-21 11:40:51"
732
  },
733
  {
734
  "name": "satooshi/php-coveralls",
@@ -796,34 +1072,80 @@
796
  "github",
797
  "test"
798
  ],
799
- "time": "2013-05-04 08:07:33"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
800
  },
801
  {
802
  "name": "sebastian/comparator",
803
- "version": "1.1.1",
804
  "source": {
805
  "type": "git",
806
  "url": "https://github.com/sebastianbergmann/comparator.git",
807
- "reference": "1dd8869519a225f7f2b9eb663e225298fade819e"
808
  },
809
  "dist": {
810
  "type": "zip",
811
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e",
812
- "reference": "1dd8869519a225f7f2b9eb663e225298fade819e",
813
  "shasum": ""
814
  },
815
  "require": {
816
- "php": ">=5.3.3",
817
- "sebastian/diff": "~1.2",
818
- "sebastian/exporter": "~1.2"
819
  },
820
  "require-dev": {
821
- "phpunit/phpunit": "~4.4"
822
  },
823
  "type": "library",
824
  "extra": {
825
  "branch-alias": {
826
- "dev-master": "1.1.x-dev"
827
  }
828
  },
829
  "autoload": {
@@ -854,38 +1176,38 @@
854
  }
855
  ],
856
  "description": "Provides the functionality to compare PHP values for equality",
857
- "homepage": "http://www.github.com/sebastianbergmann/comparator",
858
  "keywords": [
859
  "comparator",
860
  "compare",
861
  "equality"
862
  ],
863
- "time": "2015-01-29 16:28:08"
864
  },
865
  {
866
  "name": "sebastian/diff",
867
- "version": "1.3.0",
868
  "source": {
869
  "type": "git",
870
  "url": "https://github.com/sebastianbergmann/diff.git",
871
- "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
872
  },
873
  "dist": {
874
  "type": "zip",
875
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
876
- "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
877
  "shasum": ""
878
  },
879
  "require": {
880
- "php": ">=5.3.3"
881
  },
882
  "require-dev": {
883
- "phpunit/phpunit": "~4.2"
884
  },
885
  "type": "library",
886
  "extra": {
887
  "branch-alias": {
888
- "dev-master": "1.3-dev"
889
  }
890
  },
891
  "autoload": {
@@ -908,36 +1230,36 @@
908
  }
909
  ],
910
  "description": "Diff implementation",
911
- "homepage": "http://www.github.com/sebastianbergmann/diff",
912
  "keywords": [
913
  "diff"
914
  ],
915
- "time": "2015-02-22 15:13:53"
916
  },
917
  {
918
  "name": "sebastian/environment",
919
- "version": "1.2.2",
920
  "source": {
921
  "type": "git",
922
  "url": "https://github.com/sebastianbergmann/environment.git",
923
- "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e"
924
  },
925
  "dist": {
926
  "type": "zip",
927
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e",
928
- "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e",
929
  "shasum": ""
930
  },
931
  "require": {
932
- "php": ">=5.3.3"
933
  },
934
  "require-dev": {
935
- "phpunit/phpunit": "~4.4"
936
  },
937
  "type": "library",
938
  "extra": {
939
  "branch-alias": {
940
- "dev-master": "1.3.x-dev"
941
  }
942
  },
943
  "autoload": {
@@ -962,33 +1284,34 @@
962
  "environment",
963
  "hhvm"
964
  ],
965
- "time": "2015-01-01 10:01:08"
966
  },
967
  {
968
  "name": "sebastian/exporter",
969
- "version": "1.2.0",
970
  "source": {
971
  "type": "git",
972
  "url": "https://github.com/sebastianbergmann/exporter.git",
973
- "reference": "84839970d05254c73cde183a721c7af13aede943"
974
  },
975
  "dist": {
976
  "type": "zip",
977
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943",
978
- "reference": "84839970d05254c73cde183a721c7af13aede943",
979
  "shasum": ""
980
  },
981
  "require": {
982
- "php": ">=5.3.3",
983
- "sebastian/recursion-context": "~1.0"
984
  },
985
  "require-dev": {
986
- "phpunit/phpunit": "~4.4"
 
987
  },
988
  "type": "library",
989
  "extra": {
990
  "branch-alias": {
991
- "dev-master": "1.2.x-dev"
992
  }
993
  },
994
  "autoload": {
@@ -1028,27 +1351,27 @@
1028
  "export",
1029
  "exporter"
1030
  ],
1031
- "time": "2015-01-27 07:23:06"
1032
  },
1033
  {
1034
  "name": "sebastian/global-state",
1035
- "version": "1.0.0",
1036
  "source": {
1037
  "type": "git",
1038
  "url": "https://github.com/sebastianbergmann/global-state.git",
1039
- "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01"
1040
  },
1041
  "dist": {
1042
  "type": "zip",
1043
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
1044
- "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
1045
  "shasum": ""
1046
  },
1047
  "require": {
1048
- "php": ">=5.3.3"
1049
  },
1050
  "require-dev": {
1051
- "phpunit/phpunit": "~4.2"
1052
  },
1053
  "suggest": {
1054
  "ext-uopz": "*"
@@ -1056,7 +1379,7 @@
1056
  "type": "library",
1057
  "extra": {
1058
  "branch-alias": {
1059
- "dev-master": "1.0-dev"
1060
  }
1061
  },
1062
  "autoload": {
@@ -1079,32 +1402,34 @@
1079
  "keywords": [
1080
  "global state"
1081
  ],
1082
- "time": "2014-10-06 09:23:50"
1083
  },
1084
  {
1085
- "name": "sebastian/recursion-context",
1086
- "version": "1.0.0",
1087
  "source": {
1088
  "type": "git",
1089
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
1090
- "reference": "3989662bbb30a29d20d9faa04a846af79b276252"
1091
  },
1092
  "dist": {
1093
  "type": "zip",
1094
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252",
1095
- "reference": "3989662bbb30a29d20d9faa04a846af79b276252",
1096
  "shasum": ""
1097
  },
1098
  "require": {
1099
- "php": ">=5.3.3"
 
 
1100
  },
1101
  "require-dev": {
1102
- "phpunit/phpunit": "~4.4"
1103
  },
1104
  "type": "library",
1105
  "extra": {
1106
  "branch-alias": {
1107
- "dev-master": "1.0.x-dev"
1108
  }
1109
  },
1110
  "autoload": {
@@ -1117,38 +1442,178 @@
1117
  "BSD-3-Clause"
1118
  ],
1119
  "authors": [
1120
- {
1121
- "name": "Jeff Welch",
1122
- "email": "whatthejeff@gmail.com"
1123
- },
1124
  {
1125
  "name": "Sebastian Bergmann",
1126
  "email": "sebastian@phpunit.de"
1127
- },
1128
- {
1129
- "name": "Adam Harvey",
1130
- "email": "aharvey@php.net"
1131
  }
1132
  ],
1133
- "description": "Provides functionality to recursively process PHP variables",
1134
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1135
- "time": "2015-01-24 09:48:32"
1136
  },
1137
  {
1138
- "name": "sebastian/version",
1139
- "version": "1.0.5",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1140
  "source": {
1141
  "type": "git",
1142
  "url": "https://github.com/sebastianbergmann/version.git",
1143
- "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4"
1144
  },
1145
  "dist": {
1146
  "type": "zip",
1147
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ab931d46cd0d3204a91e1b9a40c4bc13032b58e4",
1148
- "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4",
1149
  "shasum": ""
1150
  },
 
 
 
1151
  "type": "library",
 
 
 
 
 
1152
  "autoload": {
1153
  "classmap": [
1154
  "src/"
@@ -1167,39 +1632,53 @@
1167
  ],
1168
  "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1169
  "homepage": "https://github.com/sebastianbergmann/version",
1170
- "time": "2015-02-24 06:35:25"
1171
  },
1172
  {
1173
  "name": "symfony/config",
1174
- "version": "v2.7.1",
1175
  "source": {
1176
  "type": "git",
1177
- "url": "https://github.com/symfony/Config.git",
1178
- "reference": "58ded81f1f582a87c528ef3dae9a859f78b5f374"
1179
  },
1180
  "dist": {
1181
  "type": "zip",
1182
- "url": "https://api.github.com/repos/symfony/Config/zipball/58ded81f1f582a87c528ef3dae9a859f78b5f374",
1183
- "reference": "58ded81f1f582a87c528ef3dae9a859f78b5f374",
1184
  "shasum": ""
1185
  },
1186
  "require": {
1187
- "php": ">=5.3.9",
1188
- "symfony/filesystem": "~2.3"
 
 
 
 
 
1189
  },
1190
  "require-dev": {
1191
- "symfony/phpunit-bridge": "~2.7"
 
 
 
 
 
 
1192
  },
1193
  "type": "library",
1194
  "extra": {
1195
  "branch-alias": {
1196
- "dev-master": "2.7-dev"
1197
  }
1198
  },
1199
  "autoload": {
1200
  "psr-4": {
1201
  "Symfony\\Component\\Config\\": ""
1202
- }
 
 
 
1203
  },
1204
  "notification-url": "https://packagist.org/downloads/",
1205
  "license": [
@@ -1217,46 +1696,58 @@
1217
  ],
1218
  "description": "Symfony Config Component",
1219
  "homepage": "https://symfony.com",
1220
- "time": "2015-06-11 14:06:56"
1221
  },
1222
  {
1223
  "name": "symfony/console",
1224
- "version": "v2.7.1",
1225
  "source": {
1226
  "type": "git",
1227
- "url": "https://github.com/symfony/Console.git",
1228
- "reference": "564398bc1f33faf92fc2ec86859983d30eb81806"
1229
  },
1230
  "dist": {
1231
  "type": "zip",
1232
- "url": "https://api.github.com/repos/symfony/Console/zipball/564398bc1f33faf92fc2ec86859983d30eb81806",
1233
- "reference": "564398bc1f33faf92fc2ec86859983d30eb81806",
1234
  "shasum": ""
1235
  },
1236
  "require": {
1237
- "php": ">=5.3.9"
 
 
 
 
 
 
1238
  },
1239
  "require-dev": {
1240
  "psr/log": "~1.0",
1241
- "symfony/event-dispatcher": "~2.1",
1242
- "symfony/phpunit-bridge": "~2.7",
1243
- "symfony/process": "~2.1"
 
 
1244
  },
1245
  "suggest": {
1246
- "psr/log": "For using the console logger",
1247
  "symfony/event-dispatcher": "",
 
1248
  "symfony/process": ""
1249
  },
1250
  "type": "library",
1251
  "extra": {
1252
  "branch-alias": {
1253
- "dev-master": "2.7-dev"
1254
  }
1255
  },
1256
  "autoload": {
1257
  "psr-4": {
1258
  "Symfony\\Component\\Console\\": ""
1259
- }
 
 
 
1260
  },
1261
  "notification-url": "https://packagist.org/downloads/",
1262
  "license": [
@@ -1274,20 +1765,76 @@
1274
  ],
1275
  "description": "Symfony Console Component",
1276
  "homepage": "https://symfony.com",
1277
- "time": "2015-06-10 15:30:22"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1278
  },
1279
  {
1280
  "name": "symfony/event-dispatcher",
1281
- "version": "v2.7.1",
1282
  "source": {
1283
  "type": "git",
1284
- "url": "https://github.com/symfony/EventDispatcher.git",
1285
- "reference": "be3c5ff8d503c46768aeb78ce6333051aa6f26d9"
1286
  },
1287
  "dist": {
1288
  "type": "zip",
1289
- "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/be3c5ff8d503c46768aeb78ce6333051aa6f26d9",
1290
- "reference": "be3c5ff8d503c46768aeb78ce6333051aa6f26d9",
1291
  "shasum": ""
1292
  },
1293
  "require": {
@@ -1295,11 +1842,10 @@
1295
  },
1296
  "require-dev": {
1297
  "psr/log": "~1.0",
1298
- "symfony/config": "~2.0,>=2.0.5",
1299
- "symfony/dependency-injection": "~2.6",
1300
- "symfony/expression-language": "~2.6",
1301
- "symfony/phpunit-bridge": "~2.7",
1302
- "symfony/stopwatch": "~2.3"
1303
  },
1304
  "suggest": {
1305
  "symfony/dependency-injection": "",
@@ -1308,13 +1854,16 @@
1308
  "type": "library",
1309
  "extra": {
1310
  "branch-alias": {
1311
- "dev-master": "2.7-dev"
1312
  }
1313
  },
1314
  "autoload": {
1315
  "psr-4": {
1316
  "Symfony\\Component\\EventDispatcher\\": ""
1317
- }
 
 
 
1318
  },
1319
  "notification-url": "https://packagist.org/downloads/",
1320
  "license": [
@@ -1332,38 +1881,39 @@
1332
  ],
1333
  "description": "Symfony EventDispatcher Component",
1334
  "homepage": "https://symfony.com",
1335
- "time": "2015-06-08 09:37:21"
1336
  },
1337
  {
1338
  "name": "symfony/filesystem",
1339
- "version": "v2.7.1",
1340
  "source": {
1341
  "type": "git",
1342
- "url": "https://github.com/symfony/Filesystem.git",
1343
- "reference": "a0d43eb3e17d4f4c6990289805a488a0482a07f3"
1344
  },
1345
  "dist": {
1346
  "type": "zip",
1347
- "url": "https://api.github.com/repos/symfony/Filesystem/zipball/a0d43eb3e17d4f4c6990289805a488a0482a07f3",
1348
- "reference": "a0d43eb3e17d4f4c6990289805a488a0482a07f3",
1349
  "shasum": ""
1350
  },
1351
  "require": {
1352
- "php": ">=5.3.9"
1353
- },
1354
- "require-dev": {
1355
- "symfony/phpunit-bridge": "~2.7"
1356
  },
1357
  "type": "library",
1358
  "extra": {
1359
  "branch-alias": {
1360
- "dev-master": "2.7-dev"
1361
  }
1362
  },
1363
  "autoload": {
1364
  "psr-4": {
1365
  "Symfony\\Component\\Filesystem\\": ""
1366
- }
 
 
 
1367
  },
1368
  "notification-url": "https://packagist.org/downloads/",
1369
  "license": [
@@ -1381,38 +1931,155 @@
1381
  ],
1382
  "description": "Symfony Filesystem Component",
1383
  "homepage": "https://symfony.com",
1384
- "time": "2015-06-08 09:37:21"
1385
  },
1386
  {
1387
- "name": "symfony/stopwatch",
1388
- "version": "v2.7.1",
1389
  "source": {
1390
  "type": "git",
1391
- "url": "https://github.com/symfony/Stopwatch.git",
1392
- "reference": "c653f1985f6c2b7dbffd04d48b9c0a96aaef814b"
1393
  },
1394
  "dist": {
1395
  "type": "zip",
1396
- "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/c653f1985f6c2b7dbffd04d48b9c0a96aaef814b",
1397
- "reference": "c653f1985f6c2b7dbffd04d48b9c0a96aaef814b",
1398
  "shasum": ""
1399
  },
1400
  "require": {
1401
- "php": ">=5.3.9"
1402
  },
1403
- "require-dev": {
1404
- "symfony/phpunit-bridge": "~2.7"
1405
  },
1406
  "type": "library",
1407
  "extra": {
1408
  "branch-alias": {
1409
- "dev-master": "2.7-dev"
1410
  }
1411
  },
1412
  "autoload": {
1413
  "psr-4": {
1414
- "Symfony\\Component\\Stopwatch\\": ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1415
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1416
  },
1417
  "notification-url": "https://packagist.org/downloads/",
1418
  "license": [
@@ -1430,38 +2097,48 @@
1430
  ],
1431
  "description": "Symfony Stopwatch Component",
1432
  "homepage": "https://symfony.com",
1433
- "time": "2015-06-04 20:11:48"
1434
  },
1435
  {
1436
  "name": "symfony/yaml",
1437
- "version": "v2.7.1",
1438
  "source": {
1439
  "type": "git",
1440
- "url": "https://github.com/symfony/Yaml.git",
1441
- "reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160"
1442
  },
1443
  "dist": {
1444
  "type": "zip",
1445
- "url": "https://api.github.com/repos/symfony/Yaml/zipball/9808e75c609a14f6db02f70fccf4ca4aab53c160",
1446
- "reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160",
1447
  "shasum": ""
1448
  },
1449
  "require": {
1450
- "php": ">=5.3.9"
 
 
 
 
1451
  },
1452
  "require-dev": {
1453
- "symfony/phpunit-bridge": "~2.7"
 
 
 
1454
  },
1455
  "type": "library",
1456
  "extra": {
1457
  "branch-alias": {
1458
- "dev-master": "2.7-dev"
1459
  }
1460
  },
1461
  "autoload": {
1462
  "psr-4": {
1463
  "Symfony\\Component\\Yaml\\": ""
1464
- }
 
 
 
1465
  },
1466
  "notification-url": "https://packagist.org/downloads/",
1467
  "license": [
@@ -1479,7 +2156,97 @@
1479
  ],
1480
  "description": "Symfony Yaml Component",
1481
  "homepage": "https://symfony.com",
1482
- "time": "2015-06-10 15:30:22"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1483
  }
1484
  ],
1485
  "aliases": [],
1
  {
2
  "_readme": [
3
  "This file locks the dependencies of your project to a known state",
4
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
  "This file is @generated automatically"
6
  ],
7
+ "content-hash": "cf1f0e14b588378abe1857f6f62083e9",
8
  "packages": [],
9
  "packages-dev": [
10
  {
62
  "codeclimate",
63
  "coverage"
64
  ],
65
+ "time": "2014-07-23T13:42:41+00:00"
66
  },
67
  {
68
  "name": "doctrine/instantiator",
116
  "constructor",
117
  "instantiate"
118
  ],
119
+ "time": "2015-06-14T21:17:01+00:00"
120
  },
121
  {
122
  "name": "guzzle/guzzle",
211
  "rest",
212
  "web service"
213
  ],
214
+ "abandoned": "guzzlehttp/guzzle",
215
+ "time": "2015-03-18T18:23:50+00:00"
216
+ },
217
+ {
218
+ "name": "myclabs/deep-copy",
219
+ "version": "1.7.0",
220
+ "source": {
221
+ "type": "git",
222
+ "url": "https://github.com/myclabs/DeepCopy.git",
223
+ "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
224
+ },
225
+ "dist": {
226
+ "type": "zip",
227
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
228
+ "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
229
+ "shasum": ""
230
+ },
231
+ "require": {
232
+ "php": "^5.6 || ^7.0"
233
+ },
234
+ "require-dev": {
235
+ "doctrine/collections": "^1.0",
236
+ "doctrine/common": "^2.6",
237
+ "phpunit/phpunit": "^4.1"
238
+ },
239
+ "type": "library",
240
+ "autoload": {
241
+ "psr-4": {
242
+ "DeepCopy\\": "src/DeepCopy/"
243
+ },
244
+ "files": [
245
+ "src/DeepCopy/deep_copy.php"
246
+ ]
247
+ },
248
+ "notification-url": "https://packagist.org/downloads/",
249
+ "license": [
250
+ "MIT"
251
+ ],
252
+ "description": "Create deep copies (clones) of your objects",
253
+ "keywords": [
254
+ "clone",
255
+ "copy",
256
+ "duplicate",
257
+ "object",
258
+ "object graph"
259
+ ],
260
+ "time": "2017-10-19T19:58:43+00:00"
261
+ },
262
+ {
263
+ "name": "phar-io/manifest",
264
+ "version": "1.0.1",
265
+ "source": {
266
+ "type": "git",
267
+ "url": "https://github.com/phar-io/manifest.git",
268
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
269
+ },
270
+ "dist": {
271
+ "type": "zip",
272
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
273
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
274
+ "shasum": ""
275
+ },
276
+ "require": {
277
+ "ext-dom": "*",
278
+ "ext-phar": "*",
279
+ "phar-io/version": "^1.0.1",
280
+ "php": "^5.6 || ^7.0"
281
+ },
282
+ "type": "library",
283
+ "extra": {
284
+ "branch-alias": {
285
+ "dev-master": "1.0.x-dev"
286
+ }
287
+ },
288
+ "autoload": {
289
+ "classmap": [
290
+ "src/"
291
+ ]
292
+ },
293
+ "notification-url": "https://packagist.org/downloads/",
294
+ "license": [
295
+ "BSD-3-Clause"
296
+ ],
297
+ "authors": [
298
+ {
299
+ "name": "Arne Blankerts",
300
+ "email": "arne@blankerts.de",
301
+ "role": "Developer"
302
+ },
303
+ {
304
+ "name": "Sebastian Heuer",
305
+ "email": "sebastian@phpeople.de",
306
+ "role": "Developer"
307
+ },
308
+ {
309
+ "name": "Sebastian Bergmann",
310
+ "email": "sebastian@phpunit.de",
311
+ "role": "Developer"
312
+ }
313
+ ],
314
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
315
+ "time": "2017-03-05T18:14:27+00:00"
316
+ },
317
+ {
318
+ "name": "phar-io/version",
319
+ "version": "1.0.1",
320
+ "source": {
321
+ "type": "git",
322
+ "url": "https://github.com/phar-io/version.git",
323
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
324
+ },
325
+ "dist": {
326
+ "type": "zip",
327
+ "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
328
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
329
+ "shasum": ""
330
+ },
331
+ "require": {
332
+ "php": "^5.6 || ^7.0"
333
+ },
334
+ "type": "library",
335
+ "autoload": {
336
+ "classmap": [
337
+ "src/"
338
+ ]
339
+ },
340
+ "notification-url": "https://packagist.org/downloads/",
341
+ "license": [
342
+ "BSD-3-Clause"
343
+ ],
344
+ "authors": [
345
+ {
346
+ "name": "Arne Blankerts",
347
+ "email": "arne@blankerts.de",
348
+ "role": "Developer"
349
+ },
350
+ {
351
+ "name": "Sebastian Heuer",
352
+ "email": "sebastian@phpeople.de",
353
+ "role": "Developer"
354
+ },
355
+ {
356
+ "name": "Sebastian Bergmann",
357
+ "email": "sebastian@phpunit.de",
358
+ "role": "Developer"
359
+ }
360
+ ],
361
+ "description": "Library for handling version information and constraints",
362
+ "time": "2017-03-05T17:38:23+00:00"
363
+ },
364
+ {
365
+ "name": "phpdocumentor/reflection-common",
366
+ "version": "1.0.1",
367
+ "source": {
368
+ "type": "git",
369
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
370
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
371
+ },
372
+ "dist": {
373
+ "type": "zip",
374
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
375
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
376
+ "shasum": ""
377
+ },
378
+ "require": {
379
+ "php": ">=5.5"
380
+ },
381
+ "require-dev": {
382
+ "phpunit/phpunit": "^4.6"
383
+ },
384
+ "type": "library",
385
+ "extra": {
386
+ "branch-alias": {
387
+ "dev-master": "1.0.x-dev"
388
+ }
389
+ },
390
+ "autoload": {
391
+ "psr-4": {
392
+ "phpDocumentor\\Reflection\\": [
393
+ "src"
394
+ ]
395
+ }
396
+ },
397
+ "notification-url": "https://packagist.org/downloads/",
398
+ "license": [
399
+ "MIT"
400
+ ],
401
+ "authors": [
402
+ {
403
+ "name": "Jaap van Otterdijk",
404
+ "email": "opensource@ijaap.nl"
405
+ }
406
+ ],
407
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
408
+ "homepage": "http://www.phpdoc.org",
409
+ "keywords": [
410
+ "FQSEN",
411
+ "phpDocumentor",
412
+ "phpdoc",
413
+ "reflection",
414
+ "static analysis"
415
+ ],
416
+ "time": "2017-09-11T18:02:19+00:00"
417
  },
418
  {
419
  "name": "phpdocumentor/reflection-docblock",
420
+ "version": "4.3.0",
421
  "source": {
422
  "type": "git",
423
  "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
424
+ "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
425
  },
426
  "dist": {
427
  "type": "zip",
428
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
429
+ "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
430
  "shasum": ""
431
  },
432
  "require": {
433
+ "php": "^7.0",
434
+ "phpdocumentor/reflection-common": "^1.0.0",
435
+ "phpdocumentor/type-resolver": "^0.4.0",
436
+ "webmozart/assert": "^1.0"
437
  },
438
  "require-dev": {
439
+ "doctrine/instantiator": "~1.0.5",
440
+ "mockery/mockery": "^1.0",
441
+ "phpunit/phpunit": "^6.4"
442
  },
443
+ "type": "library",
444
+ "extra": {
445
+ "branch-alias": {
446
+ "dev-master": "4.x-dev"
447
+ }
448
+ },
449
+ "autoload": {
450
+ "psr-4": {
451
+ "phpDocumentor\\Reflection\\": [
452
+ "src/"
453
+ ]
454
+ }
455
+ },
456
+ "notification-url": "https://packagist.org/downloads/",
457
+ "license": [
458
+ "MIT"
459
+ ],
460
+ "authors": [
461
+ {
462
+ "name": "Mike van Riel",
463
+ "email": "me@mikevanriel.com"
464
+ }
465
+ ],
466
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
467
+ "time": "2017-11-30T07:14:17+00:00"
468
+ },
469
+ {
470
+ "name": "phpdocumentor/type-resolver",
471
+ "version": "0.4.0",
472
+ "source": {
473
+ "type": "git",
474
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
475
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
476
+ },
477
+ "dist": {
478
+ "type": "zip",
479
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
480
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
481
+ "shasum": ""
482
+ },
483
+ "require": {
484
+ "php": "^5.5 || ^7.0",
485
+ "phpdocumentor/reflection-common": "^1.0"
486
+ },
487
+ "require-dev": {
488
+ "mockery/mockery": "^0.9.4",
489
+ "phpunit/phpunit": "^5.2||^4.8.24"
490
  },
491
  "type": "library",
492
  "extra": {
493
  "branch-alias": {
494
+ "dev-master": "1.0.x-dev"
495
  }
496
  },
497
  "autoload": {
498
+ "psr-4": {
499
+ "phpDocumentor\\Reflection\\": [
500
  "src/"
501
  ]
502
  }
508
  "authors": [
509
  {
510
  "name": "Mike van Riel",
511
+ "email": "me@mikevanriel.com"
512
  }
513
  ],
514
+ "time": "2017-07-14T14:27:02+00:00"
515
  },
516
  {
517
  "name": "phpspec/prophecy",
518
+ "version": "1.8.0",
519
  "source": {
520
  "type": "git",
521
  "url": "https://github.com/phpspec/prophecy.git",
522
+ "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
523
  },
524
  "dist": {
525
  "type": "zip",
526
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
527
+ "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
528
  "shasum": ""
529
  },
530
  "require": {
531
  "doctrine/instantiator": "^1.0.2",
532
+ "php": "^5.3|^7.0",
533
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
534
+ "sebastian/comparator": "^1.1|^2.0|^3.0",
535
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
536
  },
537
  "require-dev": {
538
+ "phpspec/phpspec": "^2.5|^3.2",
539
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
540
  },
541
  "type": "library",
542
  "extra": {
543
  "branch-alias": {
544
+ "dev-master": "1.8.x-dev"
545
  }
546
  },
547
  "autoload": {
574
  "spy",
575
  "stub"
576
  ],
577
+ "time": "2018-08-05T17:53:17+00:00"
578
  },
579
  {
580
  "name": "phpunit/php-code-coverage",
581
+ "version": "5.3.2",
582
  "source": {
583
  "type": "git",
584
  "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
585
+ "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
586
  },
587
  "dist": {
588
  "type": "zip",
589
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
590
+ "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
591
  "shasum": ""
592
  },
593
  "require": {
594
+ "ext-dom": "*",
595
+ "ext-xmlwriter": "*",
596
+ "php": "^7.0",
597
+ "phpunit/php-file-iterator": "^1.4.2",
598
+ "phpunit/php-text-template": "^1.2.1",
599
+ "phpunit/php-token-stream": "^2.0.1",
600
+ "sebastian/code-unit-reverse-lookup": "^1.0.1",
601
+ "sebastian/environment": "^3.0",
602
+ "sebastian/version": "^2.0.1",
603
+ "theseer/tokenizer": "^1.1"
604
  },
605
  "require-dev": {
606
+ "phpunit/phpunit": "^6.0"
 
607
  },
608
  "suggest": {
609
+ "ext-xdebug": "^2.5.5"
 
 
610
  },
611
  "type": "library",
612
  "extra": {
613
  "branch-alias": {
614
+ "dev-master": "5.3.x-dev"
615
  }
616
  },
617
  "autoload": {
626
  "authors": [
627
  {
628
  "name": "Sebastian Bergmann",
629
+ "email": "sebastian@phpunit.de",
630
  "role": "lead"
631
  }
632
  ],
637
  "testing",
638
  "xunit"
639
  ],
640
+ "time": "2018-04-06T15:36:58+00:00"
641
  },
642
  {
643
  "name": "phpunit/php-file-iterator",
644
+ "version": "1.4.5",
645
  "source": {
646
  "type": "git",
647
  "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
648
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
649
  },
650
  "dist": {
651
  "type": "zip",
652
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
653
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
654
  "shasum": ""
655
  },
656
  "require": {
684
  "filesystem",
685
  "iterator"
686
  ],
687
+ "time": "2017-11-27T13:52:08+00:00"
688
  },
689
  {
690
  "name": "phpunit/php-text-template",
691
+ "version": "1.2.1",
692
  "source": {
693
  "type": "git",
694
  "url": "https://github.com/sebastianbergmann/php-text-template.git",
695
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
696
  },
697
  "dist": {
698
  "type": "zip",
699
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
700
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
701
  "shasum": ""
702
  },
703
  "require": {
706
  "type": "library",
707
  "autoload": {
708
  "classmap": [
709
+ "src/"
710
  ]
711
  },
712
  "notification-url": "https://packagist.org/downloads/",
 
 
 
713
  "license": [
714
  "BSD-3-Clause"
715
  ],
716
  "authors": [
717
  {
718
  "name": "Sebastian Bergmann",
719
+ "email": "sebastian@phpunit.de",
720
  "role": "lead"
721
  }
722
  ],
725
  "keywords": [
726
  "template"
727
  ],
728
+ "time": "2015-06-21T13:50:34+00:00"
729
  },
730
  {
731
  "name": "phpunit/php-timer",
732
+ "version": "1.0.9",
733
  "source": {
734
  "type": "git",
735
  "url": "https://github.com/sebastianbergmann/php-timer.git",
736
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
737
  },
738
  "dist": {
739
  "type": "zip",
740
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
741
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
742
  "shasum": ""
743
  },
744
  "require": {
745
+ "php": "^5.3.3 || ^7.0"
746
+ },
747
+ "require-dev": {
748
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
749
  },
750
  "type": "library",
751
+ "extra": {
752
+ "branch-alias": {
753
+ "dev-master": "1.0-dev"
754
+ }
755
+ },
756
  "autoload": {
757
  "classmap": [
758
  "src/"
774
  "keywords": [
775
  "timer"
776
  ],
777
+ "time": "2017-02-26T11:10:40+00:00"
778
  },
779
  {
780
  "name": "phpunit/php-token-stream",
781
+ "version": "2.0.2",
782
  "source": {
783
  "type": "git",
784
  "url": "https://github.com/sebastianbergmann/php-token-stream.git",
785
+ "reference": "791198a2c6254db10131eecfe8c06670700904db"
786
  },
787
  "dist": {
788
  "type": "zip",
789
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
790
+ "reference": "791198a2c6254db10131eecfe8c06670700904db",
791
  "shasum": ""
792
  },
793
  "require": {
794
  "ext-tokenizer": "*",
795
+ "php": "^7.0"
796
  },
797
  "require-dev": {
798
+ "phpunit/phpunit": "^6.2.4"
799
  },
800
  "type": "library",
801
  "extra": {
802
  "branch-alias": {
803
+ "dev-master": "2.0-dev"
804
  }
805
  },
806
  "autoload": {
823
  "keywords": [
824
  "tokenizer"
825
  ],
826
+ "time": "2017-11-27T05:48:46+00:00"
827
  },
828
  {
829
  "name": "phpunit/phpunit",
830
+ "version": "6.5.13",
831
  "source": {
832
  "type": "git",
833
  "url": "https://github.com/sebastianbergmann/phpunit.git",
834
+ "reference": "0973426fb012359b2f18d3bd1e90ef1172839693"
835
  },
836
  "dist": {
837
  "type": "zip",
838
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693",
839
+ "reference": "0973426fb012359b2f18d3bd1e90ef1172839693",
840
  "shasum": ""
841
  },
842
  "require": {
843
  "ext-dom": "*",
844
  "ext-json": "*",
845
+ "ext-libxml": "*",
846
+ "ext-mbstring": "*",
847
+ "ext-xml": "*",
848
+ "myclabs/deep-copy": "^1.6.1",
849
+ "phar-io/manifest": "^1.0.1",
850
+ "phar-io/version": "^1.0",
851
+ "php": "^7.0",
852
+ "phpspec/prophecy": "^1.7",
853
+ "phpunit/php-code-coverage": "^5.3",
854
+ "phpunit/php-file-iterator": "^1.4.3",
855
+ "phpunit/php-text-template": "^1.2.1",
856
+ "phpunit/php-timer": "^1.0.9",
857
+ "phpunit/phpunit-mock-objects": "^5.0.9",
858
+ "sebastian/comparator": "^2.1",
859
+ "sebastian/diff": "^2.0",
860
+ "sebastian/environment": "^3.1",
861
+ "sebastian/exporter": "^3.1",
862
+ "sebastian/global-state": "^2.0",
863
+ "sebastian/object-enumerator": "^3.0.3",
864
+ "sebastian/resource-operations": "^1.0",
865
+ "sebastian/version": "^2.0.1"
866
+ },
867
+ "conflict": {
868
+ "phpdocumentor/reflection-docblock": "3.0.2",
869
+ "phpunit/dbunit": "<3.0"
870
+ },
871
+ "require-dev": {
872
+ "ext-pdo": "*"
873
  },
874
  "suggest": {
875
+ "ext-xdebug": "*",
876
+ "phpunit/php-invoker": "^1.1"
877
  },
878
  "bin": [
879
  "phpunit"
881
  "type": "library",
882
  "extra": {
883
  "branch-alias": {
884
+ "dev-master": "6.5.x-dev"
885
  }
886
  },
887
  "autoload": {
907
  "testing",
908
  "xunit"
909
  ],
910
+ "time": "2018-09-08T15:10:43+00:00"
911
  },
912
  {
913
  "name": "phpunit/phpunit-mock-objects",
914
+ "version": "5.0.10",
915
  "source": {
916
  "type": "git",
917
  "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
918
+ "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f"
919
  },
920
  "dist": {
921
  "type": "zip",
922
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f",
923
+ "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f",
924
  "shasum": ""
925
  },
926
  "require": {
927
+ "doctrine/instantiator": "^1.0.5",
928
+ "php": "^7.0",
929
+ "phpunit/php-text-template": "^1.2.1",
930
+ "sebastian/exporter": "^3.1"
931
+ },
932
+ "conflict": {
933
+ "phpunit/phpunit": "<6.0"
934
  },
935
  "require-dev": {
936
+ "phpunit/phpunit": "^6.5.11"
937
  },
938
  "suggest": {
939
  "ext-soap": "*"
941
  "type": "library",
942
  "extra": {
943
  "branch-alias": {
944
+ "dev-master": "5.0.x-dev"
945
  }
946
  },
947
  "autoload": {
956
  "authors": [
957
  {
958
  "name": "Sebastian Bergmann",
959
+ "email": "sebastian@phpunit.de",
960
  "role": "lead"
961
  }
962
  ],
966
  "mock",
967
  "xunit"
968
  ],
969
+ "time": "2018-08-09T05:50:03+00:00"
970
  },
971
  {
972
  "name": "psr/log",
1004
  "psr",
1005
  "psr-3"
1006
  ],
1007
+ "time": "2012-12-21T11:40:51+00:00"
1008
  },
1009
  {
1010
  "name": "satooshi/php-coveralls",
1072
  "github",
1073
  "test"
1074
  ],
1075
+ "abandoned": "php-coveralls/php-coveralls",
1076
+ "time": "2013-05-04T08:07:33+00:00"
1077
+ },
1078
+ {
1079
+ "name": "sebastian/code-unit-reverse-lookup",
1080
+ "version": "1.0.1",
1081
+ "source": {
1082
+ "type": "git",
1083
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1084
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
1085
+ },
1086
+ "dist": {
1087
+ "type": "zip",
1088
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1089
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1090
+ "shasum": ""
1091
+ },
1092
+ "require": {
1093
+ "php": "^5.6 || ^7.0"
1094
+ },
1095
+ "require-dev": {
1096
+ "phpunit/phpunit": "^5.7 || ^6.0"
1097
+ },
1098
+ "type": "library",
1099
+ "extra": {
1100
+ "branch-alias": {
1101
+ "dev-master": "1.0.x-dev"
1102
+ }
1103
+ },
1104
+ "autoload": {
1105
+ "classmap": [
1106
+ "src/"
1107
+ ]
1108
+ },
1109
+ "notification-url": "https://packagist.org/downloads/",
1110
+ "license": [
1111
+ "BSD-3-Clause"
1112
+ ],
1113
+ "authors": [
1114
+ {
1115
+ "name": "Sebastian Bergmann",
1116
+ "email": "sebastian@phpunit.de"
1117
+ }
1118
+ ],
1119
+ "description": "Looks up which function or method a line of code belongs to",
1120
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1121
+ "time": "2017-03-04T06:30:41+00:00"
1122
  },
1123
  {
1124
  "name": "sebastian/comparator",
1125
+ "version": "2.1.3",
1126
  "source": {
1127
  "type": "git",
1128
  "url": "https://github.com/sebastianbergmann/comparator.git",
1129
+ "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
1130
  },
1131
  "dist": {
1132
  "type": "zip",
1133
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
1134
+ "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
1135
  "shasum": ""
1136
  },
1137
  "require": {
1138
+ "php": "^7.0",
1139
+ "sebastian/diff": "^2.0 || ^3.0",
1140
+ "sebastian/exporter": "^3.1"
1141
  },
1142
  "require-dev": {
1143
+ "phpunit/phpunit": "^6.4"
1144
  },
1145
  "type": "library",
1146
  "extra": {
1147
  "branch-alias": {
1148
+ "dev-master": "2.1.x-dev"
1149
  }
1150
  },
1151
  "autoload": {
1176
  }
1177
  ],
1178
  "description": "Provides the functionality to compare PHP values for equality",
1179
+ "homepage": "https://github.com/sebastianbergmann/comparator",
1180
  "keywords": [
1181
  "comparator",
1182
  "compare",
1183
  "equality"
1184
  ],
1185
+ "time": "2018-02-01T13:46:46+00:00"
1186
  },
1187
  {
1188
  "name": "sebastian/diff",
1189
+ "version": "2.0.1",
1190
  "source": {
1191
  "type": "git",
1192
  "url": "https://github.com/sebastianbergmann/diff.git",
1193
+ "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
1194
  },
1195
  "dist": {
1196
  "type": "zip",
1197
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
1198
+ "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
1199
  "shasum": ""
1200
  },
1201
  "require": {
1202
+ "php": "^7.0"
1203
  },
1204
  "require-dev": {
1205
+ "phpunit/phpunit": "^6.2"
1206
  },
1207
  "type": "library",
1208
  "extra": {
1209
  "branch-alias": {
1210
+ "dev-master": "2.0-dev"
1211
  }
1212
  },
1213
  "autoload": {
1230
  }
1231
  ],
1232
  "description": "Diff implementation",
1233
+ "homepage": "https://github.com/sebastianbergmann/diff",
1234
  "keywords": [
1235
  "diff"
1236
  ],
1237
+ "time": "2017-08-03T08:09:46+00:00"
1238
  },
1239
  {
1240
  "name": "sebastian/environment",
1241
+ "version": "3.1.0",
1242
  "source": {
1243
  "type": "git",
1244
  "url": "https://github.com/sebastianbergmann/environment.git",
1245
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
1246
  },
1247
  "dist": {
1248
  "type": "zip",
1249
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
1250
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
1251
  "shasum": ""
1252
  },
1253
  "require": {
1254
+ "php": "^7.0"
1255
  },
1256
  "require-dev": {
1257
+ "phpunit/phpunit": "^6.1"
1258
  },
1259
  "type": "library",
1260
  "extra": {
1261
  "branch-alias": {
1262
+ "dev-master": "3.1.x-dev"
1263
  }
1264
  },
1265
  "autoload": {
1284
  "environment",
1285
  "hhvm"
1286
  ],
1287
+ "time": "2017-07-01T08:51:00+00:00"
1288
  },
1289
  {
1290
  "name": "sebastian/exporter",
1291
+ "version": "3.1.0",
1292
  "source": {
1293
  "type": "git",
1294
  "url": "https://github.com/sebastianbergmann/exporter.git",
1295
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
1296
  },
1297
  "dist": {
1298
  "type": "zip",
1299
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
1300
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
1301
  "shasum": ""
1302
  },
1303
  "require": {
1304
+ "php": "^7.0",
1305
+ "sebastian/recursion-context": "^3.0"
1306
  },
1307
  "require-dev": {
1308
+ "ext-mbstring": "*",
1309
+ "phpunit/phpunit": "^6.0"
1310
  },
1311
  "type": "library",
1312
  "extra": {
1313
  "branch-alias": {
1314
+ "dev-master": "3.1.x-dev"
1315
  }
1316
  },
1317
  "autoload": {
1351
  "export",
1352
  "exporter"
1353
  ],
1354
+ "time": "2017-04-03T13:19:02+00:00"
1355
  },
1356
  {
1357
  "name": "sebastian/global-state",
1358
+ "version": "2.0.0",
1359
  "source": {
1360
  "type": "git",
1361
  "url": "https://github.com/sebastianbergmann/global-state.git",
1362
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
1363
  },
1364
  "dist": {
1365
  "type": "zip",
1366
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
1367
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
1368
  "shasum": ""
1369
  },
1370
  "require": {
1371
+ "php": "^7.0"
1372
  },
1373
  "require-dev": {
1374
+ "phpunit/phpunit": "^6.0"
1375
  },
1376
  "suggest": {
1377
  "ext-uopz": "*"
1379
  "type": "library",
1380
  "extra": {
1381
  "branch-alias": {
1382
+ "dev-master": "2.0-dev"
1383
  }
1384
  },
1385
  "autoload": {
1402
  "keywords": [
1403
  "global state"
1404
  ],
1405
+ "time": "2017-04-27T15:39:26+00:00"
1406
  },
1407
  {
1408
+ "name": "sebastian/object-enumerator",
1409
+ "version": "3.0.3",
1410
  "source": {
1411
  "type": "git",
1412
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
1413
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
1414
  },
1415
  "dist": {
1416
  "type": "zip",
1417
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
1418
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
1419
  "shasum": ""
1420
  },
1421
  "require": {
1422
+ "php": "^7.0",
1423
+ "sebastian/object-reflector": "^1.1.1",
1424
+ "sebastian/recursion-context": "^3.0"
1425
  },
1426
  "require-dev": {
1427
+ "phpunit/phpunit": "^6.0"
1428
  },
1429
  "type": "library",
1430
  "extra": {
1431
  "branch-alias": {
1432
+ "dev-master": "3.0.x-dev"
1433
  }
1434
  },
1435
  "autoload": {
1442
  "BSD-3-Clause"
1443
  ],
1444
  "authors": [
 
 
 
 
1445
  {
1446
  "name": "Sebastian Bergmann",
1447
  "email": "sebastian@phpunit.de"
 
 
 
 
1448
  }
1449
  ],
1450
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
1451
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
1452
+ "time": "2017-08-03T12:35:26+00:00"
1453
  },
1454
  {
1455
+ "name": "sebastian/object-reflector",
1456
+ "version": "1.1.1",
1457
+ "source": {
1458
+ "type": "git",
1459
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
1460
+ "reference": "773f97c67f28de00d397be301821b06708fca0be"
1461
+ },
1462
+ "dist": {
1463
+ "type": "zip",
1464
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
1465
+ "reference": "773f97c67f28de00d397be301821b06708fca0be",
1466
+ "shasum": ""
1467
+ },
1468
+ "require": {
1469
+ "php": "^7.0"
1470
+ },
1471
+ "require-dev": {
1472
+ "phpunit/phpunit": "^6.0"
1473
+ },
1474
+ "type": "library",
1475
+ "extra": {
1476
+ "branch-alias": {
1477
+ "dev-master": "1.1-dev"
1478
+ }
1479
+ },
1480
+ "autoload": {
1481
+ "classmap": [
1482
+ "src/"
1483
+ ]
1484
+ },
1485
+ "notification-url": "https://packagist.org/downloads/",
1486
+ "license": [
1487
+ "BSD-3-Clause"
1488
+ ],
1489
+ "authors": [
1490
+ {
1491
+ "name": "Sebastian Bergmann",
1492
+ "email": "sebastian@phpunit.de"
1493
+ }
1494
+ ],
1495
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
1496
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
1497
+ "time": "2017-03-29T09:07:27+00:00"
1498
+ },
1499
+ {
1500
+ "name": "sebastian/recursion-context",
1501
+ "version": "3.0.0",
1502
+ "source": {
1503
+ "type": "git",
1504
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
1505
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
1506
+ },
1507
+ "dist": {
1508
+ "type": "zip",
1509
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
1510
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
1511
+ "shasum": ""
1512
+ },
1513
+ "require": {
1514
+ "php": "^7.0"
1515
+ },
1516
+ "require-dev": {
1517
+ "phpunit/phpunit": "^6.0"
1518
+ },
1519
+ "type": "library",
1520
+ "extra": {
1521
+ "branch-alias": {
1522
+ "dev-master": "3.0.x-dev"
1523
+ }
1524
+ },
1525
+ "autoload": {
1526
+ "classmap": [
1527
+ "src/"
1528
+ ]
1529
+ },
1530
+ "notification-url": "https://packagist.org/downloads/",
1531
+ "license": [
1532
+ "BSD-3-Clause"
1533
+ ],
1534
+ "authors": [
1535
+ {
1536
+ "name": "Jeff Welch",
1537
+ "email": "whatthejeff@gmail.com"
1538
+ },
1539
+ {
1540
+ "name": "Sebastian Bergmann",
1541
+ "email": "sebastian@phpunit.de"
1542
+ },
1543
+ {
1544
+ "name": "Adam Harvey",
1545
+ "email": "aharvey@php.net"
1546
+ }
1547
+ ],
1548
+ "description": "Provides functionality to recursively process PHP variables",
1549
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1550
+ "time": "2017-03-03T06:23:57+00:00"
1551
+ },
1552
+ {
1553
+ "name": "sebastian/resource-operations",
1554
+ "version": "1.0.0",
1555
+ "source": {
1556
+ "type": "git",
1557
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
1558
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
1559
+ },
1560
+ "dist": {
1561
+ "type": "zip",
1562
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1563
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1564
+ "shasum": ""
1565
+ },
1566
+ "require": {
1567
+ "php": ">=5.6.0"
1568
+ },
1569
+ "type": "library",
1570
+ "extra": {
1571
+ "branch-alias": {
1572
+ "dev-master": "1.0.x-dev"
1573
+ }
1574
+ },
1575
+ "autoload": {
1576
+ "classmap": [
1577
+ "src/"
1578
+ ]
1579
+ },
1580
+ "notification-url": "https://packagist.org/downloads/",
1581
+ "license": [
1582
+ "BSD-3-Clause"
1583
+ ],
1584
+ "authors": [
1585
+ {
1586
+ "name": "Sebastian Bergmann",
1587
+ "email": "sebastian@phpunit.de"
1588
+ }
1589
+ ],
1590
+ "description": "Provides a list of PHP built-in functions that operate on resources",
1591
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
1592
+ "time": "2015-07-28T20:34:47+00:00"
1593
+ },
1594
+ {
1595
+ "name": "sebastian/version",
1596
+ "version": "2.0.1",
1597
  "source": {
1598
  "type": "git",
1599
  "url": "https://github.com/sebastianbergmann/version.git",
1600
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
1601
  },
1602
  "dist": {
1603
  "type": "zip",
1604
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
1605
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
1606
  "shasum": ""
1607
  },
1608
+ "require": {
1609
+ "php": ">=5.6"
1610
+ },
1611
  "type": "library",
1612
+ "extra": {
1613
+ "branch-alias": {
1614
+ "dev-master": "2.0.x-dev"
1615
+ }
1616
+ },
1617
  "autoload": {
1618
  "classmap": [
1619
  "src/"
1632
  ],
1633
  "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1634
  "homepage": "https://github.com/sebastianbergmann/version",
1635
+ "time": "2016-10-03T07:35:21+00:00"
1636
  },
1637
  {
1638
  "name": "symfony/config",
1639
+ "version": "v3.4.16",
1640
  "source": {
1641
  "type": "git",
1642
+ "url": "https://github.com/symfony/config.git",
1643
+ "reference": "e5389132dc6320682de3643091121c048ff796b3"
1644
  },
1645
  "dist": {
1646
  "type": "zip",
1647
+ "url": "https://api.github.com/repos/symfony/config/zipball/e5389132dc6320682de3643091121c048ff796b3",
1648
+ "reference": "e5389132dc6320682de3643091121c048ff796b3",
1649
  "shasum": ""
1650
  },
1651
  "require": {
1652
+ "php": "^5.5.9|>=7.0.8",
1653
+ "symfony/filesystem": "~2.8|~3.0|~4.0",
1654
+ "symfony/polyfill-ctype": "~1.8"
1655
+ },
1656
+ "conflict": {
1657
+ "symfony/dependency-injection": "<3.3",
1658
+ "symfony/finder": "<3.3"
1659
  },
1660
  "require-dev": {
1661
+ "symfony/dependency-injection": "~3.3|~4.0",
1662
+ "symfony/event-dispatcher": "~3.3|~4.0",
1663
+ "symfony/finder": "~3.3|~4.0",
1664
+ "symfony/yaml": "~3.0|~4.0"
1665
+ },
1666
+ "suggest": {
1667
+ "symfony/yaml": "To use the yaml reference dumper"
1668
  },
1669
  "type": "library",
1670
  "extra": {
1671
  "branch-alias": {
1672
+ "dev-master": "3.4-dev"
1673
  }
1674
  },
1675
  "autoload": {
1676
  "psr-4": {
1677
  "Symfony\\Component\\Config\\": ""
1678
+ },
1679
+ "exclude-from-classmap": [
1680
+ "/Tests/"
1681
+ ]
1682
  },
1683
  "notification-url": "https://packagist.org/downloads/",
1684
  "license": [
1696
  ],
1697
  "description": "Symfony Config Component",
1698
  "homepage": "https://symfony.com",
1699
+ "time": "2018-09-08T13:15:14+00:00"
1700
  },
1701
  {
1702
  "name": "symfony/console",
1703
+ "version": "v3.4.16",
1704
  "source": {
1705
  "type": "git",
1706
+ "url": "https://github.com/symfony/console.git",
1707
+ "reference": "1cbaac35024c9dfc9612b7e2310e82677bf85709"
1708
  },
1709
  "dist": {
1710
  "type": "zip",
1711
+ "url": "https://api.github.com/repos/symfony/console/zipball/1cbaac35024c9dfc9612b7e2310e82677bf85709",
1712
+ "reference": "1cbaac35024c9dfc9612b7e2310e82677bf85709",
1713
  "shasum": ""
1714
  },
1715
  "require": {
1716
+ "php": "^5.5.9|>=7.0.8",
1717
+ "symfony/debug": "~2.8|~3.0|~4.0",
1718
+ "symfony/polyfill-mbstring": "~1.0"
1719
+ },
1720
+ "conflict": {
1721
+ "symfony/dependency-injection": "<3.4",
1722
+ "symfony/process": "<3.3"
1723
  },
1724
  "require-dev": {
1725
  "psr/log": "~1.0",
1726
+ "symfony/config": "~3.3|~4.0",
1727
+ "symfony/dependency-injection": "~3.4|~4.0",
1728
+ "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
1729
+ "symfony/lock": "~3.4|~4.0",
1730
+ "symfony/process": "~3.3|~4.0"
1731
  },
1732
  "suggest": {
1733
+ "psr/log-implementation": "For using the console logger",
1734
  "symfony/event-dispatcher": "",
1735
+ "symfony/lock": "",
1736
  "symfony/process": ""
1737
  },
1738
  "type": "library",
1739
  "extra": {
1740
  "branch-alias": {
1741
+ "dev-master": "3.4-dev"
1742
  }
1743
  },
1744
  "autoload": {
1745
  "psr-4": {
1746
  "Symfony\\Component\\Console\\": ""
1747
+ },
1748
+ "exclude-from-classmap": [
1749
+ "/Tests/"
1750
+ ]
1751
  },
1752
  "notification-url": "https://packagist.org/downloads/",
1753
  "license": [
1765
  ],
1766
  "description": "Symfony Console Component",
1767
  "homepage": "https://symfony.com",
1768
+ "time": "2018-09-30T03:37:36+00:00"
1769
+ },
1770
+ {
1771
+ "name": "symfony/debug",
1772
+ "version": "v3.4.16",
1773
+ "source": {
1774
+ "type": "git",
1775
+ "url": "https://github.com/symfony/debug.git",
1776
+ "reference": "b70cfaae39009ecde3164bb8cba4d029220d27b1"
1777
+ },
1778
+ "dist": {
1779
+ "type": "zip",
1780
+ "url": "https://api.github.com/repos/symfony/debug/zipball/b70cfaae39009ecde3164bb8cba4d029220d27b1",
1781
+ "reference": "b70cfaae39009ecde3164bb8cba4d029220d27b1",
1782
+ "shasum": ""
1783
+ },
1784
+ "require": {
1785
+ "php": "^5.5.9|>=7.0.8",
1786
+ "psr/log": "~1.0"
1787
+ },
1788
+ "conflict": {
1789
+ "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
1790
+ },
1791
+ "require-dev": {
1792
+ "symfony/http-kernel": "~2.8|~3.0|~4.0"
1793
+ },
1794
+ "type": "library",
1795
+ "extra": {
1796
+ "branch-alias": {
1797
+ "dev-master": "3.4-dev"
1798
+ }
1799
+ },
1800
+ "autoload": {
1801
+ "psr-4": {
1802
+ "Symfony\\Component\\Debug\\": ""
1803
+ },
1804
+ "exclude-from-classmap": [
1805
+ "/Tests/"
1806
+ ]
1807
+ },
1808
+ "notification-url": "https://packagist.org/downloads/",
1809
+ "license": [
1810
+ "MIT"
1811
+ ],
1812
+ "authors": [
1813
+ {
1814
+ "name": "Fabien Potencier",
1815
+ "email": "fabien@symfony.com"
1816
+ },
1817
+ {
1818
+ "name": "Symfony Community",
1819
+ "homepage": "https://symfony.com/contributors"
1820
+ }
1821
+ ],
1822
+ "description": "Symfony Debug Component",
1823
+ "homepage": "https://symfony.com",
1824
+ "time": "2018-09-22T18:25:03+00:00"
1825
  },
1826
  {
1827
  "name": "symfony/event-dispatcher",
1828
+ "version": "v2.8.46",
1829
  "source": {
1830
  "type": "git",
1831
+ "url": "https://github.com/symfony/event-dispatcher.git",
1832
+ "reference": "84ae343f39947aa084426ed1138bb96bf94d1f12"
1833
  },
1834
  "dist": {
1835
  "type": "zip",
1836
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/84ae343f39947aa084426ed1138bb96bf94d1f12",
1837
+ "reference": "84ae343f39947aa084426ed1138bb96bf94d1f12",
1838
  "shasum": ""
1839
  },
1840
  "require": {
1842
  },
1843
  "require-dev": {
1844
  "psr/log": "~1.0",
1845
+ "symfony/config": "^2.0.5|~3.0.0",
1846
+ "symfony/dependency-injection": "~2.6|~3.0.0",
1847
+ "symfony/expression-language": "~2.6|~3.0.0",
1848
+ "symfony/stopwatch": "~2.3|~3.0.0"
 
1849
  },
1850
  "suggest": {
1851
  "symfony/dependency-injection": "",
1854
  "type": "library",
1855
  "extra": {
1856
  "branch-alias": {
1857
+ "dev-master": "2.8-dev"
1858
  }
1859
  },
1860
  "autoload": {
1861
  "psr-4": {
1862
  "Symfony\\Component\\EventDispatcher\\": ""
1863
+ },
1864
+ "exclude-from-classmap": [
1865
+ "/Tests/"
1866
+ ]
1867
  },
1868
  "notification-url": "https://packagist.org/downloads/",
1869
  "license": [
1881
  ],
1882
  "description": "Symfony EventDispatcher Component",
1883
  "homepage": "https://symfony.com",
1884
+ "time": "2018-07-26T09:03:18+00:00"
1885
  },
1886
  {
1887
  "name": "symfony/filesystem",
1888
+ "version": "v3.4.16",
1889
  "source": {
1890
  "type": "git",
1891
+ "url": "https://github.com/symfony/filesystem.git",
1892
+ "reference": "f89ab242d915d188fca95ee3291c72c5a094a195"
1893
  },
1894
  "dist": {
1895
  "type": "zip",
1896
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/f89ab242d915d188fca95ee3291c72c5a094a195",
1897
+ "reference": "f89ab242d915d188fca95ee3291c72c5a094a195",
1898
  "shasum": ""
1899
  },
1900
  "require": {
1901
+ "php": "^5.5.9|>=7.0.8",
1902
+ "symfony/polyfill-ctype": "~1.8"
 
 
1903
  },
1904
  "type": "library",
1905
  "extra": {
1906
  "branch-alias": {
1907
+ "dev-master": "3.4-dev"
1908
  }
1909
  },
1910
  "autoload": {
1911
  "psr-4": {
1912
  "Symfony\\Component\\Filesystem\\": ""
1913
+ },
1914
+ "exclude-from-classmap": [
1915
+ "/Tests/"
1916
+ ]
1917
  },
1918
  "notification-url": "https://packagist.org/downloads/",
1919
  "license": [
1931
  ],
1932
  "description": "Symfony Filesystem Component",
1933
  "homepage": "https://symfony.com",
1934
+ "time": "2018-09-30T03:32:28+00:00"
1935
  },
1936
  {
1937
+ "name": "symfony/polyfill-ctype",
1938
+ "version": "v1.9.0",
1939
  "source": {
1940
  "type": "git",
1941
+ "url": "https://github.com/symfony/polyfill-ctype.git",
1942
+ "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
1943
  },
1944
  "dist": {
1945
  "type": "zip",
1946
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
1947
+ "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
1948
  "shasum": ""
1949
  },
1950
  "require": {
1951
+ "php": ">=5.3.3"
1952
  },
1953
+ "suggest": {
1954
+ "ext-ctype": "For best performance"
1955
  },
1956
  "type": "library",
1957
  "extra": {
1958
  "branch-alias": {
1959
+ "dev-master": "1.9-dev"
1960
  }
1961
  },
1962
  "autoload": {
1963
  "psr-4": {
1964
+ "Symfony\\Polyfill\\Ctype\\": ""
1965
+ },
1966
+ "files": [
1967
+ "bootstrap.php"
1968
+ ]
1969
+ },
1970
+ "notification-url": "https://packagist.org/downloads/",
1971
+ "license": [
1972
+ "MIT"
1973
+ ],
1974
+ "authors": [
1975
+ {
1976
+ "name": "Symfony Community",
1977
+ "homepage": "https://symfony.com/contributors"
1978
+ },
1979
+ {
1980
+ "name": "Gert de Pagter",
1981
+ "email": "BackEndTea@gmail.com"
1982
  }
1983
+ ],
1984
+ "description": "Symfony polyfill for ctype functions",
1985
+ "homepage": "https://symfony.com",
1986
+ "keywords": [
1987
+ "compatibility",
1988
+ "ctype",
1989
+ "polyfill",
1990
+ "portable"
1991
+ ],
1992
+ "time": "2018-08-06T14:22:27+00:00"
1993
+ },
1994
+ {
1995
+ "name": "symfony/polyfill-mbstring",
1996
+ "version": "v1.9.0",
1997
+ "source": {
1998
+ "type": "git",
1999
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
2000
+ "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8"
2001
+ },
2002
+ "dist": {
2003
+ "type": "zip",
2004
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8",
2005
+ "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8",
2006
+ "shasum": ""
2007
+ },
2008
+ "require": {
2009
+ "php": ">=5.3.3"
2010
+ },
2011
+ "suggest": {
2012
+ "ext-mbstring": "For best performance"
2013
+ },
2014
+ "type": "library",
2015
+ "extra": {
2016
+ "branch-alias": {
2017
+ "dev-master": "1.9-dev"
2018
+ }
2019
+ },
2020
+ "autoload": {
2021
+ "psr-4": {
2022
+ "Symfony\\Polyfill\\Mbstring\\": ""
2023
+ },
2024
+ "files": [
2025
+ "bootstrap.php"
2026
+ ]
2027
+ },
2028
+ "notification-url": "https://packagist.org/downloads/",
2029
+ "license": [
2030
+ "MIT"
2031
+ ],
2032
+ "authors": [
2033
+ {
2034
+ "name": "Nicolas Grekas",
2035
+ "email": "p@tchwork.com"
2036
+ },
2037
+ {
2038
+ "name": "Symfony Community",
2039
+ "homepage": "https://symfony.com/contributors"
2040
+ }
2041
+ ],
2042
+ "description": "Symfony polyfill for the Mbstring extension",
2043
+ "homepage": "https://symfony.com",
2044
+ "keywords": [
2045
+ "compatibility",
2046
+ "mbstring",
2047
+ "polyfill",
2048
+ "portable",
2049
+ "shim"
2050
+ ],
2051
+ "time": "2018-08-06T14:22:27+00:00"
2052
+ },
2053
+ {
2054
+ "name": "symfony/stopwatch",
2055
+ "version": "v3.4.16",
2056
+ "source": {
2057
+ "type": "git",
2058
+ "url": "https://github.com/symfony/stopwatch.git",
2059
+ "reference": "deda2765e8dab2fc38492e926ea690f2a681f59d"
2060
+ },
2061
+ "dist": {
2062
+ "type": "zip",
2063
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/deda2765e8dab2fc38492e926ea690f2a681f59d",
2064
+ "reference": "deda2765e8dab2fc38492e926ea690f2a681f59d",
2065
+ "shasum": ""
2066
+ },
2067
+ "require": {
2068
+ "php": "^5.5.9|>=7.0.8"
2069
+ },
2070
+ "type": "library",
2071
+ "extra": {
2072
+ "branch-alias": {
2073
+ "dev-master": "3.4-dev"
2074
+ }
2075
+ },
2076
+ "autoload": {
2077
+ "psr-4": {
2078
+ "Symfony\\Component\\Stopwatch\\": ""
2079
+ },
2080
+ "exclude-from-classmap": [
2081
+ "/Tests/"
2082
+ ]
2083
  },
2084
  "notification-url": "https://packagist.org/downloads/",
2085
  "license": [
2097
  ],
2098
  "description": "Symfony Stopwatch Component",
2099
  "homepage": "https://symfony.com",
2100
+ "time": "2018-07-26T10:03:52+00:00"
2101
  },
2102
  {
2103
  "name": "symfony/yaml",
2104
+ "version": "v3.4.16",
2105
  "source": {
2106
  "type": "git",
2107
+ "url": "https://github.com/symfony/yaml.git",
2108
+ "reference": "61973ecda60e9f3561e929e19c07d4878b960fc1"
2109
  },
2110
  "dist": {
2111
  "type": "zip",
2112
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/61973ecda60e9f3561e929e19c07d4878b960fc1",
2113
+ "reference": "61973ecda60e9f3561e929e19c07d4878b960fc1",
2114
  "shasum": ""
2115
  },
2116
  "require": {
2117
+ "php": "^5.5.9|>=7.0.8",
2118
+ "symfony/polyfill-ctype": "~1.8"
2119
+ },
2120
+ "conflict": {
2121
+ "symfony/console": "<3.4"
2122
  },
2123
  "require-dev": {
2124
+ "symfony/console": "~3.4|~4.0"
2125
+ },
2126
+ "suggest": {
2127
+ "symfony/console": "For validating YAML files using the lint command"
2128
  },
2129
  "type": "library",
2130
  "extra": {
2131
  "branch-alias": {
2132
+ "dev-master": "3.4-dev"
2133
  }
2134
  },
2135
  "autoload": {
2136
  "psr-4": {
2137
  "Symfony\\Component\\Yaml\\": ""
2138
+ },
2139
+ "exclude-from-classmap": [
2140
+ "/Tests/"
2141
+ ]
2142
  },
2143
  "notification-url": "https://packagist.org/downloads/",
2144
  "license": [
2156
  ],
2157
  "description": "Symfony Yaml Component",
2158
  "homepage": "https://symfony.com",
2159
+ "time": "2018-09-24T08:15:45+00:00"
2160
+ },
2161
+ {
2162
+ "name": "theseer/tokenizer",
2163
+ "version": "1.1.0",
2164
+ "source": {
2165
+ "type": "git",
2166
+ "url": "https://github.com/theseer/tokenizer.git",
2167
+ "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
2168
+ },
2169
+ "dist": {
2170
+ "type": "zip",
2171
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
2172
+ "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
2173
+ "shasum": ""
2174
+ },
2175
+ "require": {
2176
+ "ext-dom": "*",
2177
+ "ext-tokenizer": "*",
2178
+ "ext-xmlwriter": "*",
2179
+ "php": "^7.0"
2180
+ },
2181
+ "type": "library",
2182
+ "autoload": {
2183
+ "classmap": [
2184
+ "src/"
2185
+ ]
2186
+ },
2187
+ "notification-url": "https://packagist.org/downloads/",
2188
+ "license": [
2189
+ "BSD-3-Clause"
2190
+ ],
2191
+ "authors": [
2192
+ {
2193
+ "name": "Arne Blankerts",
2194
+ "email": "arne@blankerts.de",
2195
+ "role": "Developer"
2196
+ }
2197
+ ],
2198
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
2199
+ "time": "2017-04-07T12:08:54+00:00"
2200
+ },
2201
+ {
2202
+ "name": "webmozart/assert",
2203
+ "version": "1.3.0",
2204
+ "source": {
2205
+ "type": "git",
2206
+ "url": "https://github.com/webmozart/assert.git",
2207
+ "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
2208
+ },
2209
+ "dist": {
2210
+ "type": "zip",
2211
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
2212
+ "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
2213
+ "shasum": ""
2214
+ },
2215
+ "require": {
2216
+ "php": "^5.3.3 || ^7.0"
2217
+ },
2218
+ "require-dev": {
2219
+ "phpunit/phpunit": "^4.6",
2220
+ "sebastian/version": "^1.0.1"
2221
+ },
2222
+ "type": "library",
2223
+ "extra": {
2224
+ "branch-alias": {
2225
+ "dev-master": "1.3-dev"
2226
+ }
2227
+ },
2228
+ "autoload": {
2229
+ "psr-4": {
2230
+ "Webmozart\\Assert\\": "src/"
2231
+ }
2232
+ },
2233
+ "notification-url": "https://packagist.org/downloads/",
2234
+ "license": [
2235
+ "MIT"
2236
+ ],
2237
+ "authors": [
2238
+ {
2239
+ "name": "Bernhard Schussek",
2240
+ "email": "bschussek@gmail.com"
2241
+ }
2242
+ ],
2243
+ "description": "Assertions to validate method input/output with nice error messages.",
2244
+ "keywords": [
2245
+ "assert",
2246
+ "check",
2247
+ "validate"
2248
+ ],
2249
+ "time": "2018-01-29T19:49:41+00:00"
2250
  }
2251
  ],
2252
  "aliases": [],
lib/vendor/enshrined/svg-sanitize/phpunit.xml.dist CHANGED
@@ -14,4 +14,10 @@
14
  <log type="coverage-clover" target="./build/logs/clover.xml"/>
15
  </logging>
16
 
 
 
 
 
 
 
17
  </phpunit>
14
  <log type="coverage-clover" target="./build/logs/clover.xml"/>
15
  </logging>
16
 
17
+ <filter>
18
+ <whitelist processUncoveredFilesFromWhitelist="true">
19
+ <directory suffix=".php">./src</directory>
20
+ </whitelist>
21
+ </filter>
22
+
23
  </phpunit>
lib/vendor/enshrined/svg-sanitize/src/Sanitizer.php CHANGED
@@ -1,9 +1,7 @@
1
  <?php
2
 
3
-
4
  namespace enshrined\svgSanitize;
5
 
6
-
7
  use DOMDocument;
8
  use enshrined\svgSanitize\data\AllowedAttributes;
9
  use enshrined\svgSanitize\data\AllowedTags;
@@ -58,16 +56,19 @@ class Sanitizer
58
  */
59
  protected $removeXMLTag = false;
60
 
 
 
 
 
 
61
  /**
62
  *
63
  */
64
  function __construct()
65
  {
66
- $this->resetInternal();
67
-
68
  // Load default tags/attributes
69
- $this->allowedAttrs = AllowedAttributes::getAttributes();
70
- $this->allowedTags = AllowedTags::getTags();
71
  }
72
 
73
  /**
@@ -78,12 +79,29 @@ class Sanitizer
78
  $this->xmlDocument = new DOMDocument();
79
  $this->xmlDocument->preserveWhiteSpace = false;
80
  $this->xmlDocument->strictErrorChecking = false;
81
- $this->xmlDocument->formatOutput = true;
 
82
 
83
- // Maybe don't format the output
84
- if($this->minifyXML) {
85
- $this->xmlDocument->formatOutput = false;
86
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  }
88
 
89
  /**
@@ -103,7 +121,7 @@ class Sanitizer
103
  */
104
  public function setAllowedTags(TagInterface $allowedTags)
105
  {
106
- $this->allowedTags = $allowedTags::getTags();
107
  }
108
 
109
  /**
@@ -123,7 +141,7 @@ class Sanitizer
123
  */
124
  public function setAllowedAttrs(AttributeInterface $allowedAttrs)
125
  {
126
- $this->allowedAttrs = $allowedAttrs::getAttributes();
127
  }
128
 
129
  /**
@@ -152,6 +170,7 @@ class Sanitizer
152
  // Strip php tags
153
  $dirty = preg_replace('/<\?(=|php)(.+?)\?>/i', '', $dirty);
154
 
 
155
  $this->setUpBefore();
156
 
157
  $loaded = $this->xmlDocument->loadXML($dirty);
@@ -171,16 +190,16 @@ class Sanitizer
171
  $this->startClean($allElements);
172
 
173
  // Save cleaned XML to a variable
174
- if($this->removeXMLTag) {
175
- $clean = $this->xmlDocument->saveXML($this->xmlDocument->documentElement, LIBXML_NOEMPTYTAG);
176
  } else {
177
- $clean = $this->xmlDocument->saveXML($this->xmlDocument, LIBXML_NOEMPTYTAG);
178
  }
179
 
180
  $this->resetAfter();
181
 
182
  // Remove any extra whitespaces when minifying
183
- if($this->minifyXML) {
184
  $clean = preg_replace('/\s+/', ' ', $clean);
185
  }
186
 
@@ -205,10 +224,7 @@ class Sanitizer
205
  */
206
  protected function resetAfter()
207
  {
208
- // Reset DOMDocument to a clean state in case we use it again
209
- $this->resetInternal();
210
-
211
- // Reset the entity loader3
212
  libxml_disable_entity_loader($this->xmlLoaderValue);
213
  }
214
 
@@ -250,8 +266,8 @@ class Sanitizer
250
 
251
  $this->cleanHrefs($currentElement);
252
 
253
- if(strtolower($currentElement->tagName) === 'use') {
254
- if($this->isUseTagDirty($currentElement)) {
255
  $currentElement->parentNode->removeChild($currentElement);
256
  continue;
257
  }
@@ -290,11 +306,11 @@ class Sanitizer
290
  *
291
  * @param \DOMElement $element
292
  */
293
- protected function cleanXlinkHrefs(\DOMElement &$element)
294
  {
295
  $xlinks = $element->getAttributeNS('http://www.w3.org/1999/xlink', 'href');
296
  if (preg_match(self::SCRIPT_REGEX, $xlinks) === 1) {
297
- if(! in_array(substr($xlinks, 0, 14), array(
298
  'data:image/png', // PNG
299
  'data:image/gif', // GIF
300
  'data:image/jpg', // JPG
@@ -311,7 +327,7 @@ class Sanitizer
311
  *
312
  * @param \DOMElement $element
313
  */
314
- protected function cleanHrefs(\DOMElement &$element)
315
  {
316
  $href = $element->getAttribute('href');
317
  if (preg_match(self::SCRIPT_REGEX, $href) === 1) {
@@ -336,7 +352,8 @@ class Sanitizer
336
  * @param $value
337
  * @return bool
338
  */
339
- protected function hasRemoteReference($value){
 
340
  $value = $this->removeNonPrintableCharacters($value);
341
 
342
  $wrapped_in_url = preg_match('~^url\(\s*[\'"]\s*(.*)\s*[\'"]\s*\)$~xi', $value, $match);
@@ -346,11 +363,7 @@ class Sanitizer
346
 
347
  $value = trim($match[1], '\'"');
348
 
349
- if (preg_match('~^((https?|ftp|file):)?//~xi', $value)){
350
- return true;
351
- }
352
-
353
- return false;
354
  }
355
 
356
  /**
@@ -368,7 +381,7 @@ class Sanitizer
368
  *
369
  * @param bool $removeXMLTag
370
  */
371
- public function removeXMLTag ($removeXMLTag = false)
372
  {
373
  $this->removeXMLTag = (bool) $removeXMLTag;
374
  }
@@ -380,15 +393,9 @@ class Sanitizer
380
  *
381
  * @return bool
382
  */
383
- protected function isAriaAttribute( $attributeName )
384
  {
385
- $position = strpos($attributeName, 'aria-');
386
-
387
- if($position === 0) {
388
- return true;
389
- }
390
-
391
- return false;
392
  }
393
 
394
  /**
@@ -398,15 +405,9 @@ class Sanitizer
398
  *
399
  * @return bool
400
  */
401
- protected function isDataAttribute( $attributeName )
402
  {
403
- $position = strpos($attributeName, 'data-');
404
-
405
- if($position === 0) {
406
- return true;
407
- }
408
-
409
- return false;
410
  }
411
 
412
  /**
@@ -415,7 +416,8 @@ class Sanitizer
415
  * @param \DOMElement $element
416
  * @return bool
417
  */
418
- protected function isUseTagDirty(\DOMElement $element) {
 
419
  $xlinks = $element->getAttributeNS('http://www.w3.org/1999/xlink', 'href');
420
  if ($xlinks && substr($xlinks, 0, 1) !== '#') {
421
  return true;
1
  <?php
2
 
 
3
  namespace enshrined\svgSanitize;
4
 
 
5
  use DOMDocument;
6
  use enshrined\svgSanitize\data\AllowedAttributes;
7
  use enshrined\svgSanitize\data\AllowedTags;
56
  */
57
  protected $removeXMLTag = false;
58
 
59
+ /**
60
+ * @var int
61
+ */
62
+ protected $xmlOptions = LIBXML_NOEMPTYTAG;
63
+
64
  /**
65
  *
66
  */
67
  function __construct()
68
  {
 
 
69
  // Load default tags/attributes
70
+ $this->allowedAttrs = array_map('strtolower', AllowedAttributes::getAttributes());
71
+ $this->allowedTags = array_map('strtolower', AllowedTags::getTags());
72
  }
73
 
74
  /**
79
  $this->xmlDocument = new DOMDocument();
80
  $this->xmlDocument->preserveWhiteSpace = false;
81
  $this->xmlDocument->strictErrorChecking = false;
82
+ $this->xmlDocument->formatOutput = !$this->minifyXML;
83
+ }
84
 
85
+ /**
86
+ * Set XML options to use when saving XML
87
+ * See: DOMDocument::saveXML
88
+ *
89
+ * @param int $xmlOptions
90
+ */
91
+ public function setXMLOptions($xmlOptions)
92
+ {
93
+ $this->xmlOptions = $xmlOptions;
94
+ }
95
+
96
+ /**
97
+ * Get XML options to use when saving XML
98
+ * See: DOMDocument::saveXML
99
+ *
100
+ * @return int
101
+ */
102
+ public function getXMLOptions()
103
+ {
104
+ return $this->xmlOptions;
105
  }
106
 
107
  /**
121
  */
122
  public function setAllowedTags(TagInterface $allowedTags)
123
  {
124
+ $this->allowedTags = array_map('strtolower', $allowedTags::getTags());
125
  }
126
 
127
  /**
141
  */
142
  public function setAllowedAttrs(AttributeInterface $allowedAttrs)
143
  {
144
+ $this->allowedAttrs = array_map('strtolower', $allowedAttrs::getAttributes());
145
  }
146
 
147
  /**
170
  // Strip php tags
171
  $dirty = preg_replace('/<\?(=|php)(.+?)\?>/i', '', $dirty);
172
 
173
+ $this->resetInternal();
174
  $this->setUpBefore();
175
 
176
  $loaded = $this->xmlDocument->loadXML($dirty);
190
  $this->startClean($allElements);
191
 
192
  // Save cleaned XML to a variable
193
+ if ($this->removeXMLTag) {
194
+ $clean = $this->xmlDocument->saveXML($this->xmlDocument->documentElement, $this->xmlOptions);
195
  } else {
196
+ $clean = $this->xmlDocument->saveXML($this->xmlDocument, $this->xmlOptions);
197
  }
198
 
199
  $this->resetAfter();
200
 
201
  // Remove any extra whitespaces when minifying
202
+ if ($this->minifyXML) {
203
  $clean = preg_replace('/\s+/', ' ', $clean);
204
  }
205
 
224
  */
225
  protected function resetAfter()
226
  {
227
+ // Reset the entity loader
 
 
 
228
  libxml_disable_entity_loader($this->xmlLoaderValue);
229
  }
230
 
266
 
267
  $this->cleanHrefs($currentElement);
268
 
269
+ if (strtolower($currentElement->tagName) === 'use') {
270
+ if ($this->isUseTagDirty($currentElement)) {
271
  $currentElement->parentNode->removeChild($currentElement);
272
  continue;
273
  }
306
  *
307
  * @param \DOMElement $element
308
  */
309
+ protected function cleanXlinkHrefs(\DOMElement $element)
310
  {
311
  $xlinks = $element->getAttributeNS('http://www.w3.org/1999/xlink', 'href');
312
  if (preg_match(self::SCRIPT_REGEX, $xlinks) === 1) {
313
+ if (!in_array(substr($xlinks, 0, 14), array(
314
  'data:image/png', // PNG
315
  'data:image/gif', // GIF
316
  'data:image/jpg', // JPG
327
  *
328
  * @param \DOMElement $element
329
  */
330
+ protected function cleanHrefs(\DOMElement $element)
331
  {
332
  $href = $element->getAttribute('href');
333
  if (preg_match(self::SCRIPT_REGEX, $href) === 1) {
352
  * @param $value
353
  * @return bool
354
  */
355
+ protected function hasRemoteReference($value)
356
+ {
357
  $value = $this->removeNonPrintableCharacters($value);
358
 
359
  $wrapped_in_url = preg_match('~^url\(\s*[\'"]\s*(.*)\s*[\'"]\s*\)$~xi', $value, $match);
363
 
364
  $value = trim($match[1], '\'"');
365
 
366
+ return preg_match('~^((https?|ftp|file):)?//~xi', $value);
 
 
 
 
367
  }
368
 
369
  /**
381
  *
382
  * @param bool $removeXMLTag
383
  */
384
+ public function removeXMLTag($removeXMLTag = false)
385
  {
386
  $this->removeXMLTag = (bool) $removeXMLTag;
387
  }
393
  *
394
  * @return bool
395
  */
396
+ protected function isAriaAttribute($attributeName)
397
  {
398
+ return strpos($attributeName, 'aria-') === 0;
 
 
 
 
 
 
399
  }
400
 
401
  /**
405
  *
406
  * @return bool
407
  */
408
+ protected function isDataAttribute($attributeName)
409
  {
410
+ return strpos($attributeName, 'data-') === 0;
 
 
 
 
 
 
411
  }
412
 
413
  /**
416
  * @param \DOMElement $element
417
  * @return bool
418
  */
419
+ protected function isUseTagDirty(\DOMElement $element)
420
+ {
421
  $xlinks = $element->getAttributeNS('http://www.w3.org/1999/xlink', 'href');
422
  if ($xlinks && substr($xlinks, 0, 1) !== '#') {
423
  return true;
lib/vendor/enshrined/svg-sanitize/src/data/AllowedAttributes.php CHANGED
@@ -39,6 +39,7 @@ class AllowedAttributes implements AttributeInterface
39
  'cols',
40
  'colspan',
41
  'coords',
 
42
  'datetime',
43
  'default',
44
  'dir',
@@ -54,6 +55,7 @@ class AllowedAttributes implements AttributeInterface
54
  'href',
55
  'hreflang',
56
  'id',
 
57
  'ismap',
58
  'label',
59
  'lang',
@@ -91,10 +93,12 @@ class AllowedAttributes implements AttributeInterface
91
  'selected',
92
  'shape',
93
  'size',
 
94
  'span',
95
  'srclang',
96
  'start',
97
  'src',
 
98
  'step',
99
  'style',
100
  'summary',
@@ -121,6 +125,7 @@ class AllowedAttributes implements AttributeInterface
121
  'begin',
122
  'bias',
123
  'by',
 
124
  'clip',
125
  'clip-path',
126
  'clip-rule',
@@ -163,6 +168,9 @@ class AllowedAttributes implements AttributeInterface
163
  'glyphref',
164
  'gradientunits',
165
  'gradienttransform',
 
 
 
166
  'image-rendering',
167
  'in',
168
  'in2',
@@ -175,6 +183,7 @@ class AllowedAttributes implements AttributeInterface
175
  'keypoints',
176
  'keysplines',
177
  'keytimes',
 
178
  'lengthadjust',
179
  'letter-spacing',
180
  'kernelmatrix',
@@ -191,8 +200,11 @@ class AllowedAttributes implements AttributeInterface
191
  'maskunits',
192
  'max',
193
  'mask',
 
 
194
  'mode',
195
  'min',
 
196
  'numoctaves',
197
  'offset',
198
  'operator',
@@ -210,6 +222,7 @@ class AllowedAttributes implements AttributeInterface
210
  'patternunits',
211
  'points',
212
  'preservealpha',
 
213
  'r',
214
  'rx',
215
  'ry',
@@ -239,7 +252,9 @@ class AllowedAttributes implements AttributeInterface
239
  'stroke-opacity',
240
  'stroke',
241
  'stroke-width',
 
242
  'surfacescale',
 
243
  'targetx',
244
  'targety',
245
  'transform',
@@ -247,6 +262,7 @@ class AllowedAttributes implements AttributeInterface
247
  'text-decoration',
248
  'text-rendering',
249
  'textlength',
 
250
  'u1',
251
  'u2',
252
  'unicode',
@@ -256,6 +272,7 @@ class AllowedAttributes implements AttributeInterface
256
  'vert-adv-y',
257
  'vert-origin-x',
258
  'vert-origin-y',
 
259
  'word-spacing',
260
  'wrap',
261
  'writing-mode',
@@ -264,6 +281,7 @@ class AllowedAttributes implements AttributeInterface
264
  'x',
265
  'x1',
266
  'x2',
 
267
  'y',
268
  'y1',
269
  'y2',
@@ -273,6 +291,7 @@ class AllowedAttributes implements AttributeInterface
273
  // MathML
274
  'accent',
275
  'accentunder',
 
276
  'bevelled',
277
  'close',
278
  'columnsalign',
@@ -280,10 +299,14 @@ class AllowedAttributes implements AttributeInterface
280
  'columnspan',
281
  'denomalign',
282
  'depth',
 
283
  'display',
284
  'displaystyle',
285
  'fence',
286
  'frame',
 
 
 
287
  'largeop',
288
  'length',
289
  'linethickness',
@@ -311,11 +334,14 @@ class AllowedAttributes implements AttributeInterface
311
  'selection',
312
  'separator',
313
  'separators',
 
314
  'stretchy',
315
  'subscriptshift',
316
  'supscriptshift',
317
  'symmetric',
318
  'voffset',
 
 
319
 
320
  // XML
321
  'xlink:href',
@@ -323,73 +349,6 @@ class AllowedAttributes implements AttributeInterface
323
  'xlink:title',
324
  'xml:space',
325
  'xmlns:xlink',
326
-
327
-
328
- // Camel Case
329
- 'allowreorder',
330
- 'attributename',
331
- 'attributetype',
332
- 'autoreverse',
333
- 'basefrequency',
334
- 'baseprofile',
335
- 'calcmode',
336
- 'clippathunits',
337
- 'contentscripttype',
338
- 'contentstyletype',
339
- 'diffuseconstant',
340
- 'edgemode',
341
- 'externalresourcesrequired',
342
- 'filterres',
343
- 'filterunits',
344
- 'glyphref',
345
- 'gradienttransform',
346
- 'gradientunits',
347
- 'kernelmatrix',
348
- 'kernelunitlength',
349
- 'keypoints',
350
- 'keysplines',
351
- 'keytimes',
352
- 'lengthadjust',
353
- 'limitingconeangle',
354
- 'markerheight',
355
- 'markerunits',
356
- 'markerwidth',
357
- 'maskcontentunits',
358
- 'maskunits',
359
- 'numoctaves',
360
- 'pathlength',
361
- 'patterncontentunits',
362
- 'patterntransform',
363
- 'patternunits',
364
- 'pointsatx',
365
- 'pointsaty',
366
- 'pointsatz',
367
- 'preservealpha',
368
- 'preserveaspectratio',
369
- 'primitiveunits',
370
- 'refx',
371
- 'refy',
372
- 'repeatcount',
373
- 'repeatdur',
374
- 'requiredextensions',
375
- 'requiredfeatures',
376
- 'specularconstant',
377
- 'specularexponent',
378
- 'spreadmethod',
379
- 'startoffset',
380
- 'stddeviation',
381
- 'stitchtiles',
382
- 'surfacescale',
383
- 'systemlanguage',
384
- 'tablevalues',
385
- 'targetx',
386
- 'targety',
387
- 'textlength',
388
- 'viewbox',
389
- 'viewtarget',
390
- 'xchannelselector',
391
- 'ychannelselector',
392
- 'zoomandpan',
393
  );
394
  }
395
- }
39
  'cols',
40
  'colspan',
41
  'coords',
42
+ 'crossorigin',
43
  'datetime',
44
  'default',
45
  'dir',
55
  'href',
56
  'hreflang',
57
  'id',
58
+ 'integrity',
59
  'ismap',
60
  'label',
61
  'lang',
93
  'selected',
94
  'shape',
95
  'size',
96
+ 'sizes',
97
  'span',
98
  'srclang',
99
  'start',
100
  'src',
101
+ 'srcset',
102
  'step',
103
  'style',
104
  'summary',
125
  'begin',
126
  'bias',
127
  'by',
128
+ 'class',
129
  'clip',
130
  'clip-path',
131
  'clip-rule',
168
  'glyphref',
169
  'gradientunits',
170
  'gradienttransform',
171
+ 'height',
172
+ 'href',
173
+ 'id',
174
  'image-rendering',
175
  'in',
176
  'in2',
183
  'keypoints',
184
  'keysplines',
185
  'keytimes',
186
+ 'lang',
187
  'lengthadjust',
188
  'letter-spacing',
189
  'kernelmatrix',
200
  'maskunits',
201
  'max',
202
  'mask',
203
+ 'media',
204
+ 'method',
205
  'mode',
206
  'min',
207
+ 'name',
208
  'numoctaves',
209
  'offset',
210
  'operator',
222
  'patternunits',
223
  'points',
224
  'preservealpha',
225
+ 'preserveaspectratio',
226
  'r',
227
  'rx',
228
  'ry',
252
  'stroke-opacity',
253
  'stroke',
254
  'stroke-width',
255
+ 'style',
256
  'surfacescale',
257
+ 'tabindex',
258
  'targetx',
259
  'targety',
260
  'transform',
262
  'text-decoration',
263
  'text-rendering',
264
  'textlength',
265
+ 'type',
266
  'u1',
267
  'u2',
268
  'unicode',
272
  'vert-adv-y',
273
  'vert-origin-x',
274
  'vert-origin-y',
275
+ 'width',
276
  'word-spacing',
277
  'wrap',
278
  'writing-mode',
281
  'x',
282
  'x1',
283
  'x2',
284
+ 'xmlns',
285
  'y',
286
  'y1',
287
  'y2',
291
  // MathML
292
  'accent',
293
  'accentunder',
294
+ 'align',
295
  'bevelled',
296
  'close',
297
  'columnsalign',
299
  'columnspan',
300
  'denomalign',
301
  'depth',
302
+ 'dir',
303
  'display',
304
  'displaystyle',
305
  'fence',
306
  'frame',
307
+ 'height',
308
+ 'href',
309
+ 'id',
310
  'largeop',
311
  'length',
312
  'linethickness',
334
  'selection',
335
  'separator',
336
  'separators',
337
+ 'slope',
338
  'stretchy',
339
  'subscriptshift',
340
  'supscriptshift',
341
  'symmetric',
342
  'voffset',
343
+ 'width',
344
+ 'xmlns',
345
 
346
  // XML
347
  'xlink:href',
349
  'xlink:title',
350
  'xml:space',
351
  'xmlns:xlink',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
352
  );
353
  }
354
+ }
lib/vendor/enshrined/svg-sanitize/src/data/AllowedTags.php CHANGED
@@ -21,43 +21,225 @@ class AllowedTags implements TagInterface
21
  {
22
  return array (
23
  // HTML
24
- 'a','abbr','acronym','address','area','article','aside','audio','b',
25
- 'bdi','bdo','big','blink','blockquote','body','br','button','canvas',
26
- 'caption','center','cite','code','col','colgroup','content','data',
27
- 'datalist','dd','decorator','del','details','dfn','dir','div','dl','dt',
28
- 'element','em','fieldset','figcaption','figure','font','footer','form',
29
- 'h1','h2','h3','h4','h5','h6','head','header','hgroup','hr','html','i',
30
- 'image','img','input','ins','kbd','label','legend','li','main','map','mark',
31
- 'marquee','menu','menuitem','meter','nav','nobr','ol','optgroup',
32
- 'option','output','p','pre','progress','q','rp','rt','ruby','s','samp',
33
- 'section','select','shadow','small','source','spacer','span','strike',
34
- 'strong','style','sub','summary','sup','table','tbody','td','template',
35
- 'textarea','tfoot','th','thead','time','tr','track','tt','u','ul','var',
36
- 'video','wbr',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
  // SVG
39
- 'svg','altglyph','altglyphdef','altglyphitem','animatecolor',
40
- 'animatemotion','animatetransform','circle','clippath','defs','desc',
41
- 'ellipse','filter','font','g','glyph','glyphref','hkern','image','line',
42
- 'lineargradient','marker','mask','metadata','mpath','path','pattern',
43
- 'polygon','polyline','radialgradient','rect','stop','switch','symbol',
44
- 'text','textpath','title','tref','tspan','view','vkern', 'use',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
  // SVG Filters
47
- 'feblend','fecolormatrix','fecomponenttransfer','fecomposite',
48
- 'feconvolvematrix','fediffuselighting','fedisplacementmap',
49
- 'feflood','fefunca','fefuncb','fefuncg','fefuncr','fegaussianblur',
50
- 'femerge','femergenode','femorphology','feoffset',
51
- 'fespecularlighting','fetile','feturbulence',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
 
53
  //MathML
54
- 'math','menclose','merror','mfenced','mfrac','mglyph','mi','mlabeledtr',
55
- 'mmuliscripts','mn','mo','mover','mpadded','mphantom','mroot','mrow',
56
- 'ms','mpspace','msqrt','mystyle','msub','msup','msubsup','mtable','mtd',
57
- 'mtext','mtr','munder','munderover',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
  //text
60
  '#text'
61
  );
62
  }
63
- }
21
  {
22
  return array (
23
  // HTML
24
+ 'a',
25
+ 'abbr',
26
+ 'acronym',
27
+ 'address',
28
+ 'area',
29
+ 'article',
30
+ 'aside',
31
+ 'audio',
32
+ 'b',
33
+ 'bdi',
34
+ 'bdo',
35
+ 'big',
36
+ 'blink',
37
+ 'blockquote',
38
+ 'body',
39
+ 'br',
40
+ 'button',
41
+ 'canvas',
42
+ 'caption',
43
+ 'center',
44
+ 'cite',
45
+ 'code',
46
+ 'col',
47
+ 'colgroup',
48
+ 'content',
49
+ 'data',
50
+ 'datalist',
51
+ 'dd',
52
+ 'decorator',
53
+ 'del',
54
+ 'details',
55
+ 'dfn',
56
+ 'dir',
57
+ 'div',
58
+ 'dl',
59
+ 'dt',
60
+ 'element',
61
+ 'em',
62
+ 'fieldset',
63
+ 'figcaption',
64
+ 'figure',
65
+ 'font',
66
+ 'footer',
67
+ 'form',
68
+ 'h1',
69
+ 'h2',
70
+ 'h3',
71
+ 'h4',
72
+ 'h5',
73
+ 'h6',
74
+ 'head',
75
+ 'header',
76
+ 'hgroup',
77
+ 'hr',
78
+ 'html',
79
+ 'i',
80
+ 'image',
81
+ 'img',
82
+ 'input',
83
+ 'ins',
84
+ 'kbd',
85
+ 'label',
86
+ 'legend',
87
+ 'li',
88
+ 'main',
89
+ 'map',
90
+ 'mark',
91
+ 'marquee',
92
+ 'menu',
93
+ 'menuitem',
94
+ 'meter',
95
+ 'nav',
96
+ 'nobr',
97
+ 'ol',
98
+ 'optgroup',
99
+ 'option',
100
+ 'output',
101
+ 'p',
102
+ 'pre',
103
+ 'progress',
104
+ 'q',
105
+ 'rp',
106
+ 'rt',
107
+ 'ruby',
108
+ 's',
109
+ 'samp',
110
+ 'section',
111
+ 'select',
112
+ 'shadow',
113
+ 'small',
114
+ 'source',
115
+ 'spacer',
116
+ 'span',
117
+ 'strike',
118
+ 'strong',
119
+ 'style',
120
+ 'sub',
121
+ 'summary',
122
+ 'sup',
123
+ 'table',
124
+ 'tbody',
125
+ 'td',
126
+ 'template',
127
+ 'textarea',
128
+ 'tfoot',
129
+ 'th',
130
+ 'thead',
131
+ 'time',
132
+ 'tr',
133
+ 'track',
134
+ 'tt',
135
+ 'u',
136
+ 'ul',
137
+ 'var',
138
+ 'video',
139
+ 'wbr',
140
 
141
  // SVG
142
+ 'svg',
143
+ 'altglyph',
144
+ 'altglyphdef',
145
+ 'altglyphitem',
146
+ 'animatecolor',
147
+ 'animatemotion',
148
+ 'animatetransform',
149
+ 'circle',
150
+ 'clippath',
151
+ 'defs',
152
+ 'desc',
153
+ 'ellipse',
154
+ 'filter',
155
+ 'font',
156
+ 'g',
157
+ 'glyph',
158
+ 'glyphref',
159
+ 'hkern',
160
+ 'image',
161
+ 'line',
162
+ 'lineargradient',
163
+ 'marker',
164
+ 'mask',
165
+ 'metadata',
166
+ 'mpath',
167
+ 'path',
168
+ 'pattern',
169
+ 'polygon',
170
+ 'polyline',
171
+ 'radialgradient',
172
+ 'rect',
173
+ 'stop',
174
+ 'switch',
175
+ 'symbol',
176
+ 'text',
177
+ 'textpath',
178
+ 'title',
179
+ 'tref',
180
+ 'tspan',
181
+ 'use',
182
+ 'view',
183
+ 'vkern',
184
 
185
  // SVG Filters
186
+ 'feBlend',
187
+ 'feColorMatrix',
188
+ 'feComponentTransfer',
189
+ 'feComposite',
190
+ 'feConvolveMatrix',
191
+ 'feDiffuseLighting',
192
+ 'feDisplacementMap',
193
+ 'feDistantLight',
194
+ 'feFlood',
195
+ 'feFuncA',
196
+ 'feFuncB',
197
+ 'feFuncG',
198
+ 'feFuncR',
199
+ 'feGaussianBlur',
200
+ 'feMerge',
201
+ 'feMergeNode',
202
+ 'feMorphology',
203
+ 'feOffset',
204
+ 'fePointLight',
205
+ 'feSpecularLighting',
206
+ 'feSpotLight',
207
+ 'feTile',
208
+ 'feTurbulence',
209
 
210
  //MathML
211
+ 'math',
212
+ 'menclose',
213
+ 'merror',
214
+ 'mfenced',
215
+ 'mfrac',
216
+ 'mglyph',
217
+ 'mi',
218
+ 'mlabeledtr',
219
+ 'mmuliscripts',
220
+ 'mn',
221
+ 'mo',
222
+ 'mover',
223
+ 'mpadded',
224
+ 'mphantom',
225
+ 'mroot',
226
+ 'mrow',
227
+ 'ms',
228
+ 'mpspace',
229
+ 'msqrt',
230
+ 'mystyle',
231
+ 'msub',
232
+ 'msup',
233
+ 'msubsup',
234
+ 'mtable',
235
+ 'mtd',
236
+ 'mtext',
237
+ 'mtr',
238
+ 'munder',
239
+ 'munderover',
240
 
241
  //text
242
  '#text'
243
  );
244
  }
245
+ }
lib/vendor/enshrined/svg-sanitize/tests/AllowedAttributesTest.php CHANGED
@@ -1,11 +1,12 @@
1
  <?php
2
 
3
  use \enshrined\svgSanitize\data\AllowedAttributes;
 
4
 
5
  /**
6
  * Class AllowedAttributesTest
7
  */
8
- class AllowedAttributesTest extends PHPUnit_Framework_TestCase
9
  {
10
 
11
  /**
1
  <?php
2
 
3
  use \enshrined\svgSanitize\data\AllowedAttributes;
4
+ use PHPUnit\Framework\TestCase;
5
 
6
  /**
7
  * Class AllowedAttributesTest
8
  */
9
+ class AllowedAttributesTest extends TestCase
10
  {
11
 
12
  /**
lib/vendor/enshrined/svg-sanitize/tests/AllowedTagsTest.php CHANGED
@@ -1,11 +1,12 @@
1
  <?php
2
 
3
  use \enshrined\svgSanitize\data\AllowedTags;
 
4
 
5
  /**
6
  * Class AllowedTagsTest
7
  */
8
- class AllowedTagsTest extends PHPUnit_Framework_TestCase
9
  {
10
 
11
  /**
1
  <?php
2
 
3
  use \enshrined\svgSanitize\data\AllowedTags;
4
+ use PHPUnit\Framework\TestCase;
5
 
6
  /**
7
  * Class AllowedTagsTest
8
  */
9
+ class AllowedTagsTest extends TestCase
10
  {
11
 
12
  /**
lib/vendor/enshrined/svg-sanitize/tests/SanitizerTest.php CHANGED
@@ -3,11 +3,12 @@ require 'data/TestAllowedTags.php';
3
  require 'data/TestAllowedAttributes.php';
4
 
5
  use \enshrined\svgSanitize\Sanitizer;
 
6
 
7
  /**
8
  * Class SanitizerTest
9
  */
10
- class SanitizerTest extends PHPUnit_Framework_TestCase
11
  {
12
  /**
13
  * @var Sanitizer
@@ -178,4 +179,18 @@ class SanitizerTest extends PHPUnit_Framework_TestCase
178
 
179
  $this->assertXmlStringEqualsXmlString($expected, $cleanData);
180
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
181
  }
3
  require 'data/TestAllowedAttributes.php';
4
 
5
  use \enshrined\svgSanitize\Sanitizer;
6
+ use PHPUnit\Framework\TestCase;
7
 
8
  /**
9
  * Class SanitizerTest
10
  */
11
+ class SanitizerTest extends TestCase
12
  {
13
  /**
14
  * @var Sanitizer
179
 
180
  $this->assertXmlStringEqualsXmlString($expected, $cleanData);
181
  }
182
+
183
+ /**
184
+ * Test setXMLOptions and minifying works as expected
185
+ */
186
+ public function testMinifiedOptions()
187
+ {
188
+ $this->class->minify(true);
189
+ $this->class->removeXMLTag(true);
190
+ $this->class->setXMLOptions(0);
191
+
192
+ $input = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><title>chevron-double-down</title><path d="M4 11.73l.68-.73L12 17.82 19.32 11l.68.73-7.66 7.13a.5.5 0 0 1-.68 0z"/><path d="M4 5.73L4.68 5 12 11.82 19.32 5l.68.73-7.66 7.13a.5.5 0 0 1-.68 0z"/></svg>';
193
+ $output = $this->class->sanitize($input);
194
+ $this->assertEquals($input, $output);
195
+ }
196
  }
readme.txt CHANGED
@@ -4,7 +4,8 @@ Donate link: https://wpsvg.com/
4
  Tags: svg, sanitize, upload, sanitise, security, svg upload, image, vector, file, graphic, media, mime
5
  Requires at least: 4.0
6
  Tested up to: 4.9.1
7
- Stable tag: 1.6.1
 
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -37,8 +38,33 @@ SVG Sanitization is done through the following library: [https://github.com/dary
37
 
38
  Install through the WordPress directory or download, unzip and upload the files to your `/wp-content/plugins/` directory
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  == Changelog ==
41
 
 
 
 
42
  = 1.6.1 =
43
  * Images will now use the size chosen when inserted into the page rather than default to 2000px everytime.
44
 
4
  Tags: svg, sanitize, upload, sanitise, security, svg upload, image, vector, file, graphic, media, mime
5
  Requires at least: 4.0
6
  Tested up to: 4.9.1
7
+ Requires PHP: 5.6
8
+ Stable tag: 1.7.1
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
38
 
39
  Install through the WordPress directory or download, unzip and upload the files to your `/wp-content/plugins/` directory
40
 
41
+ == Frequently Asked Questions ==
42
+
43
+ = Can we change the allowed attributes and tags? =
44
+
45
+ Yes, this can be done using the `svg_allowed_attributes` and `svg_allowed_tags` filters.
46
+ They take one argument that must be returned. See below for examples:
47
+
48
+ add_filter( 'svg_allowed_attributes', function ( $attributes ) {
49
+
50
+ // Do what you want here...
51
+
52
+ return $attributes;
53
+ } );
54
+
55
+
56
+ add_filter( 'svg_allowed_tags', function ( $tags ) {
57
+
58
+ // Do what you want here...
59
+
60
+ return $tags;
61
+ } );
62
+
63
  == Changelog ==
64
 
65
+ = 1.7.1 =
66
+ * Updated underlying lib and added new filters for filtering allowed tags and attributes
67
+
68
  = 1.6.1 =
69
  * Images will now use the size chosen when inserted into the page rather than default to 2000px everytime.
70
 
safe-svg.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Safe SVG
4
  Plugin URI: https://wpsvg.com/
5
  Description: Allows SVG uploads into WordPress and sanitizes the SVG before saving it
6
- Version: 1.6.1
7
  Author: Daryll Doyle
8
  Author URI: http://enshrined.co.uk
9
  Text Domain: safe-svg
@@ -13,6 +13,8 @@ Domain Path: /languages
13
  defined( 'ABSPATH' ) or die( 'Really?' );
14
 
15
  require 'lib/vendor/autoload.php';
 
 
16
 
17
  if ( ! class_exists( 'safe_svg' ) ) {
18
 
@@ -130,6 +132,12 @@ if ( ! class_exists( 'safe_svg' ) ) {
130
  }
131
  }
132
 
 
 
 
 
 
 
133
  $clean = $this->sanitizer->sanitize( $dirty );
134
 
135
  if ( $clean === false ) {
3
  Plugin Name: Safe SVG
4
  Plugin URI: https://wpsvg.com/
5
  Description: Allows SVG uploads into WordPress and sanitizes the SVG before saving it
6
+ Version: 1.7.1
7
  Author: Daryll Doyle
8
  Author URI: http://enshrined.co.uk
9
  Text Domain: safe-svg
13
  defined( 'ABSPATH' ) or die( 'Really?' );
14
 
15
  require 'lib/vendor/autoload.php';
16
+ require 'includes/safe-svg-tags.php';
17
+ require 'includes/safe-svg-attributes.php';
18
 
19
  if ( ! class_exists( 'safe_svg' ) ) {
20
 
132
  }
133
  }
134
 
135
+ /**
136
+ * Load extra filters to allow devs to access the safe tags and attrs by themselves.
137
+ */
138
+ $this->sanitizer->setAllowedTags(new safe_svg_tags());
139
+ $this->sanitizer->setAllowedAttrs(new safe_svg_attributes());
140
+
141
  $clean = $this->sanitizer->sanitize( $dirty );
142
 
143
  if ( $clean === false ) {