Safe SVG - Version 1.5.0

Version Description

  • Library update
  • role, aria- and data- attributes are now whitelisted to improve accessibility
Download this release

Release Info

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

Code changes from version 1.4.5 to 1.5.0

lib/composer.lock CHANGED
@@ -9,16 +9,16 @@
9
  "packages": [
10
  {
11
  "name": "enshrined/svg-sanitize",
12
- "version": "0.6.0",
13
  "source": {
14
  "type": "git",
15
  "url": "https://github.com/darylldoyle/svg-sanitizer.git",
16
- "reference": "0c943fe5fe0acb30f4c80f3a4602c44498f95eff"
17
  },
18
  "dist": {
19
  "type": "zip",
20
- "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/0c943fe5fe0acb30f4c80f3a4602c44498f95eff",
21
- "reference": "0c943fe5fe0acb30f4c80f3a4602c44498f95eff",
22
  "shasum": ""
23
  },
24
  "require-dev": {
@@ -42,7 +42,7 @@
42
  }
43
  ],
44
  "description": "An SVG sanitizer for PHP",
45
- "time": "2017-06-11 23:08:25"
46
  }
47
  ],
48
  "packages-dev": [],
9
  "packages": [
10
  {
11
  "name": "enshrined/svg-sanitize",
12
+ "version": "0.7.0",
13
  "source": {
14
  "type": "git",
15
  "url": "https://github.com/darylldoyle/svg-sanitizer.git",
16
+ "reference": "0bdbbd15b9ca501c33c9373968922d055e7064db"
17
  },
18
  "dist": {
19
  "type": "zip",
20
+ "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/0bdbbd15b9ca501c33c9373968922d055e7064db",
21
+ "reference": "0bdbbd15b9ca501c33c9373968922d055e7064db",
22
  "shasum": ""
23
  },
24
  "require-dev": {
42
  }
43
  ],
44
  "description": "An SVG sanitizer for PHP",
45
+ "time": "2017-06-20 16:13:01"
46
  }
47
  ],
48
  "packages-dev": [],
lib/vendor/composer/installed.json CHANGED
@@ -1,24 +1,24 @@
1
  [
2
  {
3
  "name": "enshrined/svg-sanitize",
4
- "version": "0.6.0",
5
- "version_normalized": "0.6.0.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/darylldoyle/svg-sanitizer.git",
9
- "reference": "0c943fe5fe0acb30f4c80f3a4602c44498f95eff"
10
  },
11
  "dist": {
12
  "type": "zip",
13
- "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/0c943fe5fe0acb30f4c80f3a4602c44498f95eff",
14
- "reference": "0c943fe5fe0acb30f4c80f3a4602c44498f95eff",
15
  "shasum": ""
16
  },
17
  "require-dev": {
18
  "codeclimate/php-test-reporter": "^0.1.2",
19
  "phpunit/phpunit": "^4.7"
20
  },
21
- "time": "2017-06-11 23:08:25",
22
  "type": "library",
23
  "installation-source": "dist",
24
  "autoload": {
1
  [
2
  {
3
  "name": "enshrined/svg-sanitize",
4
+ "version": "0.7.0",
5
+ "version_normalized": "0.7.0.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/darylldoyle/svg-sanitizer.git",
9
+ "reference": "0bdbbd15b9ca501c33c9373968922d055e7064db"
10
  },
11
  "dist": {
12
  "type": "zip",
13
+ "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/0bdbbd15b9ca501c33c9373968922d055e7064db",
14
+ "reference": "0bdbbd15b9ca501c33c9373968922d055e7064db",
15
  "shasum": ""
16
  },
17
  "require-dev": {
18
  "codeclimate/php-test-reporter": "^0.1.2",
19
  "phpunit/phpunit": "^4.7"
20
  },
21
+ "time": "2017-06-20 16:13:01",
22
  "type": "library",
23
  "installation-source": "dist",
24
  "autoload": {
lib/vendor/enshrined/svg-sanitize/src/Sanitizer.php CHANGED
@@ -260,7 +260,7 @@ class Sanitizer
260
  $attrName = $element->attributes->item($x)->name;
261
 
262
  // Remove attribute if not in whitelist
263
- if (!in_array(strtolower($attrName), $this->allowedAttrs)) {
264
  $element->removeAttribute($attrName);
265
  }
266
 
@@ -324,4 +324,40 @@ class Sanitizer
324
  {
325
  $this->minifyXML = (bool) $shouldMinify;
326
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
327
  }
260
  $attrName = $element->attributes->item($x)->name;
261
 
262
  // Remove attribute if not in whitelist
263
+ if (!in_array(strtolower($attrName), $this->allowedAttrs) && !$this->isAriaAttribute(strtolower($attrName)) && !$this->isDataAttribute(strtolower($attrName))) {
264
  $element->removeAttribute($attrName);
265
  }
266
 
324
  {
325
  $this->minifyXML = (bool) $shouldMinify;
326
  }
327
+
328
+ /**
329
+ * Check to see if an attribure is an aria attribute or not
330
+ *
331
+ * @param $attributeName
332
+ *
333
+ * @return bool
334
+ */
335
+ protected function isAriaAttribute( $attributeName )
336
+ {
337
+ $position = strpos($attributeName, 'aria-');
338
+
339
+ if($position === 0) {
340
+ return true;
341
+ }
342
+
343
+ return false;
344
+ }
345
+
346
+ /**
347
+ * Check to see if an attribure is an data attribute or not
348
+ *
349
+ * @param $attributeName
350
+ *
351
+ * @return bool
352
+ */
353
+ protected function isDataAttribute( $attributeName )
354
+ {
355
+ $position = strpos($attributeName, 'data-');
356
+
357
+ if($position === 0) {
358
+ return true;
359
+ }
360
+
361
+ return false;
362
+ }
363
  }
lib/vendor/enshrined/svg-sanitize/src/data/AllowedAttributes.php CHANGED
@@ -21,66 +21,375 @@ class AllowedAttributes implements AttributeInterface
21
  {
22
  return array(
23
  // HTML
24
- 'accept','action','align','alt','autocomplete','background','bgcolor',
25
- 'border','cellpadding','cellspacing','checked','cite','class','clear','color',
26
- 'cols','colspan','coords','datetime','default','dir','disabled',
27
- 'download','enctype','face','for','headers','height','hidden','high','href',
28
- 'hreflang','id','ismap','label','lang','list','loop', 'low','max',
29
- 'maxlength','media','method','min','multiple','name','noshade','novalidate',
30
- 'nowrap','open','optimum','pattern','placeholder','poster','preload','pubdate',
31
- 'radiogroup','readonly','rel','required','rev','reversed','rows',
32
- 'rowspan','spellcheck','scope','selected','shape','size','span',
33
- 'srclang','start','src','step','style','summary','tabindex','title',
34
- 'type','usemap','valign','value','width','xmlns',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
  // SVG
37
- 'accent-height','accumulate','additivive','alignment-baseline',
38
- 'ascent','azimuth','baseline-shift','bias','clip','clip-path',
39
- 'clip-rule','color','color-interpolation','color-interpolation-filters',
40
- 'color-profile','color-rendering','cx','cy','d','dy','dy','direction',
41
- 'display','divisor','dur','elevation','end','fill','fill-opacity',
42
- 'fill-rule','filter','flood-color','flood-opacity','font-family',
43
- 'font-size','font-size-adjust','font-stretch','font-style','font-variant',
44
- 'font-weight','image-rendering','in','in2','k1','k2','k3','k4','kerning',
45
- 'letter-spacing','lighting-color','local','marker-end','marker-mid',
46
- 'marker-start','max','mask','mode','min','offset','operator','opacity',
47
- 'order','orient','overflow','paint-order','path','points','r','rx','ry','radius',
48
- 'restart','scale','seed','shape-rendering','stop-color','stop-opacity',
49
- 'stroke-dasharray','stroke-dashoffset','stroke-linecap','stroke-linejoin',
50
- 'stroke-miterlimit','stroke-opacity','stroke','stroke-width','transform',
51
- 'text-anchor','text-decoration','text-rendering','u1','u2','viewbox',
52
- 'visibility','word-spacing','wrap','writing-mode','x','x1','x2','y',
53
- 'y1','y2','z',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
 
55
  // MathML
56
- 'accent','accentunder','bevelled','close','columnsalign','columnlines',
57
- 'columnspan','denomalign','depth','display','displaystyle','fence',
58
- 'frame','largeop','length','linethickness','lspace','lquote',
59
- 'mathbackground','mathcolor','mathsize','mathvariant','maxsize',
60
- 'minsize','movablelimits','notation','numalign','open','rowalign',
61
- 'rowlines','rowspacing','rowspan','rspace','rquote','scriptlevel',
62
- 'scriptminsize','scriptsizemultiplier','selection','separator',
63
- 'separators','stretchy','subscriptshift','supscriptshift','symmetric',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  'voffset',
65
 
66
  // XML
67
- 'xlink:href','xml:id','xlink:title','xml:space',
 
 
 
 
68
 
69
 
70
  // Camel Case
71
- "allowreorder", "attributename", "attributetype", "autoreverse", "basefrequency",
72
- "baseprofile", "calcmode", "clippathunits", "contentscripttype", "contentstyletype",
73
- "diffuseconstant", "edgemode", "externalresourcesrequired", "filterres",
74
- "filterunits", "glyphref", "gradienttransform", "gradientunits", "kernelmatrix",
75
- "kernelunitlength", "keypoints", "keysplines", "keytimes", "lengthadjust",
76
- "limitingconeangle", "markerheight", "markerunits", "markerwidth", "maskcontentunits",
77
- "maskunits", "numoctaves", "pathlength", "patterncontentunits", "patterntransform",
78
- "patternunits", "pointsatx", "pointsaty", "pointsatz", "preservealpha",
79
- "preserveaspectratio", "primitiveunits", "refx", "refy", "repeatcount",
80
- "repeatdur", "requiredextensions", "requiredfeatures", "specularconstant",
81
- "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles",
82
- "surfacescale", "systemlanguage", "tablevalues", "targetx", "targety", "textlength",
83
- "viewbox", "viewtarget", "xchannelselector", "ychannelselector", "zoomandpan",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  );
85
  }
86
  }
21
  {
22
  return array(
23
  // HTML
24
+ 'accept',
25
+ 'action',
26
+ 'align',
27
+ 'alt',
28
+ 'autocomplete',
29
+ 'background',
30
+ 'bgcolor',
31
+ 'border',
32
+ 'cellpadding',
33
+ 'cellspacing',
34
+ 'checked',
35
+ 'cite',
36
+ 'class',
37
+ 'clear',
38
+ 'color',
39
+ 'cols',
40
+ 'colspan',
41
+ 'coords',
42
+ 'datetime',
43
+ 'default',
44
+ 'dir',
45
+ 'disabled',
46
+ 'download',
47
+ 'enctype',
48
+ 'face',
49
+ 'for',
50
+ 'headers',
51
+ 'height',
52
+ 'hidden',
53
+ 'high',
54
+ 'href',
55
+ 'hreflang',
56
+ 'id',
57
+ 'ismap',
58
+ 'label',
59
+ 'lang',
60
+ 'list',
61
+ 'loop',
62
+ 'low',
63
+ 'max',
64
+ 'maxlength',
65
+ 'media',
66
+ 'method',
67
+ 'min',
68
+ 'multiple',
69
+ 'name',
70
+ 'noshade',
71
+ 'novalidate',
72
+ 'nowrap',
73
+ 'open',
74
+ 'optimum',
75
+ 'pattern',
76
+ 'placeholder',
77
+ 'poster',
78
+ 'preload',
79
+ 'pubdate',
80
+ 'radiogroup',
81
+ 'readonly',
82
+ 'rel',
83
+ 'required',
84
+ 'rev',
85
+ 'reversed',
86
+ 'role',
87
+ 'rows',
88
+ 'rowspan',
89
+ 'spellcheck',
90
+ 'scope',
91
+ 'selected',
92
+ 'shape',
93
+ 'size',
94
+ 'span',
95
+ 'srclang',
96
+ 'start',
97
+ 'src',
98
+ 'step',
99
+ 'style',
100
+ 'summary',
101
+ 'tabindex',
102
+ 'title',
103
+ 'type',
104
+ 'usemap',
105
+ 'valign',
106
+ 'value',
107
+ 'width',
108
+ 'xmlns',
109
 
110
  // SVG
111
+ 'accent-height',
112
+ 'accumulate',
113
+ 'additivive',
114
+ 'alignment-baseline',
115
+ 'ascent',
116
+ 'attributename',
117
+ 'attributetype',
118
+ 'azimuth',
119
+ 'basefrequency',
120
+ 'baseline-shift',
121
+ 'begin',
122
+ 'bias',
123
+ 'by',
124
+ 'clip',
125
+ 'clip-path',
126
+ 'clip-rule',
127
+ 'color',
128
+ 'color-interpolation',
129
+ 'color-interpolation-filters',
130
+ 'color-profile',
131
+ 'color-rendering',
132
+ 'cx',
133
+ 'cy',
134
+ 'd',
135
+ 'dx',
136
+ 'dy',
137
+ 'diffuseconstant',
138
+ 'direction',
139
+ 'display',
140
+ 'divisor',
141
+ 'dur',
142
+ 'edgemode',
143
+ 'elevation',
144
+ 'end',
145
+ 'fill',
146
+ 'fill-opacity',
147
+ 'fill-rule',
148
+ 'filter',
149
+ 'flood-color',
150
+ 'flood-opacity',
151
+ 'font-family',
152
+ 'font-size',
153
+ 'font-size-adjust',
154
+ 'font-stretch',
155
+ 'font-style',
156
+ 'font-variant',
157
+ 'font-weight',
158
+ 'fx',
159
+ 'fy',
160
+ 'g1',
161
+ 'g2',
162
+ 'glyph-name',
163
+ 'glyphref',
164
+ 'gradientunits',
165
+ 'gradienttransform',
166
+ 'image-rendering',
167
+ 'in',
168
+ 'in2',
169
+ 'k',
170
+ 'k1',
171
+ 'k2',
172
+ 'k3',
173
+ 'k4',
174
+ 'kerning',
175
+ 'keypoints',
176
+ 'keysplines',
177
+ 'keytimes',
178
+ 'lengthadjust',
179
+ 'letter-spacing',
180
+ 'kernelmatrix',
181
+ 'kernelunitlength',
182
+ 'lighting-color',
183
+ 'local',
184
+ 'marker-end',
185
+ 'marker-mid',
186
+ 'marker-start',
187
+ 'markerheight',
188
+ 'markerunits',
189
+ 'markerwidth',
190
+ 'maskcontentunits',
191
+ 'maskunits',
192
+ 'max',
193
+ 'mask',
194
+ 'mode',
195
+ 'min',
196
+ 'numoctaves',
197
+ 'offset',
198
+ 'operator',
199
+ 'opacity',
200
+ 'order',
201
+ 'orient',
202
+ 'orientation',
203
+ 'origin',
204
+ 'overflow',
205
+ 'paint-order',
206
+ 'path',
207
+ 'pathlength',
208
+ 'patterncontentunits',
209
+ 'patterntransform',
210
+ 'patternunits',
211
+ 'points',
212
+ 'preservealpha',
213
+ 'r',
214
+ 'rx',
215
+ 'ry',
216
+ 'radius',
217
+ 'refx',
218
+ 'refy',
219
+ 'repeatcount',
220
+ 'repeatdur',
221
+ 'restart',
222
+ 'result',
223
+ 'rotate',
224
+ 'scale',
225
+ 'seed',
226
+ 'shape-rendering',
227
+ 'specularconstant',
228
+ 'specularexponent',
229
+ 'spreadmethod',
230
+ 'stddeviation',
231
+ 'stitchtiles',
232
+ 'stop-color',
233
+ 'stop-opacity',
234
+ 'stroke-dasharray',
235
+ 'stroke-dashoffset',
236
+ 'stroke-linecap',
237
+ 'stroke-linejoin',
238
+ 'stroke-miterlimit',
239
+ 'stroke-opacity',
240
+ 'stroke',
241
+ 'stroke-width',
242
+ 'surfacescale',
243
+ 'targetx',
244
+ 'targety',
245
+ 'transform',
246
+ 'text-anchor',
247
+ 'text-decoration',
248
+ 'text-rendering',
249
+ 'textlength',
250
+ 'u1',
251
+ 'u2',
252
+ 'unicode',
253
+ 'values',
254
+ 'viewbox',
255
+ 'visibility',
256
+ 'vert-adv-y',
257
+ 'vert-origin-x',
258
+ 'vert-origin-y',
259
+ 'word-spacing',
260
+ 'wrap',
261
+ 'writing-mode',
262
+ 'xchannelselector',
263
+ 'ychannelselector',
264
+ 'x',
265
+ 'x1',
266
+ 'x2',
267
+ 'y',
268
+ 'y1',
269
+ 'y2',
270
+ 'z',
271
+ 'zoomandpan',
272
 
273
  // MathML
274
+ 'accent',
275
+ 'accentunder',
276
+ 'bevelled',
277
+ 'close',
278
+ 'columnsalign',
279
+ 'columnlines',
280
+ 'columnspan',
281
+ 'denomalign',
282
+ 'depth',
283
+ 'display',
284
+ 'displaystyle',
285
+ 'fence',
286
+ 'frame',
287
+ 'largeop',
288
+ 'length',
289
+ 'linethickness',
290
+ 'lspace',
291
+ 'lquote',
292
+ 'mathbackground',
293
+ 'mathcolor',
294
+ 'mathsize',
295
+ 'mathvariant',
296
+ 'maxsize',
297
+ 'minsize',
298
+ 'movablelimits',
299
+ 'notation',
300
+ 'numalign',
301
+ 'open',
302
+ 'rowalign',
303
+ 'rowlines',
304
+ 'rowspacing',
305
+ 'rowspan',
306
+ 'rspace',
307
+ 'rquote',
308
+ 'scriptlevel',
309
+ 'scriptminsize',
310
+ 'scriptsizemultiplier',
311
+ 'selection',
312
+ 'separator',
313
+ 'separators',
314
+ 'stretchy',
315
+ 'subscriptshift',
316
+ 'supscriptshift',
317
+ 'symmetric',
318
  'voffset',
319
 
320
  // XML
321
+ 'xlink:href',
322
+ 'xml:id',
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
  }
lib/vendor/enshrined/svg-sanitize/tests/SanitizerTest.php CHANGED
@@ -148,4 +148,19 @@ class SanitizerTest extends PHPUnit_Framework_TestCase
148
 
149
  $this->assertXmlStringEqualsXmlString($expected, $cleanData);
150
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
151
  }
148
 
149
  $this->assertXmlStringEqualsXmlString($expected, $cleanData);
150
  }
151
+
152
+ /**
153
+ * Test that ARIA and Data Attributes are allowed
154
+ */
155
+ public function testThatAriaAndDataAttributesAreAllowed()
156
+ {
157
+ $initialData = file_get_contents('tests/data/ariaDataTest.svg');
158
+ $expected = file_get_contents('tests/data/ariaDataClean.svg');
159
+
160
+ $this->class->minify(false);
161
+ $cleanData = $this->class->sanitize($initialData);
162
+ $this->class->minify(false);
163
+
164
+ $this->assertXmlStringEqualsXmlString($expected, $cleanData);
165
+ }
166
  }
lib/vendor/enshrined/svg-sanitize/tests/data/ariaDataClean.svg ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg id="cat" viewBox="0 0 720 800" aria-labelledby="catTitle catDesc" role="img">
2
+ <title id="catTitle">Pixels, My Super-friendly Cat</title>
3
+ <desc id="catDesc">An illustrated gray cat with bright green blinking eyes.</desc>
4
+ <path id="tail" data-name="tail" class="cls-1" d="M545.9,695.9c8,28.2,23.2,42.3,27.2,46.9,21.4,24.1,41.5,40.2,81.1,42.9s65.4-14.2,60.8-26.8-23.1-9.1-51.3-8.3c-35.2.9-66.6-31.3-74.8-63.9s-7.9-63.8-36.8-85.5c-44.1-33-135.6-7.1-159.8-3.4s-48.4,52.5-9.6,45.1,91.4-23.1,123.2-12.7C537.8,640.4,537.9,667.7,545.9,695.9Z" transform="translate(-9.7 -9.3)"/>
5
+ <g id="body">
6
+ <path id="bg" class="cls-2" d="M447.9,502.1c2.1,151.7-108.3,167-216.5,167S9.7,663.8,9.7,510.9,85,242.9,231.3,241,445.8,350.4,447.9,502.1h0Z" transform="translate(-9.7 -9.3)"/>
7
+ <g id="leftleg">
8
+ <path id="leg" class="cls-1" d="M195.6,671.5c-34.2-7.7-40.6-95.6-53.3-191-12-90-90.1-177.2-55.1-177.2s145.7,12,151.4,87.7S261.5,686.5,195.6,671.5Z" transform="translate(-9.7 -9.3)"/>
9
+ <path id="foot" class="cls-3" d="M172.2,688.1c31.6,2.1,56.6-8.7,59.8-32.4s-22.1-49.5-27.3-24.3c25-16.4-39.1-29.4-27.6-3.9,14-24.9-49.6-19.2-31.9-.1-6.5-27.2-35.6,8.2-30.1,29.3C121.5,681.8,140.5,686,172.2,688.1Z" transform="translate(-9.7 -9.3)"/>
10
+ </g>
11
+ <g id="rightleg">
12
+ <path id="leg-2" data-name="leg" class="cls-1" d="M260.4,670.4c42.4-9.2,48.7-87.7,53.9-185.2,5.1-96,98.2-176.1,63.1-176.1s-164,15.7-164,111.8C213.4,420.9,199.1,683.7,260.4,670.4Z" transform="translate(-9.7 -9.3)"/>
13
+ <path id="foot-2" data-name="foot" class="cls-3" d="M279.4,689.8c-31.7,2-56.6-9-59.6-32.6s22.3-49.4,27.4-24.1c-24.9-16.5,39.2-29.2,27.6-3.8-13.9-25,49.7-18.9,31.9,0,6.6-27.1,35.6,8.4,30,29.4-6.7,25-25.7,29.1-57.3,31.1h0Z" transform="translate(-9.7 -9.3)"/>
14
+ </g>
15
+ <path id="tuft" aria-haspopup="false" class="cls-3" d="M80,331.2c3.5,9.5,1.2,28.9,4.3,32.7s31.5-30,43-20.6c10.7,8.7,1.7,55.9,12.9,64.5,10.1,7.7,32.1-50.6,52.5-38.7,24.9,14.6,34.1,49.9,49,49.9,18.3,0,7.5-49.5,24.1-53.3s46.1,52.6,60.2,45.6c4.8-2.4,3-50.4,12-57.6,8.7-6.9,30.5,22.4,33.5,18.9,3.7-4.1.1-23.1,8.6-36.1,3.4-5.2,18.9-2.6,28.8-.4a3.46,3.46,0,0,0,3.7-5.2c-19.6-30.8-100-147.4-184.2-147.4-93.3,0-150.9,86.8-178.1,141.6a3.43,3.43,0,0,0,3.6,4.9C63,328.4,78.4,326.6,80,331.2Z" transform="translate(-9.7 -9.3)"/>
16
+ </g>
17
+ <g id="head">
18
+ <path id="collar" class="cls-4" d="M367,231.1c5.7,36.1-4.7,71-97.8,85.6s-184-18.5-189.7-54.5,16.7-17.3,109.8-31.9,172-35.3,177.7.8" transform="translate(-9.7 -9.3)"/>
19
+ <g id="bg-2" data-name="bg">
20
+ <path class="cls-1" d="M362.5,229.5C339.7,279,273.1,299.4,225,300c-60.6.7-134.7-29.5-153.5-86.4C45.6,135.4,132.2,32.6,225,35.8c96.1,3.4,171.7,119.4,137.5,193.7" transform="translate(-9.7 -9.3)"/>
21
+ <path class="cls-5" d="M362.5,229.5C339.7,279,273.1,299.4,225,300c-60.6.7-134.7-29.5-153.5-86.4C45.6,135.4,132.2,32.6,225,35.8,321.1,39.2,396.7,155.2,362.5,229.5Z" transform="translate(-9.7 -9.3)"/>
22
+ </g>
23
+ <g id="leftear" aria-label="Left Ear">
24
+ <path id="outer" class="cls-1" d="M92.7,117c-2.6,4.7-14.7-16.1-16.5-45-3.3-27.7,3.7-63.4,5.4-62C80.7,8,117,10,143,20c27.5,8.9,44.7,25.7,39.5,27.1-30,23.4-59.9,46.6-89.8,69.9" transform="translate(-9.7 -9.3)"/>
25
+ <path id="inner" class="cls-6" d="M105.8,106.9C103.9,110.3,95.3,95.5,94,75c-2.3-19.6,2.6-44.9,3.8-44-0.6-1.4,25.1,0,43.6,7.1,19.5,6.3,31.7,18.2,28,19.2q-31.8,24.9-63.6,49.6" transform="translate(-9.7 -9.3)"/>
26
+ </g>
27
+ <path id="mask" class="cls-2" d="M338.4,142.5c-2.2,3.3,19.4,19.6,17.2,23.2s-24.3-7.8-25.8-5.2c-1.9,3.3,33.4,24.1,31,29.2-2.3,4.9-34-14.4-84.3-18.1a141.76,141.76,0,0,1-16.4-2.1,91.21,91.21,0,0,1-13.7-3.9c-19.8-6.9-27.7-10.6-32.7-12-19.3-5.7-26.8,11.3-68.1,22.4-18.8,5-37.9,9.7-54.4,0-2.1-1.3-13.6-8.3-16.7-21.1-0.9-3.6-2.8-15.2,10.5-34C146.3,34.3,216.5,34,217.3,34a131.52,131.52,0,0,1,58.4,14.3c-7.6,4.9-11.2,9.5-9,10.1,21.5,16.5,43.1,33,64.6,49.5,0.9,1.7,3.6-1.3,6.3-7.3,19.3,30.5,22.1,41.5,18.9,44.3-3.8,3.6-16.4-4.8-18.1-2.4" transform="translate(-9.7 -9.3)"/>
28
+ <g id="rightear">
29
+ <path id="outer-2" data-name="outer" class="cls-2" d="M344.9,119.9c2.6,4.7,14.7-16.1,16.5-45,3.3-27.7-3.7-63.4-5.4-62,0.9-2-35.4,0-61.4,10-27.5,8.9-44.7,25.7-39.5,27.1q44.85,35,89.8,69.9" transform="translate(-9.7 -9.3)"/>
30
+ <path id="inner-2" data-name="inner" class="cls-6" d="M343.5,76.2a77.83,77.83,0,0,1-5.6,24.6c-15.1-20.3-36-39.8-61-52.4a82,82,0,0,1,19.2-9.1c18.5-7.1,44.2-8.5,43.6-7.1,1.2-.9,6.1,24.4,3.8,44" transform="translate(-9.7 -9.3)"/>
31
+ </g>
32
+ <g id="nose">
33
+ <path class="cls-7" d="M205.1,201.8l-10.6-18.3a9,9,0,0,1,7.7-13.4h21.2a8.9,8.9,0,0,1,7.7,13.4l-10.6,18.3a8.91,8.91,0,0,1-15.4,0" transform="translate(-9.7 -9.3)"/>
34
+ <path class="cls-6" d="M194.2,175.1a9,9,0,0,0,.3,8.4l10.6,18.3a8.92,8.92,0,0,0,15.5,0l8.7-15c-5.8-6.2-19.3-10.1-35.1-11.7" transform="translate(-9.7 -9.3)"/>
35
+ </g>
36
+ <g id="mouth">
37
+ <path class="cls-8" d="M166.7,260.4c-24.4,0-44.1-25-44.1-55.9m88.2,0c0,30.9-19.7,55.9-44.1,55.9m89.9,0c24.4,0,44.1-25,44.1-55.9m-88.2,0c0,30.9,19.7,55.9,44.1,55.9" transform="translate(-9.7 -9.3)"/>
38
+ <path class="cls-9" d="M300.7,204.5a65.16,65.16,0,0,1-8,32" transform="translate(-9.7 -9.3)"/>
39
+ </g>
40
+ <path id="wiskers" class="cls-10" d="M188.7,198.4c0-12.9-72.7-23.3-162.6-23.3m162.6,36.2c0-7.1-65.8-12.9-147.1-12.9m196,1.3c1.4-12.8,74.8-15.6,164.1-6.2m-165.4,19c0.7-7.1,66.8-5.9,147.6,2.6" transform="translate(-9.7 -9.3)"/>
41
+ <g id="lefteye" class="eye">
42
+ <path id="iris" class="cls-4" d="M188.6,141.5s-18.3,12.3-35.8,7.9-30-15.2-27.7-24c1.5-6,9.6-9.6,20.2-9.8a59.5,59.5,0,0,1,15.7,1.9,35.75,35.75,0,0,1,12.5,6.2,60,60,0,0,1,15.1,17.8" transform="translate(-9.7 -9.3)"/>
43
+ <path class="cls-11" d="M125.1,123.6c1.5-6,9.6-9.6,20.1-9.8a59.5,59.5,0,0,1,15.7,1.9,35.75,35.75,0,0,1,12.5,6.2,59.47,59.47,0,0,1,15.2,17.8" transform="translate(-9.7 -9.3)"/>
44
+ <path id="pupil" class="cls-12" d="M172.9,124.3c-2.3,9.2-10.7,15-18.7,13s-12.5-11.1-10.2-20.4a22.39,22.39,0,0,1,1.1-3.1,59.5,59.5,0,0,1,15.7,1.9,35.75,35.75,0,0,1,12.5,6.2,8.6,8.6,0,0,1-.4,2.4" transform="translate(-9.7 -9.3)"/>
45
+ <path id="eyelash" class="cls-13" d="M124.9,121.5c-7.6,2.6-17.1-4.7-21.1-16.3m33.6,9.5c-7.5,2.9-17.3-4-21.7-15.5m36.7,14.6c-8.1-.1-14.5-10.2-14.3-22.6" transform="translate(-9.7 -9.3)"/>
46
+ <path id="reflection" class="cls-14" d="M156.8,122c0,3.6-2.6,6.4-5.8,6.4s-5.8-2.9-5.8-6.4,2.6-6.4,5.8-6.4,5.8,2.9,5.8,6.4" transform="translate(-9.7 -9.3)"/>
47
+ </g>
48
+ <g id="righteye" class="eye">
49
+ <path id="iris-2" data-name="iris" class="cls-4" d="M241.4,143.6s18.5,11.9,36,7.1,29.6-15.8,27.2-24.6c-1.7-6-9.8-9.4-20.3-9.4a59.21,59.21,0,0,0-15.6,2.2,37.44,37.44,0,0,0-12.4,6.4,60.14,60.14,0,0,0-14.9,18.3" transform="translate(-9.7 -9.3)"/>
50
+ <path id="lid" class="cls-11" d="M304.5,124.4c-1.7-6-9.8-9.4-20.3-9.4a59.21,59.21,0,0,0-15.6,2.2,37.44,37.44,0,0,0-12.4,6.4,61.21,61.21,0,0,0-14.9,18.1" transform="translate(-9.7 -9.3)"/>
51
+ <path id="pupil-2" data-name="pupil" class="cls-12" d="M256.7,126.1c2.5,9.2,11,14.8,18.9,12.6s12.3-11.4,9.8-20.6a16.59,16.59,0,0,0-1.2-3.1,59.21,59.21,0,0,0-15.6,2.2,37.44,37.44,0,0,0-12.4,6.4,9.23,9.23,0,0,0,.5,2.5" transform="translate(-9.7 -9.3)"/>
52
+ <path id="eyelash-2" data-name="eyelash" class="cls-13" d="M302.9,122.3c7.7,2.5,17-5,20.8-16.8M292,115.7c7.6,2.8,17.2-4.4,21.4-16M277,115.1c8.1-.3,14.3-10.5,13.9-22.8" transform="translate(-9.7 -9.3)"/>
53
+ <path id="reflection-2" data-name="reflection" class="cls-14" d="M271.1,127.1c0,3.6-2.6,6.5-5.8,6.5s-5.8-2.9-5.8-6.5,2.6-6.4,5.8-6.4,5.8,2.9,5.8,6.4" transform="translate(-9.7 -9.3)"/>
54
+ </g>
55
+ </g>
56
+ </svg>
lib/vendor/enshrined/svg-sanitize/tests/data/ariaDataTest.svg ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg version="1" id="cat" viewBox="0 0 720 800" aria-labelledby="catTitle catDesc" role="img">
2
+ <title id="catTitle" arial-dontallow="nope">Pixels, My Super-friendly Cat</title>
3
+ <desc id="catDesc">An illustrated gray cat with bright green blinking eyes.</desc>
4
+ <path id="tail" data-name="tail" class="cls-1" d="M545.9,695.9c8,28.2,23.2,42.3,27.2,46.9,21.4,24.1,41.5,40.2,81.1,42.9s65.4-14.2,60.8-26.8-23.1-9.1-51.3-8.3c-35.2.9-66.6-31.3-74.8-63.9s-7.9-63.8-36.8-85.5c-44.1-33-135.6-7.1-159.8-3.4s-48.4,52.5-9.6,45.1,91.4-23.1,123.2-12.7C537.8,640.4,537.9,667.7,545.9,695.9Z" transform="translate(-9.7 -9.3)"/>
5
+ <g id="body">
6
+ <path id="bg" class="cls-2" d="M447.9,502.1c2.1,151.7-108.3,167-216.5,167S9.7,663.8,9.7,510.9,85,242.9,231.3,241,445.8,350.4,447.9,502.1h0Z" transform="translate(-9.7 -9.3)"/>
7
+ <g id="leftleg" datas-dontallow="nope">
8
+ <path id="leg" class="cls-1" d="M195.6,671.5c-34.2-7.7-40.6-95.6-53.3-191-12-90-90.1-177.2-55.1-177.2s145.7,12,151.4,87.7S261.5,686.5,195.6,671.5Z" transform="translate(-9.7 -9.3)"/>
9
+ <path id="foot" class="cls-3" d="M172.2,688.1c31.6,2.1,56.6-8.7,59.8-32.4s-22.1-49.5-27.3-24.3c25-16.4-39.1-29.4-27.6-3.9,14-24.9-49.6-19.2-31.9-.1-6.5-27.2-35.6,8.2-30.1,29.3C121.5,681.8,140.5,686,172.2,688.1Z" transform="translate(-9.7 -9.3)"/>
10
+ </g>
11
+ <g id="rightleg">
12
+ <path id="leg-2" data-name="leg" class="cls-1" d="M260.4,670.4c42.4-9.2,48.7-87.7,53.9-185.2,5.1-96,98.2-176.1,63.1-176.1s-164,15.7-164,111.8C213.4,420.9,199.1,683.7,260.4,670.4Z" transform="translate(-9.7 -9.3)"/>
13
+ <path id="foot-2" data-name="foot" class="cls-3" d="M279.4,689.8c-31.7,2-56.6-9-59.6-32.6s22.3-49.4,27.4-24.1c-24.9-16.5,39.2-29.2,27.6-3.8-13.9-25,49.7-18.9,31.9,0,6.6-27.1,35.6,8.4,30,29.4-6.7,25-25.7,29.1-57.3,31.1h0Z" transform="translate(-9.7 -9.3)"/>
14
+ </g>
15
+ <path id="tuft" aria-haspopup="false" class="cls-3" d="M80,331.2c3.5,9.5,1.2,28.9,4.3,32.7s31.5-30,43-20.6c10.7,8.7,1.7,55.9,12.9,64.5,10.1,7.7,32.1-50.6,52.5-38.7,24.9,14.6,34.1,49.9,49,49.9,18.3,0,7.5-49.5,24.1-53.3s46.1,52.6,60.2,45.6c4.8-2.4,3-50.4,12-57.6,8.7-6.9,30.5,22.4,33.5,18.9,3.7-4.1.1-23.1,8.6-36.1,3.4-5.2,18.9-2.6,28.8-.4a3.46,3.46,0,0,0,3.7-5.2c-19.6-30.8-100-147.4-184.2-147.4-93.3,0-150.9,86.8-178.1,141.6a3.43,3.43,0,0,0,3.6,4.9C63,328.4,78.4,326.6,80,331.2Z" transform="translate(-9.7 -9.3)"/>
16
+ </g>
17
+ <g id="head">
18
+ <path id="collar" class="cls-4" d="M367,231.1c5.7,36.1-4.7,71-97.8,85.6s-184-18.5-189.7-54.5,16.7-17.3,109.8-31.9,172-35.3,177.7.8" transform="translate(-9.7 -9.3)"/>
19
+ <g id="bg-2" data-name="bg">
20
+ <path class="cls-1" d="M362.5,229.5C339.7,279,273.1,299.4,225,300c-60.6.7-134.7-29.5-153.5-86.4C45.6,135.4,132.2,32.6,225,35.8c96.1,3.4,171.7,119.4,137.5,193.7" transform="translate(-9.7 -9.3)"/>
21
+ <path class="cls-5" d="M362.5,229.5C339.7,279,273.1,299.4,225,300c-60.6.7-134.7-29.5-153.5-86.4C45.6,135.4,132.2,32.6,225,35.8,321.1,39.2,396.7,155.2,362.5,229.5Z" transform="translate(-9.7 -9.3)"/>
22
+ </g>
23
+ <g id="leftear" aria-label="Left Ear">
24
+ <path id="outer" class="cls-1" d="M92.7,117c-2.6,4.7-14.7-16.1-16.5-45-3.3-27.7,3.7-63.4,5.4-62C80.7,8,117,10,143,20c27.5,8.9,44.7,25.7,39.5,27.1-30,23.4-59.9,46.6-89.8,69.9" transform="translate(-9.7 -9.3)"/>
25
+ <path id="inner" class="cls-6" d="M105.8,106.9C103.9,110.3,95.3,95.5,94,75c-2.3-19.6,2.6-44.9,3.8-44-0.6-1.4,25.1,0,43.6,7.1,19.5,6.3,31.7,18.2,28,19.2q-31.8,24.9-63.6,49.6" transform="translate(-9.7 -9.3)"/>
26
+ </g>
27
+ <path id="mask" class="cls-2" d="M338.4,142.5c-2.2,3.3,19.4,19.6,17.2,23.2s-24.3-7.8-25.8-5.2c-1.9,3.3,33.4,24.1,31,29.2-2.3,4.9-34-14.4-84.3-18.1a141.76,141.76,0,0,1-16.4-2.1,91.21,91.21,0,0,1-13.7-3.9c-19.8-6.9-27.7-10.6-32.7-12-19.3-5.7-26.8,11.3-68.1,22.4-18.8,5-37.9,9.7-54.4,0-2.1-1.3-13.6-8.3-16.7-21.1-0.9-3.6-2.8-15.2,10.5-34C146.3,34.3,216.5,34,217.3,34a131.52,131.52,0,0,1,58.4,14.3c-7.6,4.9-11.2,9.5-9,10.1,21.5,16.5,43.1,33,64.6,49.5,0.9,1.7,3.6-1.3,6.3-7.3,19.3,30.5,22.1,41.5,18.9,44.3-3.8,3.6-16.4-4.8-18.1-2.4" transform="translate(-9.7 -9.3)"/>
28
+ <g id="rightear">
29
+ <path id="outer-2" data-name="outer" class="cls-2" d="M344.9,119.9c2.6,4.7,14.7-16.1,16.5-45,3.3-27.7-3.7-63.4-5.4-62,0.9-2-35.4,0-61.4,10-27.5,8.9-44.7,25.7-39.5,27.1q44.85,35,89.8,69.9" transform="translate(-9.7 -9.3)"/>
30
+ <path id="inner-2" data-name="inner" class="cls-6" d="M343.5,76.2a77.83,77.83,0,0,1-5.6,24.6c-15.1-20.3-36-39.8-61-52.4a82,82,0,0,1,19.2-9.1c18.5-7.1,44.2-8.5,43.6-7.1,1.2-.9,6.1,24.4,3.8,44" transform="translate(-9.7 -9.3)"/>
31
+ </g>
32
+ <g id="nose">
33
+ <path class="cls-7" d="M205.1,201.8l-10.6-18.3a9,9,0,0,1,7.7-13.4h21.2a8.9,8.9,0,0,1,7.7,13.4l-10.6,18.3a8.91,8.91,0,0,1-15.4,0" transform="translate(-9.7 -9.3)"/>
34
+ <path class="cls-6" d="M194.2,175.1a9,9,0,0,0,.3,8.4l10.6,18.3a8.92,8.92,0,0,0,15.5,0l8.7-15c-5.8-6.2-19.3-10.1-35.1-11.7" transform="translate(-9.7 -9.3)"/>
35
+ </g>
36
+ <g id="mouth">
37
+ <path class="cls-8" d="M166.7,260.4c-24.4,0-44.1-25-44.1-55.9m88.2,0c0,30.9-19.7,55.9-44.1,55.9m89.9,0c24.4,0,44.1-25,44.1-55.9m-88.2,0c0,30.9,19.7,55.9,44.1,55.9" transform="translate(-9.7 -9.3)"/>
38
+ <path class="cls-9" d="M300.7,204.5a65.16,65.16,0,0,1-8,32" transform="translate(-9.7 -9.3)"/>
39
+ </g>
40
+ <path id="wiskers" class="cls-10" d="M188.7,198.4c0-12.9-72.7-23.3-162.6-23.3m162.6,36.2c0-7.1-65.8-12.9-147.1-12.9m196,1.3c1.4-12.8,74.8-15.6,164.1-6.2m-165.4,19c0.7-7.1,66.8-5.9,147.6,2.6" transform="translate(-9.7 -9.3)"/>
41
+ <g id="lefteye" class="eye">
42
+ <path id="iris" class="cls-4" d="M188.6,141.5s-18.3,12.3-35.8,7.9-30-15.2-27.7-24c1.5-6,9.6-9.6,20.2-9.8a59.5,59.5,0,0,1,15.7,1.9,35.75,35.75,0,0,1,12.5,6.2,60,60,0,0,1,15.1,17.8" transform="translate(-9.7 -9.3)"/>
43
+ <path class="cls-11" d="M125.1,123.6c1.5-6,9.6-9.6,20.1-9.8a59.5,59.5,0,0,1,15.7,1.9,35.75,35.75,0,0,1,12.5,6.2,59.47,59.47,0,0,1,15.2,17.8" transform="translate(-9.7 -9.3)"/>
44
+ <path id="pupil" class="cls-12" d="M172.9,124.3c-2.3,9.2-10.7,15-18.7,13s-12.5-11.1-10.2-20.4a22.39,22.39,0,0,1,1.1-3.1,59.5,59.5,0,0,1,15.7,1.9,35.75,35.75,0,0,1,12.5,6.2,8.6,8.6,0,0,1-.4,2.4" transform="translate(-9.7 -9.3)"/>
45
+ <path id="eyelash" class="cls-13" d="M124.9,121.5c-7.6,2.6-17.1-4.7-21.1-16.3m33.6,9.5c-7.5,2.9-17.3-4-21.7-15.5m36.7,14.6c-8.1-.1-14.5-10.2-14.3-22.6" transform="translate(-9.7 -9.3)"/>
46
+ <path id="reflection" class="cls-14" d="M156.8,122c0,3.6-2.6,6.4-5.8,6.4s-5.8-2.9-5.8-6.4,2.6-6.4,5.8-6.4,5.8,2.9,5.8,6.4" transform="translate(-9.7 -9.3)"/>
47
+ </g>
48
+ <g id="righteye" class="eye">
49
+ <path id="iris-2" data-name="iris" class="cls-4" d="M241.4,143.6s18.5,11.9,36,7.1,29.6-15.8,27.2-24.6c-1.7-6-9.8-9.4-20.3-9.4a59.21,59.21,0,0,0-15.6,2.2,37.44,37.44,0,0,0-12.4,6.4,60.14,60.14,0,0,0-14.9,18.3" transform="translate(-9.7 -9.3)"/>
50
+ <path id="lid" class="cls-11" d="M304.5,124.4c-1.7-6-9.8-9.4-20.3-9.4a59.21,59.21,0,0,0-15.6,2.2,37.44,37.44,0,0,0-12.4,6.4,61.21,61.21,0,0,0-14.9,18.1" transform="translate(-9.7 -9.3)"/>
51
+ <path id="pupil-2" data-name="pupil" class="cls-12" d="M256.7,126.1c2.5,9.2,11,14.8,18.9,12.6s12.3-11.4,9.8-20.6a16.59,16.59,0,0,0-1.2-3.1,59.21,59.21,0,0,0-15.6,2.2,37.44,37.44,0,0,0-12.4,6.4,9.23,9.23,0,0,0,.5,2.5" transform="translate(-9.7 -9.3)"/>
52
+ <path id="eyelash-2" data-name="eyelash" class="cls-13" d="M302.9,122.3c7.7,2.5,17-5,20.8-16.8M292,115.7c7.6,2.8,17.2-4.4,21.4-16M277,115.1c8.1-.3,14.3-10.5,13.9-22.8" transform="translate(-9.7 -9.3)"/>
53
+ <path id="reflection-2" data-name="reflection" class="cls-14" d="M271.1,127.1c0,3.6-2.6,6.5-5.8,6.5s-5.8-2.9-5.8-6.5,2.6-6.4,5.8-6.4,5.8,2.9,5.8,6.4" transform="translate(-9.7 -9.3)"/>
54
+ </g>
55
+ </g>
56
+ </svg>
lib/vendor/enshrined/svg-sanitize/tests/data/externalClean.svg CHANGED
@@ -1,3 +1,4 @@
 
1
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
2
  <rect x="0" y="0" width="1000" height="1000"></rect>
3
  <rect x="0" y="0" width="1000" height="1000"></rect>
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
3
  <rect x="0" y="0" width="1000" height="1000"></rect>
4
  <rect x="0" y="0" width="1000" height="1000"></rect>
lib/vendor/enshrined/svg-sanitize/tests/data/svgCleanOne.svg CHANGED
@@ -1,3 +1,4 @@
 
1
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" x="0px" y="0px" width="600px" height="600px" viewBox="0 0 600 600" xml:space="preserve">
2
  <line fill="none" stroke="#000000" stroke-miterlimit="10" x1="119" y1="84.5" x2="454" y2="84.5"/>
3
  <line fill="none" stroke="#000000" stroke-miterlimit="10" x1="111.212" y1="102.852" x2="112.032" y2="476.623"/>
1
+ <?xml version="1.0" encoding="utf-8"?>
2
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" x="0px" y="0px" width="600px" height="600px" viewBox="0 0 600 600" xml:space="preserve">
3
  <line fill="none" stroke="#000000" stroke-miterlimit="10" x1="119" y1="84.5" x2="454" y2="84.5"/>
4
  <line fill="none" stroke="#000000" stroke-miterlimit="10" x1="111.212" y1="102.852" x2="112.032" y2="476.623"/>
readme.txt CHANGED
@@ -4,7 +4,7 @@ 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.8.0
7
- Stable tag: 1.4.5
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -39,6 +39,10 @@ Install through the WordPress directory or download, unzip and upload the files
39
 
40
  == Changelog ==
41
 
 
 
 
 
42
  = 1.4.5 =
43
  * Fixes some issues with defining the size of an SVG.
44
  * Library update
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.8.0
7
+ Stable tag: 1.5.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
39
 
40
  == Changelog ==
41
 
42
+ = 1.5.0 =
43
+ * Library update
44
+ * role, aria- and data- attributes are now whitelisted to improve accessibility
45
+
46
  = 1.4.5 =
47
  * Fixes some issues with defining the size of an SVG.
48
  * Library update
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.4.5
7
  Author: Daryll Doyle
8
  Author URI: http://enshrined.co.uk
9
  Text Domain: safe-svg
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.5.0
7
  Author: Daryll Doyle
8
  Author URI: http://enshrined.co.uk
9
  Text Domain: safe-svg