WooCommerce PDF Invoices & Packing Slips - Version 2.10.4

Version Description

  • Fix: Billing phone not displaying in Packing Slip when billing address was enabled
  • Fix: Support for special characters on sites without the PHP MB-string module
  • Fix: Don't alter order object when logging document creation for refunds to order notes
Download this release

Release Info

Developer pomegranate
Plugin Icon 128x128 WooCommerce PDF Invoices & Packing Slips
Version 2.10.4
Comparing to
See all releases

Code changes from version 2.10.3 to 2.10.4

composer.json CHANGED
@@ -1,5 +1,6 @@
1
  {
2
  "require": {
3
- "dompdf/dompdf": "^1.0"
 
4
  }
5
  }
1
  {
2
  "require": {
3
+ "dompdf/dompdf": "^1.0",
4
+ "symfony/polyfill-mbstring": "1.20"
5
  }
6
  }
composer.lock CHANGED
@@ -1,225 +1,305 @@
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": "7c2abc1e1b0f348160eb65a9bc21787f",
8
- "packages": [
9
- {
10
- "name": "dompdf/dompdf",
11
- "version": "v1.0.2",
12
- "source": {
13
- "type": "git",
14
- "url": "https://github.com/dompdf/dompdf.git",
15
- "reference": "8768448244967a46d6e67b891d30878e0e15d25c"
16
- },
17
- "dist": {
18
- "type": "zip",
19
- "url": "https://api.github.com/repos/dompdf/dompdf/zipball/8768448244967a46d6e67b891d30878e0e15d25c",
20
- "reference": "8768448244967a46d6e67b891d30878e0e15d25c",
21
- "shasum": ""
22
- },
23
- "require": {
24
- "ext-dom": "*",
25
- "ext-mbstring": "*",
26
- "phenx/php-font-lib": "^0.5.2",
27
- "phenx/php-svg-lib": "^0.3.3",
28
- "php": "^7.1 || ^8.0"
29
- },
30
- "require-dev": {
31
- "mockery/mockery": "^1.3",
32
- "phpunit/phpunit": "^7.5 || ^8 || ^9",
33
- "squizlabs/php_codesniffer": "^3.5"
34
- },
35
- "suggest": {
36
- "ext-gd": "Needed to process images",
37
- "ext-gmagick": "Improves image processing performance",
38
- "ext-imagick": "Improves image processing performance",
39
- "ext-zlib": "Needed for pdf stream compression"
40
- },
41
- "type": "library",
42
- "extra": {
43
- "branch-alias": {
44
- "dev-develop": "0.7-dev"
45
- }
46
- },
47
- "autoload": {
48
- "psr-4": {
49
- "Dompdf\\": "src/"
50
- },
51
- "classmap": [
52
- "lib/"
53
- ]
54
- },
55
- "notification-url": "https://packagist.org/downloads/",
56
- "license": [
57
- "LGPL-2.1"
58
- ],
59
- "authors": [
60
- {
61
- "name": "Fabien Ménager",
62
- "email": "fabien.menager@gmail.com"
63
- },
64
- {
65
- "name": "Brian Sweeney",
66
- "email": "eclecticgeek@gmail.com"
67
- },
68
- {
69
- "name": "Gabriel Bull",
70
- "email": "me@gabrielbull.com"
71
- }
72
- ],
73
- "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
74
- "homepage": "https://github.com/dompdf/dompdf",
75
- "support": {
76
- "issues": "https://github.com/dompdf/dompdf/issues",
77
- "source": "https://github.com/dompdf/dompdf/tree/v1.0.2"
78
- },
79
- "time": "2021-01-08T14:18:52+00:00"
80
- },
81
- {
82
- "name": "phenx/php-font-lib",
83
- "version": "0.5.2",
84
- "source": {
85
- "type": "git",
86
- "url": "https://github.com/PhenX/php-font-lib.git",
87
- "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8"
88
- },
89
- "dist": {
90
- "type": "zip",
91
- "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8",
92
- "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8",
93
- "shasum": ""
94
- },
95
- "require-dev": {
96
- "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7"
97
- },
98
- "type": "library",
99
- "autoload": {
100
- "psr-4": {
101
- "FontLib\\": "src/FontLib"
102
- }
103
- },
104
- "notification-url": "https://packagist.org/downloads/",
105
- "license": [
106
- "LGPL-3.0"
107
- ],
108
- "authors": [
109
- {
110
- "name": "Fabien Ménager",
111
- "email": "fabien.menager@gmail.com"
112
- }
113
- ],
114
- "description": "A library to read, parse, export and make subsets of different types of font files.",
115
- "homepage": "https://github.com/PhenX/php-font-lib",
116
- "support": {
117
- "issues": "https://github.com/PhenX/php-font-lib/issues",
118
- "source": "https://github.com/PhenX/php-font-lib/tree/0.5.2"
119
- },
120
- "time": "2020-03-08T15:31:32+00:00"
121
- },
122
- {
123
- "name": "phenx/php-svg-lib",
124
- "version": "v0.3.3",
125
- "source": {
126
- "type": "git",
127
- "url": "https://github.com/PhenX/php-svg-lib.git",
128
- "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32"
129
- },
130
- "dist": {
131
- "type": "zip",
132
- "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
133
- "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
134
- "shasum": ""
135
- },
136
- "require": {
137
- "sabberworm/php-css-parser": "^8.3"
138
- },
139
- "require-dev": {
140
- "phpunit/phpunit": "^5.5|^6.5"
141
- },
142
- "type": "library",
143
- "autoload": {
144
- "psr-4": {
145
- "Svg\\": "src/Svg"
146
- }
147
- },
148
- "notification-url": "https://packagist.org/downloads/",
149
- "license": [
150
- "LGPL-3.0"
151
- ],
152
- "authors": [
153
- {
154
- "name": "Fabien Ménager",
155
- "email": "fabien.menager@gmail.com"
156
- }
157
- ],
158
- "description": "A library to read, parse and export to PDF SVG files.",
159
- "homepage": "https://github.com/PhenX/php-svg-lib",
160
- "support": {
161
- "issues": "https://github.com/PhenX/php-svg-lib/issues",
162
- "source": "https://github.com/PhenX/php-svg-lib/tree/master"
163
- },
164
- "time": "2019-09-11T20:02:13+00:00"
165
- },
166
- {
167
- "name": "sabberworm/php-css-parser",
168
- "version": "8.3.1",
169
- "source": {
170
- "type": "git",
171
- "url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
172
- "reference": "d217848e1396ef962fb1997cf3e2421acba7f796"
173
- },
174
- "dist": {
175
- "type": "zip",
176
- "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796",
177
- "reference": "d217848e1396ef962fb1997cf3e2421acba7f796",
178
- "shasum": ""
179
- },
180
- "require": {
181
- "php": ">=5.3.2"
182
- },
183
- "require-dev": {
184
- "codacy/coverage": "^1.4",
185
- "phpunit/phpunit": "~4.8"
186
- },
187
- "type": "library",
188
- "autoload": {
189
- "psr-0": {
190
- "Sabberworm\\CSS": "lib/"
191
- }
192
- },
193
- "notification-url": "https://packagist.org/downloads/",
194
- "license": [
195
- "MIT"
196
- ],
197
- "authors": [
198
- {
199
- "name": "Raphael Schweikert"
200
- }
201
- ],
202
- "description": "Parser for CSS Files written in PHP",
203
- "homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser",
204
- "keywords": [
205
- "css",
206
- "parser",
207
- "stylesheet"
208
- ],
209
- "support": {
210
- "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues",
211
- "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.3.1"
212
- },
213
- "time": "2020-06-01T09:10:00+00:00"
214
- }
215
- ],
216
- "packages-dev": [],
217
- "aliases": [],
218
- "minimum-stability": "stable",
219
- "stability-flags": [],
220
- "prefer-stable": false,
221
- "prefer-lowest": false,
222
- "platform": [],
223
- "platform-dev": [],
224
- "plugin-api-version": "2.0.0"
225
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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": "73484b19852eaabedb9da17ed3b8d7ba",
8
+ "packages": [
9
+ {
10
+ "name": "dompdf/dompdf",
11
+ "version": "v1.0.2",
12
+ "source": {
13
+ "type": "git",
14
+ "url": "https://github.com/dompdf/dompdf.git",
15
+ "reference": "8768448244967a46d6e67b891d30878e0e15d25c"
16
+ },
17
+ "dist": {
18
+ "type": "zip",
19
+ "url": "https://api.github.com/repos/dompdf/dompdf/zipball/8768448244967a46d6e67b891d30878e0e15d25c",
20
+ "reference": "8768448244967a46d6e67b891d30878e0e15d25c",
21
+ "shasum": ""
22
+ },
23
+ "require": {
24
+ "ext-dom": "*",
25
+ "ext-mbstring": "*",
26
+ "phenx/php-font-lib": "^0.5.2",
27
+ "phenx/php-svg-lib": "^0.3.3",
28
+ "php": "^7.1 || ^8.0"
29
+ },
30
+ "require-dev": {
31
+ "mockery/mockery": "^1.3",
32
+ "phpunit/phpunit": "^7.5 || ^8 || ^9",
33
+ "squizlabs/php_codesniffer": "^3.5"
34
+ },
35
+ "suggest": {
36
+ "ext-gd": "Needed to process images",
37
+ "ext-gmagick": "Improves image processing performance",
38
+ "ext-imagick": "Improves image processing performance",
39
+ "ext-zlib": "Needed for pdf stream compression"
40
+ },
41
+ "type": "library",
42
+ "extra": {
43
+ "branch-alias": {
44
+ "dev-develop": "0.7-dev"
45
+ }
46
+ },
47
+ "autoload": {
48
+ "psr-4": {
49
+ "Dompdf\\": "src/"
50
+ },
51
+ "classmap": [
52
+ "lib/"
53
+ ]
54
+ },
55
+ "notification-url": "https://packagist.org/downloads/",
56
+ "license": [
57
+ "LGPL-2.1"
58
+ ],
59
+ "authors": [
60
+ {
61
+ "name": "Fabien Ménager",
62
+ "email": "fabien.menager@gmail.com"
63
+ },
64
+ {
65
+ "name": "Brian Sweeney",
66
+ "email": "eclecticgeek@gmail.com"
67
+ },
68
+ {
69
+ "name": "Gabriel Bull",
70
+ "email": "me@gabrielbull.com"
71
+ }
72
+ ],
73
+ "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
74
+ "homepage": "https://github.com/dompdf/dompdf",
75
+ "support": {
76
+ "issues": "https://github.com/dompdf/dompdf/issues",
77
+ "source": "https://github.com/dompdf/dompdf/tree/v1.0.2"
78
+ },
79
+ "time": "2021-01-08T14:18:52+00:00"
80
+ },
81
+ {
82
+ "name": "phenx/php-font-lib",
83
+ "version": "0.5.2",
84
+ "source": {
85
+ "type": "git",
86
+ "url": "https://github.com/PhenX/php-font-lib.git",
87
+ "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8"
88
+ },
89
+ "dist": {
90
+ "type": "zip",
91
+ "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8",
92
+ "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8",
93
+ "shasum": ""
94
+ },
95
+ "require-dev": {
96
+ "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7"
97
+ },
98
+ "type": "library",
99
+ "autoload": {
100
+ "psr-4": {
101
+ "FontLib\\": "src/FontLib"
102
+ }
103
+ },
104
+ "notification-url": "https://packagist.org/downloads/",
105
+ "license": [
106
+ "LGPL-3.0"
107
+ ],
108
+ "authors": [
109
+ {
110
+ "name": "Fabien Ménager",
111
+ "email": "fabien.menager@gmail.com"
112
+ }
113
+ ],
114
+ "description": "A library to read, parse, export and make subsets of different types of font files.",
115
+ "homepage": "https://github.com/PhenX/php-font-lib",
116
+ "support": {
117
+ "issues": "https://github.com/PhenX/php-font-lib/issues",
118
+ "source": "https://github.com/PhenX/php-font-lib/tree/0.5.2"
119
+ },
120
+ "time": "2020-03-08T15:31:32+00:00"
121
+ },
122
+ {
123
+ "name": "phenx/php-svg-lib",
124
+ "version": "v0.3.3",
125
+ "source": {
126
+ "type": "git",
127
+ "url": "https://github.com/PhenX/php-svg-lib.git",
128
+ "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32"
129
+ },
130
+ "dist": {
131
+ "type": "zip",
132
+ "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
133
+ "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
134
+ "shasum": ""
135
+ },
136
+ "require": {
137
+ "sabberworm/php-css-parser": "^8.3"
138
+ },
139
+ "require-dev": {
140
+ "phpunit/phpunit": "^5.5|^6.5"
141
+ },
142
+ "type": "library",
143
+ "autoload": {
144
+ "psr-4": {
145
+ "Svg\\": "src/Svg"
146
+ }
147
+ },
148
+ "notification-url": "https://packagist.org/downloads/",
149
+ "license": [
150
+ "LGPL-3.0"
151
+ ],
152
+ "authors": [
153
+ {
154
+ "name": "Fabien Ménager",
155
+ "email": "fabien.menager@gmail.com"
156
+ }
157
+ ],
158
+ "description": "A library to read, parse and export to PDF SVG files.",
159
+ "homepage": "https://github.com/PhenX/php-svg-lib",
160
+ "support": {
161
+ "issues": "https://github.com/PhenX/php-svg-lib/issues",
162
+ "source": "https://github.com/PhenX/php-svg-lib/tree/master"
163
+ },
164
+ "time": "2019-09-11T20:02:13+00:00"
165
+ },
166
+ {
167
+ "name": "sabberworm/php-css-parser",
168
+ "version": "8.3.1",
169
+ "source": {
170
+ "type": "git",
171
+ "url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
172
+ "reference": "d217848e1396ef962fb1997cf3e2421acba7f796"
173
+ },
174
+ "dist": {
175
+ "type": "zip",
176
+ "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796",
177
+ "reference": "d217848e1396ef962fb1997cf3e2421acba7f796",
178
+ "shasum": ""
179
+ },
180
+ "require": {
181
+ "php": ">=5.3.2"
182
+ },
183
+ "require-dev": {
184
+ "codacy/coverage": "^1.4",
185
+ "phpunit/phpunit": "~4.8"
186
+ },
187
+ "type": "library",
188
+ "autoload": {
189
+ "psr-0": {
190
+ "Sabberworm\\CSS": "lib/"
191
+ }
192
+ },
193
+ "notification-url": "https://packagist.org/downloads/",
194
+ "license": [
195
+ "MIT"
196
+ ],
197
+ "authors": [
198
+ {
199
+ "name": "Raphael Schweikert"
200
+ }
201
+ ],
202
+ "description": "Parser for CSS Files written in PHP",
203
+ "homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser",
204
+ "keywords": [
205
+ "css",
206
+ "parser",
207
+ "stylesheet"
208
+ ],
209
+ "support": {
210
+ "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues",
211
+ "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.3.1"
212
+ },
213
+ "time": "2020-06-01T09:10:00+00:00"
214
+ },
215
+ {
216
+ "name": "symfony/polyfill-mbstring",
217
+ "version": "v1.20.0",
218
+ "source": {
219
+ "type": "git",
220
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
221
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
222
+ },
223
+ "dist": {
224
+ "type": "zip",
225
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
226
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
227
+ "shasum": ""
228
+ },
229
+ "require": {
230
+ "php": ">=7.1"
231
+ },
232
+ "suggest": {
233
+ "ext-mbstring": "For best performance"
234
+ },
235
+ "type": "library",
236
+ "extra": {
237
+ "branch-alias": {
238
+ "dev-main": "1.20-dev"
239
+ },
240
+ "thanks": {
241
+ "name": "symfony/polyfill",
242
+ "url": "https://github.com/symfony/polyfill"
243
+ }
244
+ },
245
+ "autoload": {
246
+ "psr-4": {
247
+ "Symfony\\Polyfill\\Mbstring\\": ""
248
+ },
249
+ "files": [
250
+ "bootstrap.php"
251
+ ]
252
+ },
253
+ "notification-url": "https://packagist.org/downloads/",
254
+ "license": [
255
+ "MIT"
256
+ ],
257
+ "authors": [
258
+ {
259
+ "name": "Nicolas Grekas",
260
+ "email": "p@tchwork.com"
261
+ },
262
+ {
263
+ "name": "Symfony Community",
264
+ "homepage": "https://symfony.com/contributors"
265
+ }
266
+ ],
267
+ "description": "Symfony polyfill for the Mbstring extension",
268
+ "homepage": "https://symfony.com",
269
+ "keywords": [
270
+ "compatibility",
271
+ "mbstring",
272
+ "polyfill",
273
+ "portable",
274
+ "shim"
275
+ ],
276
+ "support": {
277
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0"
278
+ },
279
+ "funding": [
280
+ {
281
+ "url": "https://symfony.com/sponsor",
282
+ "type": "custom"
283
+ },
284
+ {
285
+ "url": "https://github.com/fabpot",
286
+ "type": "github"
287
+ },
288
+ {
289
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
290
+ "type": "tidelift"
291
+ }
292
+ ],
293
+ "time": "2020-10-23T14:02:19+00:00"
294
+ }
295
+ ],
296
+ "packages-dev": [],
297
+ "aliases": [],
298
+ "minimum-stability": "stable",
299
+ "stability-flags": [],
300
+ "prefer-stable": false,
301
+ "prefer-lowest": false,
302
+ "platform": [],
303
+ "platform-dev": [],
304
+ "plugin-api-version": "2.0.0"
305
+ }
includes/class-wcpdf-main.php CHANGED
@@ -985,9 +985,9 @@ class Main {
985
  if( is_callable( array( $order, 'add_order_note' ) ) ) { // order
986
  $order->add_order_note( $note );
987
  } elseif ( $document->is_refund( $order ) ) { // refund order
988
- $order = $document->get_refund_parent( $order );
989
- if( ! empty( $order ) && is_callable( array( $order, 'add_order_note' ) ) ) {
990
- $order->add_order_note( $note );
991
  }
992
  }
993
  }
985
  if( is_callable( array( $order, 'add_order_note' ) ) ) { // order
986
  $order->add_order_note( $note );
987
  } elseif ( $document->is_refund( $order ) ) { // refund order
988
+ $parent_order = $document->get_refund_parent( $order );
989
+ if( ! empty( $parent_order ) && is_callable( array( $parent_order, 'add_order_note' ) ) ) {
990
+ $parent_order->add_order_note( $note );
991
  }
992
  }
993
  }
includes/compatibility/mb-string-compatibility.php DELETED
@@ -1,129 +0,0 @@
1
- <?php
2
- defined( 'ABSPATH' ) or exit;
3
-
4
- /**
5
- * mb_string compatibility - something's better than nothing!
6
- * Taken from dompdf 0.6
7
- */
8
- if (!extension_loaded('mbstring')) {
9
- if ( ! defined( 'MB_OVERLOAD_MAIL' ) ) define('MB_OVERLOAD_MAIL', 1);
10
- if ( ! defined( 'MB_OVERLOAD_STRING' ) ) define('MB_OVERLOAD_STRING', 2);
11
- if ( ! defined( 'MB_OVERLOAD_REGEX' ) ) define('MB_OVERLOAD_REGEX', 4);
12
- if ( ! defined( 'MB_CASE_UPPER' ) ) define('MB_CASE_UPPER', 0);
13
- if ( ! defined( 'MB_CASE_LOWER' ) ) define('MB_CASE_LOWER', 1);
14
- if ( ! defined( 'MB_CASE_TITLE' ) ) define('MB_CASE_TITLE', 2);
15
-
16
- if (!function_exists('mb_convert_encoding')) {
17
- function mb_convert_encoding($data, $to_encoding, $from_encoding = 'UTF-8') {
18
- if (str_replace('-', '', strtolower($to_encoding)) === 'utf8') {
19
- return utf8_encode($data);
20
- }
21
-
22
- return utf8_decode($data);
23
- }
24
- }
25
-
26
- if (!function_exists('mb_detect_encoding')) {
27
- function mb_detect_encoding($data, $encoding_list = array('iso-8859-1'), $strict = false) {
28
- return 'iso-8859-1';
29
- }
30
- }
31
-
32
- if (!function_exists('mb_detect_order')) {
33
- function mb_detect_order($encoding_list = array('iso-8859-1')) {
34
- return 'iso-8859-1';
35
- }
36
- }
37
-
38
- if (!function_exists('mb_internal_encoding')) {
39
- function mb_internal_encoding($encoding = null) {
40
- if (isset($encoding)) {
41
- return true;
42
- }
43
-
44
- return 'iso-8859-1';
45
- }
46
- }
47
- if (!function_exists('mb_strlen')) {
48
- function mb_strlen($str, $encoding = 'iso-8859-1') {
49
- switch (str_replace('-', '', strtolower($encoding))) {
50
- case "utf8": return strlen(utf8_encode($str));
51
- case "8bit": return strlen($str);
52
- default: return strlen(utf8_decode($str));
53
- }
54
- }
55
- }
56
-
57
- if (!function_exists('mb_strpos')) {
58
- function mb_strpos($haystack, $needle, $offset = 0) {
59
- return strpos($haystack, $needle, $offset);
60
- }
61
- }
62
-
63
- if (!function_exists('mb_stripos')) {
64
- function mb_stripos($haystack, $needle, $offset = 0) {
65
- return stripos($haystack, $needle, $offset);
66
- }
67
- }
68
-
69
- if (!function_exists('mb_strrpos')) {
70
- function mb_strrpos($haystack, $needle, $offset = 0) {
71
- return strrpos($haystack, $needle, $offset);
72
- }
73
- }
74
-
75
- if (!function_exists('mb_strtolower')) {
76
- function mb_strtolower( $str ) {
77
- return strtolower($str);
78
- }
79
- }
80
-
81
- if (!function_exists('mb_strtoupper')) {
82
- function mb_strtoupper( $str ) {
83
- return strtoupper($str);
84
- }
85
- }
86
-
87
- if (!function_exists('mb_substr')) {
88
- function mb_substr($string, $start, $length = null, $encoding = 'iso-8859-1') {
89
- if ( is_null($length) ) {
90
- return substr($string, $start);
91
- }
92
-
93
- return substr($string, $start, $length);
94
- }
95
- }
96
-
97
- if (!function_exists('mb_substr_count')) {
98
- function mb_substr_count($haystack, $needle, $encoding = 'iso-8859-1') {
99
- return substr_count($haystack, $needle);
100
- }
101
- }
102
-
103
- if (!function_exists('mb_encode_numericentity')) {
104
- function mb_encode_numericentity($str, $convmap, $encoding) {
105
- return htmlspecialchars($str);
106
- }
107
- }
108
-
109
- if (!function_exists('mb_convert_case')) {
110
- function mb_convert_case($str, $mode = MB_CASE_UPPER, $encoding = array()) {
111
- switch($mode) {
112
- case MB_CASE_UPPER: return mb_strtoupper($str);
113
- case MB_CASE_LOWER: return mb_strtolower($str);
114
- case MB_CASE_TITLE: return ucwords(mb_strtolower($str));
115
- default: return $str;
116
- }
117
- }
118
- }
119
-
120
- if (!function_exists('mb_list_encodings')) {
121
- function mb_list_encodings() {
122
- return array(
123
- "ISO-8859-1",
124
- "UTF-8",
125
- "8bit",
126
- );
127
- }
128
- }
129
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: woocommerce, pdf, invoices, packing slips, print, delivery notes, invoice,
5
  Requires at least: 3.5
6
  Tested up to: 5.8
7
  Requires PHP: 7.1
8
- Stable tag: 2.10.3
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -102,6 +102,11 @@ There's a setting on the Status tab of the settings page that allows you to togg
102
 
103
  == Changelog ==
104
 
 
 
 
 
 
105
  = 2.10.3 =
106
  * Fix: Secondary address always showed, regardless of setting
107
 
5
  Requires at least: 3.5
6
  Tested up to: 5.8
7
  Requires PHP: 7.1
8
+ Stable tag: 2.10.4
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
102
 
103
  == Changelog ==
104
 
105
+ = 2.10.4 =
106
+ * Fix: Billing phone not displaying in Packing Slip when billing address was enabled
107
+ * Fix: Support for special characters on sites without the PHP MB-string module
108
+ * Fix: Don't alter order object when logging document creation for refunds to order notes
109
+
110
  = 2.10.3 =
111
  * Fix: Secondary address always showed, regardless of setting
112
 
templates/Simple/packing-slip.php CHANGED
@@ -50,7 +50,7 @@
50
  <?php do_action( 'wpo_wcpdf_before_billing_address', $this->get_type(), $this->order ); ?>
51
  <?php $this->billing_address(); ?>
52
  <?php do_action( 'wpo_wcpdf_after_billing_address', $this->get_type(), $this->order ); ?>
53
- <?php if ( isset( $this->settings['display_phone'] ) && ! empty( $this->get_shipping_phone() ) ) : ?>
54
  <div class="billing-phone"><?php $this->billing_phone(); ?></div>
55
  <?php endif; ?>
56
  <?php endif; ?>
50
  <?php do_action( 'wpo_wcpdf_before_billing_address', $this->get_type(), $this->order ); ?>
51
  <?php $this->billing_address(); ?>
52
  <?php do_action( 'wpo_wcpdf_after_billing_address', $this->get_type(), $this->order ); ?>
53
+ <?php if ( isset( $this->settings['display_phone'] ) && ! empty( $this->get_billing_phone() ) ) : ?>
54
  <div class="billing-phone"><?php $this->billing_phone(); ?></div>
55
  <?php endif; ?>
56
  <?php endif; ?>
vendor/autoload.php CHANGED
@@ -1,7 +1,7 @@
1
- <?php
2
-
3
- // autoload.php @generated by Composer
4
-
5
- require_once __DIR__ . '/composer/autoload_real.php';
6
-
7
- return ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af::getLoader();
1
+ <?php
2
+
3
+ // autoload.php @generated by Composer
4
+
5
+ require_once __DIR__ . '/composer/autoload_real.php';
6
+
7
+ return ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -1,445 +1,479 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Composer.
5
- *
6
- * (c) Nils Adermann <naderman@naderman.de>
7
- * Jordi Boggiano <j.boggiano@seld.be>
8
- *
9
- * For the full copyright and license information, please view the LICENSE
10
- * file that was distributed with this source code.
11
- */
12
-
13
- namespace Composer\Autoload;
14
-
15
- /**
16
- * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
17
- *
18
- * $loader = new \Composer\Autoload\ClassLoader();
19
- *
20
- * // register classes with namespaces
21
- * $loader->add('Symfony\Component', __DIR__.'/component');
22
- * $loader->add('Symfony', __DIR__.'/framework');
23
- *
24
- * // activate the autoloader
25
- * $loader->register();
26
- *
27
- * // to enable searching the include path (eg. for PEAR packages)
28
- * $loader->setUseIncludePath(true);
29
- *
30
- * In this example, if you try to use a class in the Symfony\Component
31
- * namespace or one of its children (Symfony\Component\Console for instance),
32
- * the autoloader will first look for the class under the component/
33
- * directory, and it will then fallback to the framework/ directory if not
34
- * found before giving up.
35
- *
36
- * This class is loosely based on the Symfony UniversalClassLoader.
37
- *
38
- * @author Fabien Potencier <fabien@symfony.com>
39
- * @author Jordi Boggiano <j.boggiano@seld.be>
40
- * @see https://www.php-fig.org/psr/psr-0/
41
- * @see https://www.php-fig.org/psr/psr-4/
42
- */
43
- class ClassLoader
44
- {
45
- // PSR-4
46
- private $prefixLengthsPsr4 = array();
47
- private $prefixDirsPsr4 = array();
48
- private $fallbackDirsPsr4 = array();
49
-
50
- // PSR-0
51
- private $prefixesPsr0 = array();
52
- private $fallbackDirsPsr0 = array();
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
- {
62
- if (!empty($this->prefixesPsr0)) {
63
- return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
64
- }
65
-
66
- return array();
67
- }
68
-
69
- public function getPrefixesPsr4()
70
- {
71
- return $this->prefixDirsPsr4;
72
- }
73
-
74
- public function getFallbackDirs()
75
- {
76
- return $this->fallbackDirsPsr0;
77
- }
78
-
79
- public function getFallbackDirsPsr4()
80
- {
81
- return $this->fallbackDirsPsr4;
82
- }
83
-
84
- public function getClassMap()
85
- {
86
- return $this->classMap;
87
- }
88
-
89
- /**
90
- * @param array $classMap Class to filename map
91
- */
92
- public function addClassMap(array $classMap)
93
- {
94
- if ($this->classMap) {
95
- $this->classMap = array_merge($this->classMap, $classMap);
96
- } else {
97
- $this->classMap = $classMap;
98
- }
99
- }
100
-
101
- /**
102
- * Registers a set of PSR-0 directories for a given prefix, either
103
- * appending or prepending to the ones previously set for this prefix.
104
- *
105
- * @param string $prefix The prefix
106
- * @param array|string $paths The PSR-0 root directories
107
- * @param bool $prepend Whether to prepend the directories
108
- */
109
- public function add($prefix, $paths, $prepend = false)
110
- {
111
- if (!$prefix) {
112
- if ($prepend) {
113
- $this->fallbackDirsPsr0 = array_merge(
114
- (array) $paths,
115
- $this->fallbackDirsPsr0
116
- );
117
- } else {
118
- $this->fallbackDirsPsr0 = array_merge(
119
- $this->fallbackDirsPsr0,
120
- (array) $paths
121
- );
122
- }
123
-
124
- return;
125
- }
126
-
127
- $first = $prefix[0];
128
- if (!isset($this->prefixesPsr0[$first][$prefix])) {
129
- $this->prefixesPsr0[$first][$prefix] = (array) $paths;
130
-
131
- return;
132
- }
133
- if ($prepend) {
134
- $this->prefixesPsr0[$first][$prefix] = array_merge(
135
- (array) $paths,
136
- $this->prefixesPsr0[$first][$prefix]
137
- );
138
- } else {
139
- $this->prefixesPsr0[$first][$prefix] = array_merge(
140
- $this->prefixesPsr0[$first][$prefix],
141
- (array) $paths
142
- );
143
- }
144
- }
145
-
146
- /**
147
- * Registers a set of PSR-4 directories for a given namespace, either
148
- * appending or prepending to the ones previously set for this namespace.
149
- *
150
- * @param string $prefix The prefix/namespace, with trailing '\\'
151
- * @param array|string $paths The PSR-4 base directories
152
- * @param bool $prepend Whether to prepend the directories
153
- *
154
- * @throws \InvalidArgumentException
155
- */
156
- public function addPsr4($prefix, $paths, $prepend = false)
157
- {
158
- if (!$prefix) {
159
- // Register directories for the root namespace.
160
- if ($prepend) {
161
- $this->fallbackDirsPsr4 = array_merge(
162
- (array) $paths,
163
- $this->fallbackDirsPsr4
164
- );
165
- } else {
166
- $this->fallbackDirsPsr4 = array_merge(
167
- $this->fallbackDirsPsr4,
168
- (array) $paths
169
- );
170
- }
171
- } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
172
- // Register directories for a new namespace.
173
- $length = strlen($prefix);
174
- if ('\\' !== $prefix[$length - 1]) {
175
- throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
176
- }
177
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
178
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
179
- } elseif ($prepend) {
180
- // Prepend directories for an already registered namespace.
181
- $this->prefixDirsPsr4[$prefix] = array_merge(
182
- (array) $paths,
183
- $this->prefixDirsPsr4[$prefix]
184
- );
185
- } else {
186
- // Append directories for an already registered namespace.
187
- $this->prefixDirsPsr4[$prefix] = array_merge(
188
- $this->prefixDirsPsr4[$prefix],
189
- (array) $paths
190
- );
191
- }
192
- }
193
-
194
- /**
195
- * Registers a set of PSR-0 directories for a given prefix,
196
- * replacing any others previously set for this prefix.
197
- *
198
- * @param string $prefix The prefix
199
- * @param array|string $paths The PSR-0 base directories
200
- */
201
- public function set($prefix, $paths)
202
- {
203
- if (!$prefix) {
204
- $this->fallbackDirsPsr0 = (array) $paths;
205
- } else {
206
- $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
207
- }
208
- }
209
-
210
- /**
211
- * Registers a set of PSR-4 directories for a given namespace,
212
- * replacing any others previously set for this namespace.
213
- *
214
- * @param string $prefix The prefix/namespace, with trailing '\\'
215
- * @param array|string $paths The PSR-4 base directories
216
- *
217
- * @throws \InvalidArgumentException
218
- */
219
- public function setPsr4($prefix, $paths)
220
- {
221
- if (!$prefix) {
222
- $this->fallbackDirsPsr4 = (array) $paths;
223
- } else {
224
- $length = strlen($prefix);
225
- if ('\\' !== $prefix[$length - 1]) {
226
- throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
227
- }
228
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
229
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
230
- }
231
- }
232
-
233
- /**
234
- * Turns on searching the include path for class files.
235
- *
236
- * @param bool $useIncludePath
237
- */
238
- public function setUseIncludePath($useIncludePath)
239
- {
240
- $this->useIncludePath = $useIncludePath;
241
- }
242
-
243
- /**
244
- * Can be used to check if the autoloader uses the include path to check
245
- * for classes.
246
- *
247
- * @return bool
248
- */
249
- public function getUseIncludePath()
250
- {
251
- return $this->useIncludePath;
252
- }
253
-
254
- /**
255
- * Turns off searching the prefix and fallback directories for classes
256
- * that have not been registered with the class map.
257
- *
258
- * @param bool $classMapAuthoritative
259
- */
260
- public function setClassMapAuthoritative($classMapAuthoritative)
261
- {
262
- $this->classMapAuthoritative = $classMapAuthoritative;
263
- }
264
-
265
- /**
266
- * Should class lookup fail if not found in the current class map?
267
- *
268
- * @return bool
269
- */
270
- public function isClassMapAuthoritative()
271
- {
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') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $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
- *
298
- * @param bool $prepend Whether to prepend the autoloader or not
299
- */
300
- public function register($prepend = false)
301
- {
302
- spl_autoload_register(array($this, 'loadClass'), true, $prepend);
303
- }
304
-
305
- /**
306
- * Unregisters this instance as an autoloader.
307
- */
308
- public function unregister()
309
- {
310
- spl_autoload_unregister(array($this, 'loadClass'));
311
- }
312
-
313
- /**
314
- * Loads the given class or interface.
315
- *
316
- * @param string $class The name of the class
317
- * @return bool|null True if loaded, null otherwise
318
- */
319
- public function loadClass($class)
320
- {
321
- if ($file = $this->findFile($class)) {
322
- includeFile($file);
323
-
324
- return true;
325
- }
326
- }
327
-
328
- /**
329
- * Finds the path to the file where the class is defined.
330
- *
331
- * @param string $class The name of the class
332
- *
333
- * @return string|false The path if found, false otherwise
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;
368
- }
369
-
370
- private function findFileWithExtension($class, $ext)
371
- {
372
- // PSR-4 lookup
373
- $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
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
- }
388
- }
389
- }
390
- }
391
-
392
- // PSR-4 fallback dirs
393
- foreach ($this->fallbackDirsPsr4 as $dir) {
394
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
395
- return $file;
396
- }
397
- }
398
-
399
- // PSR-0 lookup
400
- if (false !== $pos = strrpos($class, '\\')) {
401
- // namespaced class name
402
- $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
403
- . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
404
- } else {
405
- // PEAR-like class name
406
- $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
407
- }
408
-
409
- if (isset($this->prefixesPsr0[$first])) {
410
- foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
411
- if (0 === strpos($class, $prefix)) {
412
- foreach ($dirs as $dir) {
413
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
414
- return $file;
415
- }
416
- }
417
- }
418
- }
419
- }
420
-
421
- // PSR-0 fallback dirs
422
- foreach ($this->fallbackDirsPsr0 as $dir) {
423
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
424
- return $file;
425
- }
426
- }
427
-
428
- // PSR-0 include paths.
429
- if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
430
- return $file;
431
- }
432
-
433
- return false;
434
- }
435
- }
436
-
437
- /**
438
- * Scope isolated include.
439
- *
440
- * Prevents access to $this/self from included files.
441
- */
442
- function includeFile($file)
443
- {
444
- include $file;
445
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of Composer.
5
+ *
6
+ * (c) Nils Adermann <naderman@naderman.de>
7
+ * Jordi Boggiano <j.boggiano@seld.be>
8
+ *
9
+ * For the full copyright and license information, please view the LICENSE
10
+ * file that was distributed with this source code.
11
+ */
12
+
13
+ namespace Composer\Autoload;
14
+
15
+ /**
16
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
17
+ *
18
+ * $loader = new \Composer\Autoload\ClassLoader();
19
+ *
20
+ * // register classes with namespaces
21
+ * $loader->add('Symfony\Component', __DIR__.'/component');
22
+ * $loader->add('Symfony', __DIR__.'/framework');
23
+ *
24
+ * // activate the autoloader
25
+ * $loader->register();
26
+ *
27
+ * // to enable searching the include path (eg. for PEAR packages)
28
+ * $loader->setUseIncludePath(true);
29
+ *
30
+ * In this example, if you try to use a class in the Symfony\Component
31
+ * namespace or one of its children (Symfony\Component\Console for instance),
32
+ * the autoloader will first look for the class under the component/
33
+ * directory, and it will then fallback to the framework/ directory if not
34
+ * found before giving up.
35
+ *
36
+ * This class is loosely based on the Symfony UniversalClassLoader.
37
+ *
38
+ * @author Fabien Potencier <fabien@symfony.com>
39
+ * @author Jordi Boggiano <j.boggiano@seld.be>
40
+ * @see https://www.php-fig.org/psr/psr-0/
41
+ * @see https://www.php-fig.org/psr/psr-4/
42
+ */
43
+ class ClassLoader
44
+ {
45
+ private $vendorDir;
46
+
47
+ // PSR-4
48
+ private $prefixLengthsPsr4 = array();
49
+ private $prefixDirsPsr4 = array();
50
+ private $fallbackDirsPsr4 = array();
51
+
52
+ // PSR-0
53
+ private $prefixesPsr0 = array();
54
+ private $fallbackDirsPsr0 = array();
55
+
56
+ private $useIncludePath = false;
57
+ private $classMap = array();
58
+ private $classMapAuthoritative = false;
59
+ private $missingClasses = array();
60
+ private $apcuPrefix;
61
+
62
+ private static $registeredLoaders = array();
63
+
64
+ public function __construct($vendorDir = null)
65
+ {
66
+ $this->vendorDir = $vendorDir;
67
+ }
68
+
69
+ public function getPrefixes()
70
+ {
71
+ if (!empty($this->prefixesPsr0)) {
72
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
73
+ }
74
+
75
+ return array();
76
+ }
77
+
78
+ public function getPrefixesPsr4()
79
+ {
80
+ return $this->prefixDirsPsr4;
81
+ }
82
+
83
+ public function getFallbackDirs()
84
+ {
85
+ return $this->fallbackDirsPsr0;
86
+ }
87
+
88
+ public function getFallbackDirsPsr4()
89
+ {
90
+ return $this->fallbackDirsPsr4;
91
+ }
92
+
93
+ public function getClassMap()
94
+ {
95
+ return $this->classMap;
96
+ }
97
+
98
+ /**
99
+ * @param array $classMap Class to filename map
100
+ */
101
+ public function addClassMap(array $classMap)
102
+ {
103
+ if ($this->classMap) {
104
+ $this->classMap = array_merge($this->classMap, $classMap);
105
+ } else {
106
+ $this->classMap = $classMap;
107
+ }
108
+ }
109
+
110
+ /**
111
+ * Registers a set of PSR-0 directories for a given prefix, either
112
+ * appending or prepending to the ones previously set for this prefix.
113
+ *
114
+ * @param string $prefix The prefix
115
+ * @param array|string $paths The PSR-0 root directories
116
+ * @param bool $prepend Whether to prepend the directories
117
+ */
118
+ public function add($prefix, $paths, $prepend = false)
119
+ {
120
+ if (!$prefix) {
121
+ if ($prepend) {
122
+ $this->fallbackDirsPsr0 = array_merge(
123
+ (array) $paths,
124
+ $this->fallbackDirsPsr0
125
+ );
126
+ } else {
127
+ $this->fallbackDirsPsr0 = array_merge(
128
+ $this->fallbackDirsPsr0,
129
+ (array) $paths
130
+ );
131
+ }
132
+
133
+ return;
134
+ }
135
+
136
+ $first = $prefix[0];
137
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
138
+ $this->prefixesPsr0[$first][$prefix] = (array) $paths;
139
+
140
+ return;
141
+ }
142
+ if ($prepend) {
143
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
144
+ (array) $paths,
145
+ $this->prefixesPsr0[$first][$prefix]
146
+ );
147
+ } else {
148
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
149
+ $this->prefixesPsr0[$first][$prefix],
150
+ (array) $paths
151
+ );
152
+ }
153
+ }
154
+
155
+ /**
156
+ * Registers a set of PSR-4 directories for a given namespace, either
157
+ * appending or prepending to the ones previously set for this namespace.
158
+ *
159
+ * @param string $prefix The prefix/namespace, with trailing '\\'
160
+ * @param array|string $paths The PSR-4 base directories
161
+ * @param bool $prepend Whether to prepend the directories
162
+ *
163
+ * @throws \InvalidArgumentException
164
+ */
165
+ public function addPsr4($prefix, $paths, $prepend = false)
166
+ {
167
+ if (!$prefix) {
168
+ // Register directories for the root namespace.
169
+ if ($prepend) {
170
+ $this->fallbackDirsPsr4 = array_merge(
171
+ (array) $paths,
172
+ $this->fallbackDirsPsr4
173
+ );
174
+ } else {
175
+ $this->fallbackDirsPsr4 = array_merge(
176
+ $this->fallbackDirsPsr4,
177
+ (array) $paths
178
+ );
179
+ }
180
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
181
+ // Register directories for a new namespace.
182
+ $length = strlen($prefix);
183
+ if ('\\' !== $prefix[$length - 1]) {
184
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
185
+ }
186
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
187
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
188
+ } elseif ($prepend) {
189
+ // Prepend directories for an already registered namespace.
190
+ $this->prefixDirsPsr4[$prefix] = array_merge(
191
+ (array) $paths,
192
+ $this->prefixDirsPsr4[$prefix]
193
+ );
194
+ } else {
195
+ // Append directories for an already registered namespace.
196
+ $this->prefixDirsPsr4[$prefix] = array_merge(
197
+ $this->prefixDirsPsr4[$prefix],
198
+ (array) $paths
199
+ );
200
+ }
201
+ }
202
+
203
+ /**
204
+ * Registers a set of PSR-0 directories for a given prefix,
205
+ * replacing any others previously set for this prefix.
206
+ *
207
+ * @param string $prefix The prefix
208
+ * @param array|string $paths The PSR-0 base directories
209
+ */
210
+ public function set($prefix, $paths)
211
+ {
212
+ if (!$prefix) {
213
+ $this->fallbackDirsPsr0 = (array) $paths;
214
+ } else {
215
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
216
+ }
217
+ }
218
+
219
+ /**
220
+ * Registers a set of PSR-4 directories for a given namespace,
221
+ * replacing any others previously set for this namespace.
222
+ *
223
+ * @param string $prefix The prefix/namespace, with trailing '\\'
224
+ * @param array|string $paths The PSR-4 base directories
225
+ *
226
+ * @throws \InvalidArgumentException
227
+ */
228
+ public function setPsr4($prefix, $paths)
229
+ {
230
+ if (!$prefix) {
231
+ $this->fallbackDirsPsr4 = (array) $paths;
232
+ } else {
233
+ $length = strlen($prefix);
234
+ if ('\\' !== $prefix[$length - 1]) {
235
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
236
+ }
237
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
238
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
239
+ }
240
+ }
241
+
242
+ /**
243
+ * Turns on searching the include path for class files.
244
+ *
245
+ * @param bool $useIncludePath
246
+ */
247
+ public function setUseIncludePath($useIncludePath)
248
+ {
249
+ $this->useIncludePath = $useIncludePath;
250
+ }
251
+
252
+ /**
253
+ * Can be used to check if the autoloader uses the include path to check
254
+ * for classes.
255
+ *
256
+ * @return bool
257
+ */
258
+ public function getUseIncludePath()
259
+ {
260
+ return $this->useIncludePath;
261
+ }
262
+
263
+ /**
264
+ * Turns off searching the prefix and fallback directories for classes
265
+ * that have not been registered with the class map.
266
+ *
267
+ * @param bool $classMapAuthoritative
268
+ */
269
+ public function setClassMapAuthoritative($classMapAuthoritative)
270
+ {
271
+ $this->classMapAuthoritative = $classMapAuthoritative;
272
+ }
273
+
274
+ /**
275
+ * Should class lookup fail if not found in the current class map?
276
+ *
277
+ * @return bool
278
+ */
279
+ public function isClassMapAuthoritative()
280
+ {
281
+ return $this->classMapAuthoritative;
282
+ }
283
+
284
+ /**
285
+ * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
286
+ *
287
+ * @param string|null $apcuPrefix
288
+ */
289
+ public function setApcuPrefix($apcuPrefix)
290
+ {
291
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
292
+ }
293
+
294
+ /**
295
+ * The APCu prefix in use, or null if APCu caching is not enabled.
296
+ *
297
+ * @return string|null
298
+ */
299
+ public function getApcuPrefix()
300
+ {
301
+ return $this->apcuPrefix;
302
+ }
303
+
304
+ /**
305
+ * Registers this instance as an autoloader.
306
+ *
307
+ * @param bool $prepend Whether to prepend the autoloader or not
308
+ */
309
+ public function register($prepend = false)
310
+ {
311
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
312
+
313
+ if (null === $this->vendorDir) {
314
+ return;
315
+ }
316
+
317
+ if ($prepend) {
318
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
319
+ } else {
320
+ unset(self::$registeredLoaders[$this->vendorDir]);
321
+ self::$registeredLoaders[$this->vendorDir] = $this;
322
+ }
323
+ }
324
+
325
+ /**
326
+ * Unregisters this instance as an autoloader.
327
+ */
328
+ public function unregister()
329
+ {
330
+ spl_autoload_unregister(array($this, 'loadClass'));
331
+
332
+ if (null !== $this->vendorDir) {
333
+ unset(self::$registeredLoaders[$this->vendorDir]);
334
+ }
335
+ }
336
+
337
+ /**
338
+ * Loads the given class or interface.
339
+ *
340
+ * @param string $class The name of the class
341
+ * @return bool|null True if loaded, null otherwise
342
+ */
343
+ public function loadClass($class)
344
+ {
345
+ if ($file = $this->findFile($class)) {
346
+ includeFile($file);
347
+
348
+ return true;
349
+ }
350
+ }
351
+
352
+ /**
353
+ * Finds the path to the file where the class is defined.
354
+ *
355
+ * @param string $class The name of the class
356
+ *
357
+ * @return string|false The path if found, false otherwise
358
+ */
359
+ public function findFile($class)
360
+ {
361
+ // class map lookup
362
+ if (isset($this->classMap[$class])) {
363
+ return $this->classMap[$class];
364
+ }
365
+ if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
366
+ return false;
367
+ }
368
+ if (null !== $this->apcuPrefix) {
369
+ $file = apcu_fetch($this->apcuPrefix.$class, $hit);
370
+ if ($hit) {
371
+ return $file;
372
+ }
373
+ }
374
+
375
+ $file = $this->findFileWithExtension($class, '.php');
376
+
377
+ // Search for Hack files if we are running on HHVM
378
+ if (false === $file && defined('HHVM_VERSION')) {
379
+ $file = $this->findFileWithExtension($class, '.hh');
380
+ }
381
+
382
+ if (null !== $this->apcuPrefix) {
383
+ apcu_add($this->apcuPrefix.$class, $file);
384
+ }
385
+
386
+ if (false === $file) {
387
+ // Remember that this class does not exist.
388
+ $this->missingClasses[$class] = true;
389
+ }
390
+
391
+ return $file;
392
+ }
393
+
394
+ /**
395
+ * Returns the currently registered loaders indexed by their corresponding vendor directories.
396
+ *
397
+ * @return self[]
398
+ */
399
+ public static function getRegisteredLoaders()
400
+ {
401
+ return self::$registeredLoaders;
402
+ }
403
+
404
+ private function findFileWithExtension($class, $ext)
405
+ {
406
+ // PSR-4 lookup
407
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
408
+
409
+ $first = $class[0];
410
+ if (isset($this->prefixLengthsPsr4[$first])) {
411
+ $subPath = $class;
412
+ while (false !== $lastPos = strrpos($subPath, '\\')) {
413
+ $subPath = substr($subPath, 0, $lastPos);
414
+ $search = $subPath . '\\';
415
+ if (isset($this->prefixDirsPsr4[$search])) {
416
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
417
+ foreach ($this->prefixDirsPsr4[$search] as $dir) {
418
+ if (file_exists($file = $dir . $pathEnd)) {
419
+ return $file;
420
+ }
421
+ }
422
+ }
423
+ }
424
+ }
425
+
426
+ // PSR-4 fallback dirs
427
+ foreach ($this->fallbackDirsPsr4 as $dir) {
428
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
429
+ return $file;
430
+ }
431
+ }
432
+
433
+ // PSR-0 lookup
434
+ if (false !== $pos = strrpos($class, '\\')) {
435
+ // namespaced class name
436
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
437
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
438
+ } else {
439
+ // PEAR-like class name
440
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
441
+ }
442
+
443
+ if (isset($this->prefixesPsr0[$first])) {
444
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
445
+ if (0 === strpos($class, $prefix)) {
446
+ foreach ($dirs as $dir) {
447
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
448
+ return $file;
449
+ }
450
+ }
451
+ }
452
+ }
453
+ }
454
+
455
+ // PSR-0 fallback dirs
456
+ foreach ($this->fallbackDirsPsr0 as $dir) {
457
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
458
+ return $file;
459
+ }
460
+ }
461
+
462
+ // PSR-0 include paths.
463
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
464
+ return $file;
465
+ }
466
+
467
+ return false;
468
+ }
469
+ }
470
+
471
+ /**
472
+ * Scope isolated include.
473
+ *
474
+ * Prevents access to $this/self from included files.
475
+ */
476
+ function includeFile($file)
477
+ {
478
+ include $file;
479
+ }
vendor/composer/InstalledVersions.php CHANGED
@@ -1,255 +1,328 @@
1
- <?php
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
- namespace Composer;
14
-
15
- use Composer\Semver\VersionParser;
16
-
17
-
18
-
19
-
20
-
21
-
22
- class InstalledVersions
23
- {
24
- private static $installed = array (
25
- 'root' =>
26
- array (
27
- 'pretty_version' => 'dev-master',
28
- 'version' => 'dev-master',
29
- 'aliases' =>
30
- array (
31
- ),
32
- 'reference' => '9315d076090b6d7a2b7a28beb869abbd855d6a10',
33
- 'name' => '__root__',
34
- ),
35
- 'versions' =>
36
- array (
37
- '__root__' =>
38
- array (
39
- 'pretty_version' => 'dev-master',
40
- 'version' => 'dev-master',
41
- 'aliases' =>
42
- array (
43
- ),
44
- 'reference' => '9315d076090b6d7a2b7a28beb869abbd855d6a10',
45
- ),
46
- 'dompdf/dompdf' =>
47
- array (
48
- 'pretty_version' => 'v1.0.2',
49
- 'version' => '1.0.2.0',
50
- 'aliases' =>
51
- array (
52
- ),
53
- 'reference' => '8768448244967a46d6e67b891d30878e0e15d25c',
54
- ),
55
- 'phenx/php-font-lib' =>
56
- array (
57
- 'pretty_version' => '0.5.2',
58
- 'version' => '0.5.2.0',
59
- 'aliases' =>
60
- array (
61
- ),
62
- 'reference' => 'ca6ad461f032145fff5971b5985e5af9e7fa88d8',
63
- ),
64
- 'phenx/php-svg-lib' =>
65
- array (
66
- 'pretty_version' => 'v0.3.3',
67
- 'version' => '0.3.3.0',
68
- 'aliases' =>
69
- array (
70
- ),
71
- 'reference' => '5fa61b65e612ce1ae15f69b3d223cb14ecc60e32',
72
- ),
73
- 'sabberworm/php-css-parser' =>
74
- array (
75
- 'pretty_version' => '8.3.1',
76
- 'version' => '8.3.1.0',
77
- 'aliases' =>
78
- array (
79
- ),
80
- 'reference' => 'd217848e1396ef962fb1997cf3e2421acba7f796',
81
- ),
82
- ),
83
- );
84
-
85
-
86
-
87
-
88
-
89
-
90
-
91
- public static function getInstalledPackages()
92
- {
93
- return array_keys(self::$installed['versions']);
94
- }
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
- public static function isInstalled($packageName)
105
- {
106
- return isset(self::$installed['versions'][$packageName]);
107
- }
108
-
109
-
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
-
118
-
119
-
120
-
121
-
122
- public static function satisfies(VersionParser $parser, $packageName, $constraint)
123
- {
124
- $constraint = $parser->parseConstraints($constraint);
125
- $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
126
-
127
- return $provided->matches($constraint);
128
- }
129
-
130
-
131
-
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
- public static function getVersionRanges($packageName)
140
- {
141
- if (!isset(self::$installed['versions'][$packageName])) {
142
- throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
143
- }
144
-
145
- $ranges = array();
146
- if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
147
- $ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
148
- }
149
- if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
150
- $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
151
- }
152
- if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
153
- $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
154
- }
155
- if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
156
- $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
157
- }
158
-
159
- return implode(' || ', $ranges);
160
- }
161
-
162
-
163
-
164
-
165
-
166
- public static function getVersion($packageName)
167
- {
168
- if (!isset(self::$installed['versions'][$packageName])) {
169
- throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
170
- }
171
-
172
- if (!isset(self::$installed['versions'][$packageName]['version'])) {
173
- return null;
174
- }
175
-
176
- return self::$installed['versions'][$packageName]['version'];
177
- }
178
-
179
-
180
-
181
-
182
-
183
- public static function getPrettyVersion($packageName)
184
- {
185
- if (!isset(self::$installed['versions'][$packageName])) {
186
- throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
187
- }
188
-
189
- if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
190
- return null;
191
- }
192
-
193
- return self::$installed['versions'][$packageName]['pretty_version'];
194
- }
195
-
196
-
197
-
198
-
199
-
200
- public static function getReference($packageName)
201
- {
202
- if (!isset(self::$installed['versions'][$packageName])) {
203
- throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
204
- }
205
-
206
- if (!isset(self::$installed['versions'][$packageName]['reference'])) {
207
- return null;
208
- }
209
-
210
- return self::$installed['versions'][$packageName]['reference'];
211
- }
212
-
213
-
214
-
215
-
216
-
217
- public static function getRootPackage()
218
- {
219
- return self::$installed['root'];
220
- }
221
-
222
-
223
-
224
-
225
-
226
-
227
-
228
- public static function getRawData()
229
- {
230
- return self::$installed;
231
- }
232
-
233
-
234
-
235
-
236
-
237
-
238
-
239
-
240
-
241
-
242
-
243
-
244
-
245
-
246
-
247
-
248
-
249
-
250
-
251
- public static function reload($data)
252
- {
253
- self::$installed = $data;
254
- }
255
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+ namespace Composer;
14
+
15
+ use Composer\Autoload\ClassLoader;
16
+ use Composer\Semver\VersionParser;
17
+
18
+
19
+
20
+
21
+
22
+
23
+ class InstalledVersions
24
+ {
25
+ private static $installed = array (
26
+ 'root' =>
27
+ array (
28
+ 'pretty_version' => 'dev-master',
29
+ 'version' => 'dev-master',
30
+ 'aliases' =>
31
+ array (
32
+ ),
33
+ 'reference' => '0ff9b86fd28a59488d9b215bd51e57198655c7b9',
34
+ 'name' => '__root__',
35
+ ),
36
+ 'versions' =>
37
+ array (
38
+ '__root__' =>
39
+ array (
40
+ 'pretty_version' => 'dev-master',
41
+ 'version' => 'dev-master',
42
+ 'aliases' =>
43
+ array (
44
+ ),
45
+ 'reference' => '0ff9b86fd28a59488d9b215bd51e57198655c7b9',
46
+ ),
47
+ 'dompdf/dompdf' =>
48
+ array (
49
+ 'pretty_version' => 'v1.0.2',
50
+ 'version' => '1.0.2.0',
51
+ 'aliases' =>
52
+ array (
53
+ ),
54
+ 'reference' => '8768448244967a46d6e67b891d30878e0e15d25c',
55
+ ),
56
+ 'phenx/php-font-lib' =>
57
+ array (
58
+ 'pretty_version' => '0.5.2',
59
+ 'version' => '0.5.2.0',
60
+ 'aliases' =>
61
+ array (
62
+ ),
63
+ 'reference' => 'ca6ad461f032145fff5971b5985e5af9e7fa88d8',
64
+ ),
65
+ 'phenx/php-svg-lib' =>
66
+ array (
67
+ 'pretty_version' => 'v0.3.3',
68
+ 'version' => '0.3.3.0',
69
+ 'aliases' =>
70
+ array (
71
+ ),
72
+ 'reference' => '5fa61b65e612ce1ae15f69b3d223cb14ecc60e32',
73
+ ),
74
+ 'sabberworm/php-css-parser' =>
75
+ array (
76
+ 'pretty_version' => '8.3.1',
77
+ 'version' => '8.3.1.0',
78
+ 'aliases' =>
79
+ array (
80
+ ),
81
+ 'reference' => 'd217848e1396ef962fb1997cf3e2421acba7f796',
82
+ ),
83
+ 'symfony/polyfill-mbstring' =>
84
+ array (
85
+ 'pretty_version' => 'v1.20.0',
86
+ 'version' => '1.20.0.0',
87
+ 'aliases' =>
88
+ array (
89
+ ),
90
+ 'reference' => '39d483bdf39be819deabf04ec872eb0b2410b531',
91
+ ),
92
+ ),
93
+ );
94
+ private static $canGetVendors;
95
+ private static $installedByVendor = array();
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+ public static function getInstalledPackages()
104
+ {
105
+ $packages = array();
106
+ foreach (self::getInstalled() as $installed) {
107
+ $packages[] = array_keys($installed['versions']);
108
+ }
109
+
110
+
111
+ if (1 === \count($packages)) {
112
+ return $packages[0];
113
+ }
114
+
115
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
116
+ }
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+ public static function isInstalled($packageName)
127
+ {
128
+ foreach (self::getInstalled() as $installed) {
129
+ if (isset($installed['versions'][$packageName])) {
130
+ return true;
131
+ }
132
+ }
133
+
134
+ return false;
135
+ }
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
151
+ {
152
+ $constraint = $parser->parseConstraints($constraint);
153
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
154
+
155
+ return $provided->matches($constraint);
156
+ }
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+ public static function getVersionRanges($packageName)
168
+ {
169
+ foreach (self::getInstalled() as $installed) {
170
+ if (!isset($installed['versions'][$packageName])) {
171
+ continue;
172
+ }
173
+
174
+ $ranges = array();
175
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
176
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
177
+ }
178
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
179
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
180
+ }
181
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
182
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
183
+ }
184
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
185
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
186
+ }
187
+
188
+ return implode(' || ', $ranges);
189
+ }
190
+
191
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
192
+ }
193
+
194
+
195
+
196
+
197
+
198
+ public static function getVersion($packageName)
199
+ {
200
+ foreach (self::getInstalled() as $installed) {
201
+ if (!isset($installed['versions'][$packageName])) {
202
+ continue;
203
+ }
204
+
205
+ if (!isset($installed['versions'][$packageName]['version'])) {
206
+ return null;
207
+ }
208
+
209
+ return $installed['versions'][$packageName]['version'];
210
+ }
211
+
212
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
213
+ }
214
+
215
+
216
+
217
+
218
+
219
+ public static function getPrettyVersion($packageName)
220
+ {
221
+ foreach (self::getInstalled() as $installed) {
222
+ if (!isset($installed['versions'][$packageName])) {
223
+ continue;
224
+ }
225
+
226
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
227
+ return null;
228
+ }
229
+
230
+ return $installed['versions'][$packageName]['pretty_version'];
231
+ }
232
+
233
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
234
+ }
235
+
236
+
237
+
238
+
239
+
240
+ public static function getReference($packageName)
241
+ {
242
+ foreach (self::getInstalled() as $installed) {
243
+ if (!isset($installed['versions'][$packageName])) {
244
+ continue;
245
+ }
246
+
247
+ if (!isset($installed['versions'][$packageName]['reference'])) {
248
+ return null;
249
+ }
250
+
251
+ return $installed['versions'][$packageName]['reference'];
252
+ }
253
+
254
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
255
+ }
256
+
257
+
258
+
259
+
260
+
261
+ public static function getRootPackage()
262
+ {
263
+ $installed = self::getInstalled();
264
+
265
+ return $installed[0]['root'];
266
+ }
267
+
268
+
269
+
270
+
271
+
272
+
273
+
274
+ public static function getRawData()
275
+ {
276
+ return self::$installed;
277
+ }
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+
297
+ public static function reload($data)
298
+ {
299
+ self::$installed = $data;
300
+ self::$installedByVendor = array();
301
+ }
302
+
303
+
304
+
305
+
306
+ private static function getInstalled()
307
+ {
308
+ if (null === self::$canGetVendors) {
309
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
310
+ }
311
+
312
+ $installed = array();
313
+
314
+ if (self::$canGetVendors) {
315
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
316
+ if (isset(self::$installedByVendor[$vendorDir])) {
317
+ $installed[] = self::$installedByVendor[$vendorDir];
318
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
319
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
320
+ }
321
+ }
322
+ }
323
+
324
+ $installed[] = self::$installed;
325
+
326
+ return $installed;
327
+ }
328
+ }
vendor/composer/LICENSE CHANGED
@@ -1,21 +1,21 @@
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
6
- in the Software without restriction, including without limitation the rights
7
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- copies of the Software, and to permit persons to whom the Software is furnished
9
- to do so, subject to the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be included in all
12
- copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
- THE SOFTWARE.
21
-
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
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is furnished
9
+ to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ THE SOFTWARE.
21
+
vendor/composer/autoload_classmap.php CHANGED
@@ -1,16 +1,16 @@
1
- <?php
2
-
3
- // autoload_classmap.php @generated by Composer
4
-
5
- $vendorDir = dirname(dirname(__FILE__));
6
- $baseDir = dirname($vendorDir);
7
-
8
- return array(
9
- 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
- 'Dompdf\\Cpdf' => $vendorDir . '/dompdf/dompdf/lib/Cpdf.php',
11
- 'HTML5_Data' => $vendorDir . '/dompdf/dompdf/lib/html5lib/Data.php',
12
- 'HTML5_InputStream' => $vendorDir . '/dompdf/dompdf/lib/html5lib/InputStream.php',
13
- 'HTML5_Parser' => $vendorDir . '/dompdf/dompdf/lib/html5lib/Parser.php',
14
- 'HTML5_Tokenizer' => $vendorDir . '/dompdf/dompdf/lib/html5lib/Tokenizer.php',
15
- 'HTML5_TreeBuilder' => $vendorDir . '/dompdf/dompdf/lib/html5lib/TreeBuilder.php',
16
- );
1
+ <?php
2
+
3
+ // autoload_classmap.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
+ 'Dompdf\\Cpdf' => $vendorDir . '/dompdf/dompdf/lib/Cpdf.php',
11
+ 'HTML5_Data' => $vendorDir . '/dompdf/dompdf/lib/html5lib/Data.php',
12
+ 'HTML5_InputStream' => $vendorDir . '/dompdf/dompdf/lib/html5lib/InputStream.php',
13
+ 'HTML5_Parser' => $vendorDir . '/dompdf/dompdf/lib/html5lib/Parser.php',
14
+ 'HTML5_Tokenizer' => $vendorDir . '/dompdf/dompdf/lib/html5lib/Tokenizer.php',
15
+ 'HTML5_TreeBuilder' => $vendorDir . '/dompdf/dompdf/lib/html5lib/TreeBuilder.php',
16
+ );
vendor/composer/autoload_files.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_files.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
10
+ );
vendor/composer/autoload_namespaces.php CHANGED
@@ -1,10 +1,10 @@
1
- <?php
2
-
3
- // autoload_namespaces.php @generated by Composer
4
-
5
- $vendorDir = dirname(dirname(__FILE__));
6
- $baseDir = dirname($vendorDir);
7
-
8
- return array(
9
- 'Sabberworm\\CSS' => array($vendorDir . '/sabberworm/php-css-parser/lib'),
10
- );
1
+ <?php
2
+
3
+ // autoload_namespaces.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ 'Sabberworm\\CSS' => array($vendorDir . '/sabberworm/php-css-parser/lib'),
10
+ );
vendor/composer/autoload_psr4.php CHANGED
@@ -1,12 +1,13 @@
1
- <?php
2
-
3
- // autoload_psr4.php @generated by Composer
4
-
5
- $vendorDir = dirname(dirname(__FILE__));
6
- $baseDir = dirname($vendorDir);
7
-
8
- return array(
9
- 'Svg\\' => array($vendorDir . '/phenx/php-svg-lib/src/Svg'),
10
- 'FontLib\\' => array($vendorDir . '/phenx/php-font-lib/src/FontLib'),
11
- 'Dompdf\\' => array($vendorDir . '/dompdf/dompdf/src'),
12
- );
 
1
+ <?php
2
+
3
+ // autoload_psr4.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
10
+ 'Svg\\' => array($vendorDir . '/phenx/php-svg-lib/src/Svg'),
11
+ 'FontLib\\' => array($vendorDir . '/phenx/php-font-lib/src/FontLib'),
12
+ 'Dompdf\\' => array($vendorDir . '/dompdf/dompdf/src'),
13
+ );
vendor/composer/autoload_real.php CHANGED
@@ -1,57 +1,75 @@
1
- <?php
2
-
3
- // autoload_real.php @generated by Composer
4
-
5
- class ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af
6
- {
7
- private static $loader;
8
-
9
- public static function loadClassLoader($class)
10
- {
11
- if ('Composer\Autoload\ClassLoader' === $class) {
12
- require __DIR__ . '/ClassLoader.php';
13
- }
14
- }
15
-
16
- /**
17
- * @return \Composer\Autoload\ClassLoader
18
- */
19
- public static function getLoader()
20
- {
21
- if (null !== self::$loader) {
22
- return self::$loader;
23
- }
24
-
25
- require __DIR__ . '/platform_check.php';
26
-
27
- spl_autoload_register(array('ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af', 'loadClassLoader'), true, true);
28
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
29
- spl_autoload_unregister(array('ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af', 'loadClassLoader'));
30
-
31
- $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
- if ($useStaticLoader) {
33
- require __DIR__ . '/autoload_static.php';
34
-
35
- call_user_func(\Composer\Autoload\ComposerStaticInit91fa098344a2dea6316819c06b8931af::getInitializer($loader));
36
- } else {
37
- $map = require __DIR__ . '/autoload_namespaces.php';
38
- foreach ($map as $namespace => $path) {
39
- $loader->set($namespace, $path);
40
- }
41
-
42
- $map = require __DIR__ . '/autoload_psr4.php';
43
- foreach ($map as $namespace => $path) {
44
- $loader->setPsr4($namespace, $path);
45
- }
46
-
47
- $classMap = require __DIR__ . '/autoload_classmap.php';
48
- if ($classMap) {
49
- $loader->addClassMap($classMap);
50
- }
51
- }
52
-
53
- $loader->register(true);
54
-
55
- return $loader;
56
- }
57
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_real.php @generated by Composer
4
+
5
+ class ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af
6
+ {
7
+ private static $loader;
8
+
9
+ public static function loadClassLoader($class)
10
+ {
11
+ if ('Composer\Autoload\ClassLoader' === $class) {
12
+ require __DIR__ . '/ClassLoader.php';
13
+ }
14
+ }
15
+
16
+ /**
17
+ * @return \Composer\Autoload\ClassLoader
18
+ */
19
+ public static function getLoader()
20
+ {
21
+ if (null !== self::$loader) {
22
+ return self::$loader;
23
+ }
24
+
25
+ require __DIR__ . '/platform_check.php';
26
+
27
+ spl_autoload_register(array('ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af', 'loadClassLoader'), true, true);
28
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
+ spl_autoload_unregister(array('ComposerAutoloaderInit91fa098344a2dea6316819c06b8931af', 'loadClassLoader'));
30
+
31
+ $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
+ if ($useStaticLoader) {
33
+ require __DIR__ . '/autoload_static.php';
34
+
35
+ call_user_func(\Composer\Autoload\ComposerStaticInit91fa098344a2dea6316819c06b8931af::getInitializer($loader));
36
+ } else {
37
+ $map = require __DIR__ . '/autoload_namespaces.php';
38
+ foreach ($map as $namespace => $path) {
39
+ $loader->set($namespace, $path);
40
+ }
41
+
42
+ $map = require __DIR__ . '/autoload_psr4.php';
43
+ foreach ($map as $namespace => $path) {
44
+ $loader->setPsr4($namespace, $path);
45
+ }
46
+
47
+ $classMap = require __DIR__ . '/autoload_classmap.php';
48
+ if ($classMap) {
49
+ $loader->addClassMap($classMap);
50
+ }
51
+ }
52
+
53
+ $loader->register(true);
54
+
55
+ if ($useStaticLoader) {
56
+ $includeFiles = Composer\Autoload\ComposerStaticInit91fa098344a2dea6316819c06b8931af::$files;
57
+ } else {
58
+ $includeFiles = require __DIR__ . '/autoload_files.php';
59
+ }
60
+ foreach ($includeFiles as $fileIdentifier => $file) {
61
+ composerRequire91fa098344a2dea6316819c06b8931af($fileIdentifier, $file);
62
+ }
63
+
64
+ return $loader;
65
+ }
66
+ }
67
+
68
+ function composerRequire91fa098344a2dea6316819c06b8931af($fileIdentifier, $file)
69
+ {
70
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
71
+ require $file;
72
+
73
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
74
+ }
75
+ }
vendor/composer/autoload_static.php CHANGED
@@ -1,69 +1,78 @@
1
- <?php
2
-
3
- // autoload_static.php @generated by Composer
4
-
5
- namespace Composer\Autoload;
6
-
7
- class ComposerStaticInit91fa098344a2dea6316819c06b8931af
8
- {
9
- public static $prefixLengthsPsr4 = array (
10
- 'S' =>
11
- array (
12
- 'Svg\\' => 4,
13
- ),
14
- 'F' =>
15
- array (
16
- 'FontLib\\' => 8,
17
- ),
18
- 'D' =>
19
- array (
20
- 'Dompdf\\' => 7,
21
- ),
22
- );
23
-
24
- public static $prefixDirsPsr4 = array (
25
- 'Svg\\' =>
26
- array (
27
- 0 => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg',
28
- ),
29
- 'FontLib\\' =>
30
- array (
31
- 0 => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib',
32
- ),
33
- 'Dompdf\\' =>
34
- array (
35
- 0 => __DIR__ . '/..' . '/dompdf/dompdf/src',
36
- ),
37
- );
38
-
39
- public static $prefixesPsr0 = array (
40
- 'S' =>
41
- array (
42
- 'Sabberworm\\CSS' =>
43
- array (
44
- 0 => __DIR__ . '/..' . '/sabberworm/php-css-parser/lib',
45
- ),
46
- ),
47
- );
48
-
49
- public static $classMap = array (
50
- 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
51
- 'Dompdf\\Cpdf' => __DIR__ . '/..' . '/dompdf/dompdf/lib/Cpdf.php',
52
- 'HTML5_Data' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Data.php',
53
- 'HTML5_InputStream' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/InputStream.php',
54
- 'HTML5_Parser' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Parser.php',
55
- 'HTML5_Tokenizer' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Tokenizer.php',
56
- 'HTML5_TreeBuilder' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/TreeBuilder.php',
57
- );
58
-
59
- public static function getInitializer(ClassLoader $loader)
60
- {
61
- return \Closure::bind(function () use ($loader) {
62
- $loader->prefixLengthsPsr4 = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$prefixLengthsPsr4;
63
- $loader->prefixDirsPsr4 = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$prefixDirsPsr4;
64
- $loader->prefixesPsr0 = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$prefixesPsr0;
65
- $loader->classMap = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$classMap;
66
-
67
- }, null, ClassLoader::class);
68
- }
69
- }
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_static.php @generated by Composer
4
+
5
+ namespace Composer\Autoload;
6
+
7
+ class ComposerStaticInit91fa098344a2dea6316819c06b8931af
8
+ {
9
+ public static $files = array (
10
+ '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
11
+ );
12
+
13
+ public static $prefixLengthsPsr4 = array (
14
+ 'S' =>
15
+ array (
16
+ 'Symfony\\Polyfill\\Mbstring\\' => 26,
17
+ 'Svg\\' => 4,
18
+ ),
19
+ 'F' =>
20
+ array (
21
+ 'FontLib\\' => 8,
22
+ ),
23
+ 'D' =>
24
+ array (
25
+ 'Dompdf\\' => 7,
26
+ ),
27
+ );
28
+
29
+ public static $prefixDirsPsr4 = array (
30
+ 'Symfony\\Polyfill\\Mbstring\\' =>
31
+ array (
32
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
33
+ ),
34
+ 'Svg\\' =>
35
+ array (
36
+ 0 => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg',
37
+ ),
38
+ 'FontLib\\' =>
39
+ array (
40
+ 0 => __DIR__ . '/..' . '/phenx/php-font-lib/src/FontLib',
41
+ ),
42
+ 'Dompdf\\' =>
43
+ array (
44
+ 0 => __DIR__ . '/..' . '/dompdf/dompdf/src',
45
+ ),
46
+ );
47
+
48
+ public static $prefixesPsr0 = array (
49
+ 'S' =>
50
+ array (
51
+ 'Sabberworm\\CSS' =>
52
+ array (
53
+ 0 => __DIR__ . '/..' . '/sabberworm/php-css-parser/lib',
54
+ ),
55
+ ),
56
+ );
57
+
58
+ public static $classMap = array (
59
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
60
+ 'Dompdf\\Cpdf' => __DIR__ . '/..' . '/dompdf/dompdf/lib/Cpdf.php',
61
+ 'HTML5_Data' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Data.php',
62
+ 'HTML5_InputStream' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/InputStream.php',
63
+ 'HTML5_Parser' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Parser.php',
64
+ 'HTML5_Tokenizer' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Tokenizer.php',
65
+ 'HTML5_TreeBuilder' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/TreeBuilder.php',
66
+ );
67
+
68
+ public static function getInitializer(ClassLoader $loader)
69
+ {
70
+ return \Closure::bind(function () use ($loader) {
71
+ $loader->prefixLengthsPsr4 = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$prefixLengthsPsr4;
72
+ $loader->prefixDirsPsr4 = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$prefixDirsPsr4;
73
+ $loader->prefixesPsr0 = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$prefixesPsr0;
74
+ $loader->classMap = ComposerStaticInit91fa098344a2dea6316819c06b8931af::$classMap;
75
+
76
+ }, null, ClassLoader::class);
77
+ }
78
+ }
vendor/composer/installed.json CHANGED
@@ -1,224 +1,307 @@
1
- {
2
- "packages": [
3
- {
4
- "name": "dompdf/dompdf",
5
- "version": "v1.0.2",
6
- "version_normalized": "1.0.2.0",
7
- "source": {
8
- "type": "git",
9
- "url": "https://github.com/dompdf/dompdf.git",
10
- "reference": "8768448244967a46d6e67b891d30878e0e15d25c"
11
- },
12
- "dist": {
13
- "type": "zip",
14
- "url": "https://api.github.com/repos/dompdf/dompdf/zipball/8768448244967a46d6e67b891d30878e0e15d25c",
15
- "reference": "8768448244967a46d6e67b891d30878e0e15d25c",
16
- "shasum": ""
17
- },
18
- "require": {
19
- "ext-dom": "*",
20
- "ext-mbstring": "*",
21
- "phenx/php-font-lib": "^0.5.2",
22
- "phenx/php-svg-lib": "^0.3.3",
23
- "php": "^7.1 || ^8.0"
24
- },
25
- "require-dev": {
26
- "mockery/mockery": "^1.3",
27
- "phpunit/phpunit": "^7.5 || ^8 || ^9",
28
- "squizlabs/php_codesniffer": "^3.5"
29
- },
30
- "suggest": {
31
- "ext-gd": "Needed to process images",
32
- "ext-gmagick": "Improves image processing performance",
33
- "ext-imagick": "Improves image processing performance",
34
- "ext-zlib": "Needed for pdf stream compression"
35
- },
36
- "time": "2021-01-08T14:18:52+00:00",
37
- "type": "library",
38
- "extra": {
39
- "branch-alias": {
40
- "dev-develop": "0.7-dev"
41
- }
42
- },
43
- "installation-source": "dist",
44
- "autoload": {
45
- "psr-4": {
46
- "Dompdf\\": "src/"
47
- },
48
- "classmap": [
49
- "lib/"
50
- ]
51
- },
52
- "notification-url": "https://packagist.org/downloads/",
53
- "license": [
54
- "LGPL-2.1"
55
- ],
56
- "authors": [
57
- {
58
- "name": "Fabien Ménager",
59
- "email": "fabien.menager@gmail.com"
60
- },
61
- {
62
- "name": "Brian Sweeney",
63
- "email": "eclecticgeek@gmail.com"
64
- },
65
- {
66
- "name": "Gabriel Bull",
67
- "email": "me@gabrielbull.com"
68
- }
69
- ],
70
- "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
71
- "homepage": "https://github.com/dompdf/dompdf",
72
- "support": {
73
- "issues": "https://github.com/dompdf/dompdf/issues",
74
- "source": "https://github.com/dompdf/dompdf/tree/v1.0.2"
75
- },
76
- "install-path": "../dompdf/dompdf"
77
- },
78
- {
79
- "name": "phenx/php-font-lib",
80
- "version": "0.5.2",
81
- "version_normalized": "0.5.2.0",
82
- "source": {
83
- "type": "git",
84
- "url": "https://github.com/PhenX/php-font-lib.git",
85
- "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8"
86
- },
87
- "dist": {
88
- "type": "zip",
89
- "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8",
90
- "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8",
91
- "shasum": ""
92
- },
93
- "require-dev": {
94
- "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7"
95
- },
96
- "time": "2020-03-08T15:31:32+00:00",
97
- "type": "library",
98
- "installation-source": "dist",
99
- "autoload": {
100
- "psr-4": {
101
- "FontLib\\": "src/FontLib"
102
- }
103
- },
104
- "notification-url": "https://packagist.org/downloads/",
105
- "license": [
106
- "LGPL-3.0"
107
- ],
108
- "authors": [
109
- {
110
- "name": "Fabien Ménager",
111
- "email": "fabien.menager@gmail.com"
112
- }
113
- ],
114
- "description": "A library to read, parse, export and make subsets of different types of font files.",
115
- "homepage": "https://github.com/PhenX/php-font-lib",
116
- "support": {
117
- "issues": "https://github.com/PhenX/php-font-lib/issues",
118
- "source": "https://github.com/PhenX/php-font-lib/tree/0.5.2"
119
- },
120
- "install-path": "../phenx/php-font-lib"
121
- },
122
- {
123
- "name": "phenx/php-svg-lib",
124
- "version": "v0.3.3",
125
- "version_normalized": "0.3.3.0",
126
- "source": {
127
- "type": "git",
128
- "url": "https://github.com/PhenX/php-svg-lib.git",
129
- "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32"
130
- },
131
- "dist": {
132
- "type": "zip",
133
- "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
134
- "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
135
- "shasum": ""
136
- },
137
- "require": {
138
- "sabberworm/php-css-parser": "^8.3"
139
- },
140
- "require-dev": {
141
- "phpunit/phpunit": "^5.5|^6.5"
142
- },
143
- "time": "2019-09-11T20:02:13+00:00",
144
- "type": "library",
145
- "installation-source": "dist",
146
- "autoload": {
147
- "psr-4": {
148
- "Svg\\": "src/Svg"
149
- }
150
- },
151
- "notification-url": "https://packagist.org/downloads/",
152
- "license": [
153
- "LGPL-3.0"
154
- ],
155
- "authors": [
156
- {
157
- "name": "Fabien Ménager",
158
- "email": "fabien.menager@gmail.com"
159
- }
160
- ],
161
- "description": "A library to read, parse and export to PDF SVG files.",
162
- "homepage": "https://github.com/PhenX/php-svg-lib",
163
- "support": {
164
- "issues": "https://github.com/PhenX/php-svg-lib/issues",
165
- "source": "https://github.com/PhenX/php-svg-lib/tree/master"
166
- },
167
- "install-path": "../phenx/php-svg-lib"
168
- },
169
- {
170
- "name": "sabberworm/php-css-parser",
171
- "version": "8.3.1",
172
- "version_normalized": "8.3.1.0",
173
- "source": {
174
- "type": "git",
175
- "url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
176
- "reference": "d217848e1396ef962fb1997cf3e2421acba7f796"
177
- },
178
- "dist": {
179
- "type": "zip",
180
- "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796",
181
- "reference": "d217848e1396ef962fb1997cf3e2421acba7f796",
182
- "shasum": ""
183
- },
184
- "require": {
185
- "php": ">=5.3.2"
186
- },
187
- "require-dev": {
188
- "codacy/coverage": "^1.4",
189
- "phpunit/phpunit": "~4.8"
190
- },
191
- "time": "2020-06-01T09:10:00+00:00",
192
- "type": "library",
193
- "installation-source": "dist",
194
- "autoload": {
195
- "psr-0": {
196
- "Sabberworm\\CSS": "lib/"
197
- }
198
- },
199
- "notification-url": "https://packagist.org/downloads/",
200
- "license": [
201
- "MIT"
202
- ],
203
- "authors": [
204
- {
205
- "name": "Raphael Schweikert"
206
- }
207
- ],
208
- "description": "Parser for CSS Files written in PHP",
209
- "homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser",
210
- "keywords": [
211
- "css",
212
- "parser",
213
- "stylesheet"
214
- ],
215
- "support": {
216
- "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues",
217
- "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.3.1"
218
- },
219
- "install-path": "../sabberworm/php-css-parser"
220
- }
221
- ],
222
- "dev": true,
223
- "dev-package-names": []
224
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "packages": [
3
+ {
4
+ "name": "dompdf/dompdf",
5
+ "version": "v1.0.2",
6
+ "version_normalized": "1.0.2.0",
7
+ "source": {
8
+ "type": "git",
9
+ "url": "https://github.com/dompdf/dompdf.git",
10
+ "reference": "8768448244967a46d6e67b891d30878e0e15d25c"
11
+ },
12
+ "dist": {
13
+ "type": "zip",
14
+ "url": "https://api.github.com/repos/dompdf/dompdf/zipball/8768448244967a46d6e67b891d30878e0e15d25c",
15
+ "reference": "8768448244967a46d6e67b891d30878e0e15d25c",
16
+ "shasum": ""
17
+ },
18
+ "require": {
19
+ "ext-dom": "*",
20
+ "ext-mbstring": "*",
21
+ "phenx/php-font-lib": "^0.5.2",
22
+ "phenx/php-svg-lib": "^0.3.3",
23
+ "php": "^7.1 || ^8.0"
24
+ },
25
+ "require-dev": {
26
+ "mockery/mockery": "^1.3",
27
+ "phpunit/phpunit": "^7.5 || ^8 || ^9",
28
+ "squizlabs/php_codesniffer": "^3.5"
29
+ },
30
+ "suggest": {
31
+ "ext-gd": "Needed to process images",
32
+ "ext-gmagick": "Improves image processing performance",
33
+ "ext-imagick": "Improves image processing performance",
34
+ "ext-zlib": "Needed for pdf stream compression"
35
+ },
36
+ "time": "2021-01-08T14:18:52+00:00",
37
+ "type": "library",
38
+ "extra": {
39
+ "branch-alias": {
40
+ "dev-develop": "0.7-dev"
41
+ }
42
+ },
43
+ "installation-source": "dist",
44
+ "autoload": {
45
+ "psr-4": {
46
+ "Dompdf\\": "src/"
47
+ },
48
+ "classmap": [
49
+ "lib/"
50
+ ]
51
+ },
52
+ "notification-url": "https://packagist.org/downloads/",
53
+ "license": [
54
+ "LGPL-2.1"
55
+ ],
56
+ "authors": [
57
+ {
58
+ "name": "Fabien Ménager",
59
+ "email": "fabien.menager@gmail.com"
60
+ },
61
+ {
62
+ "name": "Brian Sweeney",
63
+ "email": "eclecticgeek@gmail.com"
64
+ },
65
+ {
66
+ "name": "Gabriel Bull",
67
+ "email": "me@gabrielbull.com"
68
+ }
69
+ ],
70
+ "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
71
+ "homepage": "https://github.com/dompdf/dompdf",
72
+ "support": {
73
+ "issues": "https://github.com/dompdf/dompdf/issues",
74
+ "source": "https://github.com/dompdf/dompdf/tree/v1.0.2"
75
+ },
76
+ "install-path": "../dompdf/dompdf"
77
+ },
78
+ {
79
+ "name": "phenx/php-font-lib",
80
+ "version": "0.5.2",
81
+ "version_normalized": "0.5.2.0",
82
+ "source": {
83
+ "type": "git",
84
+ "url": "https://github.com/PhenX/php-font-lib.git",
85
+ "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8"
86
+ },
87
+ "dist": {
88
+ "type": "zip",
89
+ "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8",
90
+ "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8",
91
+ "shasum": ""
92
+ },
93
+ "require-dev": {
94
+ "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7"
95
+ },
96
+ "time": "2020-03-08T15:31:32+00:00",
97
+ "type": "library",
98
+ "installation-source": "dist",
99
+ "autoload": {
100
+ "psr-4": {
101
+ "FontLib\\": "src/FontLib"
102
+ }
103
+ },
104
+ "notification-url": "https://packagist.org/downloads/",
105
+ "license": [
106
+ "LGPL-3.0"
107
+ ],
108
+ "authors": [
109
+ {
110
+ "name": "Fabien Ménager",
111
+ "email": "fabien.menager@gmail.com"
112
+ }
113
+ ],
114
+ "description": "A library to read, parse, export and make subsets of different types of font files.",
115
+ "homepage": "https://github.com/PhenX/php-font-lib",
116
+ "support": {
117
+ "issues": "https://github.com/PhenX/php-font-lib/issues",
118
+ "source": "https://github.com/PhenX/php-font-lib/tree/0.5.2"
119
+ },
120
+ "install-path": "../phenx/php-font-lib"
121
+ },
122
+ {
123
+ "name": "phenx/php-svg-lib",
124
+ "version": "v0.3.3",
125
+ "version_normalized": "0.3.3.0",
126
+ "source": {
127
+ "type": "git",
128
+ "url": "https://github.com/PhenX/php-svg-lib.git",
129
+ "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32"
130
+ },
131
+ "dist": {
132
+ "type": "zip",
133
+ "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
134
+ "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
135
+ "shasum": ""
136
+ },
137
+ "require": {
138
+ "sabberworm/php-css-parser": "^8.3"
139
+ },
140
+ "require-dev": {
141
+ "phpunit/phpunit": "^5.5|^6.5"
142
+ },
143
+ "time": "2019-09-11T20:02:13+00:00",
144
+ "type": "library",
145
+ "installation-source": "dist",
146
+ "autoload": {
147
+ "psr-4": {
148
+ "Svg\\": "src/Svg"
149
+ }
150
+ },
151
+ "notification-url": "https://packagist.org/downloads/",
152
+ "license": [
153
+ "LGPL-3.0"
154
+ ],
155
+ "authors": [
156
+ {
157
+ "name": "Fabien Ménager",
158
+ "email": "fabien.menager@gmail.com"
159
+ }
160
+ ],
161
+ "description": "A library to read, parse and export to PDF SVG files.",
162
+ "homepage": "https://github.com/PhenX/php-svg-lib",
163
+ "support": {
164
+ "issues": "https://github.com/PhenX/php-svg-lib/issues",
165
+ "source": "https://github.com/PhenX/php-svg-lib/tree/master"
166
+ },
167
+ "install-path": "../phenx/php-svg-lib"
168
+ },
169
+ {
170
+ "name": "sabberworm/php-css-parser",
171
+ "version": "8.3.1",
172
+ "version_normalized": "8.3.1.0",
173
+ "source": {
174
+ "type": "git",
175
+ "url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
176
+ "reference": "d217848e1396ef962fb1997cf3e2421acba7f796"
177
+ },
178
+ "dist": {
179
+ "type": "zip",
180
+ "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796",
181
+ "reference": "d217848e1396ef962fb1997cf3e2421acba7f796",
182
+ "shasum": ""
183
+ },
184
+ "require": {
185
+ "php": ">=5.3.2"
186
+ },
187
+ "require-dev": {
188
+ "codacy/coverage": "^1.4",
189
+ "phpunit/phpunit": "~4.8"
190
+ },
191
+ "time": "2020-06-01T09:10:00+00:00",
192
+ "type": "library",
193
+ "installation-source": "dist",
194
+ "autoload": {
195
+ "psr-0": {
196
+ "Sabberworm\\CSS": "lib/"
197
+ }
198
+ },
199
+ "notification-url": "https://packagist.org/downloads/",
200
+ "license": [
201
+ "MIT"
202
+ ],
203
+ "authors": [
204
+ {
205
+ "name": "Raphael Schweikert"
206
+ }
207
+ ],
208
+ "description": "Parser for CSS Files written in PHP",
209
+ "homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser",
210
+ "keywords": [
211
+ "css",
212
+ "parser",
213
+ "stylesheet"
214
+ ],
215
+ "support": {
216
+ "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues",
217
+ "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.3.1"
218
+ },
219
+ "install-path": "../sabberworm/php-css-parser"
220
+ },
221
+ {
222
+ "name": "symfony/polyfill-mbstring",
223
+ "version": "v1.20.0",
224
+ "version_normalized": "1.20.0.0",
225
+ "source": {
226
+ "type": "git",
227
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
228
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
229
+ },
230
+ "dist": {
231
+ "type": "zip",
232
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
233
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
234
+ "shasum": ""
235
+ },
236
+ "require": {
237
+ "php": ">=7.1"
238
+ },
239
+ "suggest": {
240
+ "ext-mbstring": "For best performance"
241
+ },
242
+ "time": "2020-10-23T14:02:19+00:00",
243
+ "type": "library",
244
+ "extra": {
245
+ "branch-alias": {
246
+ "dev-main": "1.20-dev"
247
+ },
248
+ "thanks": {
249
+ "name": "symfony/polyfill",
250
+ "url": "https://github.com/symfony/polyfill"
251
+ }
252
+ },
253
+ "installation-source": "dist",
254
+ "autoload": {
255
+ "psr-4": {
256
+ "Symfony\\Polyfill\\Mbstring\\": ""
257
+ },
258
+ "files": [
259
+ "bootstrap.php"
260
+ ]
261
+ },
262
+ "notification-url": "https://packagist.org/downloads/",
263
+ "license": [
264
+ "MIT"
265
+ ],
266
+ "authors": [
267
+ {
268
+ "name": "Nicolas Grekas",
269
+ "email": "p@tchwork.com"
270
+ },
271
+ {
272
+ "name": "Symfony Community",
273
+ "homepage": "https://symfony.com/contributors"
274
+ }
275
+ ],
276
+ "description": "Symfony polyfill for the Mbstring extension",
277
+ "homepage": "https://symfony.com",
278
+ "keywords": [
279
+ "compatibility",
280
+ "mbstring",
281
+ "polyfill",
282
+ "portable",
283
+ "shim"
284
+ ],
285
+ "support": {
286
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0"
287
+ },
288
+ "funding": [
289
+ {
290
+ "url": "https://symfony.com/sponsor",
291
+ "type": "custom"
292
+ },
293
+ {
294
+ "url": "https://github.com/fabpot",
295
+ "type": "github"
296
+ },
297
+ {
298
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
299
+ "type": "tidelift"
300
+ }
301
+ ],
302
+ "install-path": "../symfony/polyfill-mbstring"
303
+ }
304
+ ],
305
+ "dev": true,
306
+ "dev-package-names": []
307
+ }
vendor/composer/installed.php CHANGED
@@ -1,60 +1,69 @@
1
- <?php return array (
2
- 'root' =>
3
- array (
4
- 'pretty_version' => 'dev-master',
5
- 'version' => 'dev-master',
6
- 'aliases' =>
7
- array (
8
- ),
9
- 'reference' => '9315d076090b6d7a2b7a28beb869abbd855d6a10',
10
- 'name' => '__root__',
11
- ),
12
- 'versions' =>
13
- array (
14
- '__root__' =>
15
- array (
16
- 'pretty_version' => 'dev-master',
17
- 'version' => 'dev-master',
18
- 'aliases' =>
19
- array (
20
- ),
21
- 'reference' => '9315d076090b6d7a2b7a28beb869abbd855d6a10',
22
- ),
23
- 'dompdf/dompdf' =>
24
- array (
25
- 'pretty_version' => 'v1.0.2',
26
- 'version' => '1.0.2.0',
27
- 'aliases' =>
28
- array (
29
- ),
30
- 'reference' => '8768448244967a46d6e67b891d30878e0e15d25c',
31
- ),
32
- 'phenx/php-font-lib' =>
33
- array (
34
- 'pretty_version' => '0.5.2',
35
- 'version' => '0.5.2.0',
36
- 'aliases' =>
37
- array (
38
- ),
39
- 'reference' => 'ca6ad461f032145fff5971b5985e5af9e7fa88d8',
40
- ),
41
- 'phenx/php-svg-lib' =>
42
- array (
43
- 'pretty_version' => 'v0.3.3',
44
- 'version' => '0.3.3.0',
45
- 'aliases' =>
46
- array (
47
- ),
48
- 'reference' => '5fa61b65e612ce1ae15f69b3d223cb14ecc60e32',
49
- ),
50
- 'sabberworm/php-css-parser' =>
51
- array (
52
- 'pretty_version' => '8.3.1',
53
- 'version' => '8.3.1.0',
54
- 'aliases' =>
55
- array (
56
- ),
57
- 'reference' => 'd217848e1396ef962fb1997cf3e2421acba7f796',
58
- ),
59
- ),
60
- );
 
 
 
 
 
 
 
 
 
1
+ <?php return array (
2
+ 'root' =>
3
+ array (
4
+ 'pretty_version' => 'dev-master',
5
+ 'version' => 'dev-master',
6
+ 'aliases' =>
7
+ array (
8
+ ),
9
+ 'reference' => '0ff9b86fd28a59488d9b215bd51e57198655c7b9',
10
+ 'name' => '__root__',
11
+ ),
12
+ 'versions' =>
13
+ array (
14
+ '__root__' =>
15
+ array (
16
+ 'pretty_version' => 'dev-master',
17
+ 'version' => 'dev-master',
18
+ 'aliases' =>
19
+ array (
20
+ ),
21
+ 'reference' => '0ff9b86fd28a59488d9b215bd51e57198655c7b9',
22
+ ),
23
+ 'dompdf/dompdf' =>
24
+ array (
25
+ 'pretty_version' => 'v1.0.2',
26
+ 'version' => '1.0.2.0',
27
+ 'aliases' =>
28
+ array (
29
+ ),
30
+ 'reference' => '8768448244967a46d6e67b891d30878e0e15d25c',
31
+ ),
32
+ 'phenx/php-font-lib' =>
33
+ array (
34
+ 'pretty_version' => '0.5.2',
35
+ 'version' => '0.5.2.0',
36
+ 'aliases' =>
37
+ array (
38
+ ),
39
+ 'reference' => 'ca6ad461f032145fff5971b5985e5af9e7fa88d8',
40
+ ),
41
+ 'phenx/php-svg-lib' =>
42
+ array (
43
+ 'pretty_version' => 'v0.3.3',
44
+ 'version' => '0.3.3.0',
45
+ 'aliases' =>
46
+ array (
47
+ ),
48
+ 'reference' => '5fa61b65e612ce1ae15f69b3d223cb14ecc60e32',
49
+ ),
50
+ 'sabberworm/php-css-parser' =>
51
+ array (
52
+ 'pretty_version' => '8.3.1',
53
+ 'version' => '8.3.1.0',
54
+ 'aliases' =>
55
+ array (
56
+ ),
57
+ 'reference' => 'd217848e1396ef962fb1997cf3e2421acba7f796',
58
+ ),
59
+ 'symfony/polyfill-mbstring' =>
60
+ array (
61
+ 'pretty_version' => 'v1.20.0',
62
+ 'version' => '1.20.0.0',
63
+ 'aliases' =>
64
+ array (
65
+ ),
66
+ 'reference' => '39d483bdf39be819deabf04ec872eb0b2410b531',
67
+ ),
68
+ ),
69
+ );
vendor/composer/platform_check.php CHANGED
@@ -1,26 +1,26 @@
1
- <?php
2
-
3
- // platform_check.php @generated by Composer
4
-
5
- $issues = array();
6
-
7
- if (!(PHP_VERSION_ID >= 70100)) {
8
- $issues[] = 'Your Composer dependencies require a PHP version ">= 7.1.0". You are running ' . PHP_VERSION . '.';
9
- }
10
-
11
- if ($issues) {
12
- if (!headers_sent()) {
13
- header('HTTP/1.1 500 Internal Server Error');
14
- }
15
- if (!ini_get('display_errors')) {
16
- if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
17
- fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
18
- } elseif (!headers_sent()) {
19
- echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
20
- }
21
- }
22
- trigger_error(
23
- 'Composer detected issues in your platform: ' . implode(' ', $issues),
24
- E_USER_ERROR
25
- );
26
- }
1
+ <?php
2
+
3
+ // platform_check.php @generated by Composer
4
+
5
+ $issues = array();
6
+
7
+ if (!(PHP_VERSION_ID >= 70100)) {
8
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 7.1.0". You are running ' . PHP_VERSION . '.';
9
+ }
10
+
11
+ if ($issues) {
12
+ if (!headers_sent()) {
13
+ header('HTTP/1.1 500 Internal Server Error');
14
+ }
15
+ if (!ini_get('display_errors')) {
16
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
17
+ fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
18
+ } elseif (!headers_sent()) {
19
+ echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
20
+ }
21
+ }
22
+ trigger_error(
23
+ 'Composer detected issues in your platform: ' . implode(' ', $issues),
24
+ E_USER_ERROR
25
+ );
26
+ }
vendor/symfony/polyfill-mbstring/LICENSE ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright (c) 2015-2019 Fabien Potencier
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is furnished
8
+ to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
vendor/symfony/polyfill-mbstring/Mbstring.php ADDED
@@ -0,0 +1,846 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Symfony package.
5
+ *
6
+ * (c) Fabien Potencier <fabien@symfony.com>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Symfony\Polyfill\Mbstring;
13
+
14
+ /**
15
+ * Partial mbstring implementation in PHP, iconv based, UTF-8 centric.
16
+ *
17
+ * Implemented:
18
+ * - mb_chr - Returns a specific character from its Unicode code point
19
+ * - mb_convert_encoding - Convert character encoding
20
+ * - mb_convert_variables - Convert character code in variable(s)
21
+ * - mb_decode_mimeheader - Decode string in MIME header field
22
+ * - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED
23
+ * - mb_decode_numericentity - Decode HTML numeric string reference to character
24
+ * - mb_encode_numericentity - Encode character to HTML numeric string reference
25
+ * - mb_convert_case - Perform case folding on a string
26
+ * - mb_detect_encoding - Detect character encoding
27
+ * - mb_get_info - Get internal settings of mbstring
28
+ * - mb_http_input - Detect HTTP input character encoding
29
+ * - mb_http_output - Set/Get HTTP output character encoding
30
+ * - mb_internal_encoding - Set/Get internal character encoding
31
+ * - mb_list_encodings - Returns an array of all supported encodings
32
+ * - mb_ord - Returns the Unicode code point of a character
33
+ * - mb_output_handler - Callback function converts character encoding in output buffer
34
+ * - mb_scrub - Replaces ill-formed byte sequences with substitute characters
35
+ * - mb_strlen - Get string length
36
+ * - mb_strpos - Find position of first occurrence of string in a string
37
+ * - mb_strrpos - Find position of last occurrence of a string in a string
38
+ * - mb_str_split - Convert a string to an array
39
+ * - mb_strtolower - Make a string lowercase
40
+ * - mb_strtoupper - Make a string uppercase
41
+ * - mb_substitute_character - Set/Get substitution character
42
+ * - mb_substr - Get part of string
43
+ * - mb_stripos - Finds position of first occurrence of a string within another, case insensitive
44
+ * - mb_stristr - Finds first occurrence of a string within another, case insensitive
45
+ * - mb_strrchr - Finds the last occurrence of a character in a string within another
46
+ * - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive
47
+ * - mb_strripos - Finds position of last occurrence of a string within another, case insensitive
48
+ * - mb_strstr - Finds first occurrence of a string within another
49
+ * - mb_strwidth - Return width of string
50
+ * - mb_substr_count - Count the number of substring occurrences
51
+ *
52
+ * Not implemented:
53
+ * - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
54
+ * - mb_ereg_* - Regular expression with multibyte support
55
+ * - mb_parse_str - Parse GET/POST/COOKIE data and set global variable
56
+ * - mb_preferred_mime_name - Get MIME charset string
57
+ * - mb_regex_encoding - Returns current encoding for multibyte regex as string
58
+ * - mb_regex_set_options - Set/Get the default options for mbregex functions
59
+ * - mb_send_mail - Send encoded mail
60
+ * - mb_split - Split multibyte string using regular expression
61
+ * - mb_strcut - Get part of string
62
+ * - mb_strimwidth - Get truncated string with specified width
63
+ *
64
+ * @author Nicolas Grekas <p@tchwork.com>
65
+ *
66
+ * @internal
67
+ */
68
+ final class Mbstring
69
+ {
70
+ const MB_CASE_FOLD = PHP_INT_MAX;
71
+
72
+ private static $encodingList = array('ASCII', 'UTF-8');
73
+ private static $language = 'neutral';
74
+ private static $internalEncoding = 'UTF-8';
75
+ private static $caseFold = array(
76
+ array('µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"),
77
+ array('μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'),
78
+ );
79
+
80
+ public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null)
81
+ {
82
+ if (\is_array($fromEncoding) || false !== strpos($fromEncoding, ',')) {
83
+ $fromEncoding = self::mb_detect_encoding($s, $fromEncoding);
84
+ } else {
85
+ $fromEncoding = self::getEncoding($fromEncoding);
86
+ }
87
+
88
+ $toEncoding = self::getEncoding($toEncoding);
89
+
90
+ if ('BASE64' === $fromEncoding) {
91
+ $s = base64_decode($s);
92
+ $fromEncoding = $toEncoding;
93
+ }
94
+
95
+ if ('BASE64' === $toEncoding) {
96
+ return base64_encode($s);
97
+ }
98
+
99
+ if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) {
100
+ if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) {
101
+ $fromEncoding = 'Windows-1252';
102
+ }
103
+ if ('UTF-8' !== $fromEncoding) {
104
+ $s = iconv($fromEncoding, 'UTF-8//IGNORE', $s);
105
+ }
106
+
107
+ return preg_replace_callback('/[\x80-\xFF]+/', array(__CLASS__, 'html_encoding_callback'), $s);
108
+ }
109
+
110
+ if ('HTML-ENTITIES' === $fromEncoding) {
111
+ $s = html_entity_decode($s, ENT_COMPAT, 'UTF-8');
112
+ $fromEncoding = 'UTF-8';
113
+ }
114
+
115
+ return iconv($fromEncoding, $toEncoding.'//IGNORE', $s);
116
+ }
117
+
118
+ public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars)
119
+ {
120
+ $ok = true;
121
+ array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
122
+ if (false === $v = Mbstring::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
123
+ $ok = false;
124
+ }
125
+ });
126
+
127
+ return $ok ? $fromEncoding : false;
128
+ }
129
+
130
+ public static function mb_decode_mimeheader($s)
131
+ {
132
+ return iconv_mime_decode($s, 2, self::$internalEncoding);
133
+ }
134
+
135
+ public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null)
136
+ {
137
+ trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', E_USER_WARNING);
138
+ }
139
+
140
+ public static function mb_decode_numericentity($s, $convmap, $encoding = null)
141
+ {
142
+ if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
143
+ trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
144
+
145
+ return null;
146
+ }
147
+
148
+ if (!\is_array($convmap) || !$convmap) {
149
+ return false;
150
+ }
151
+
152
+ if (null !== $encoding && !\is_scalar($encoding)) {
153
+ trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
154
+
155
+ return ''; // Instead of null (cf. mb_encode_numericentity).
156
+ }
157
+
158
+ $s = (string) $s;
159
+ if ('' === $s) {
160
+ return '';
161
+ }
162
+
163
+ $encoding = self::getEncoding($encoding);
164
+
165
+ if ('UTF-8' === $encoding) {
166
+ $encoding = null;
167
+ if (!preg_match('//u', $s)) {
168
+ $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
169
+ }
170
+ } else {
171
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
172
+ }
173
+
174
+ $cnt = floor(\count($convmap) / 4) * 4;
175
+
176
+ for ($i = 0; $i < $cnt; $i += 4) {
177
+ // collector_decode_htmlnumericentity ignores $convmap[$i + 3]
178
+ $convmap[$i] += $convmap[$i + 2];
179
+ $convmap[$i + 1] += $convmap[$i + 2];
180
+ }
181
+
182
+ $s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) {
183
+ $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1];
184
+ for ($i = 0; $i < $cnt; $i += 4) {
185
+ if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) {
186
+ return Mbstring::mb_chr($c - $convmap[$i + 2]);
187
+ }
188
+ }
189
+
190
+ return $m[0];
191
+ }, $s);
192
+
193
+ if (null === $encoding) {
194
+ return $s;
195
+ }
196
+
197
+ return iconv('UTF-8', $encoding.'//IGNORE', $s);
198
+ }
199
+
200
+ public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false)
201
+ {
202
+ if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
203
+ trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
204
+
205
+ return null;
206
+ }
207
+
208
+ if (!\is_array($convmap) || !$convmap) {
209
+ return false;
210
+ }
211
+
212
+ if (null !== $encoding && !\is_scalar($encoding)) {
213
+ trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
214
+
215
+ return null; // Instead of '' (cf. mb_decode_numericentity).
216
+ }
217
+
218
+ if (null !== $is_hex && !\is_scalar($is_hex)) {
219
+ trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', E_USER_WARNING);
220
+
221
+ return null;
222
+ }
223
+
224
+ $s = (string) $s;
225
+ if ('' === $s) {
226
+ return '';
227
+ }
228
+
229
+ $encoding = self::getEncoding($encoding);
230
+
231
+ if ('UTF-8' === $encoding) {
232
+ $encoding = null;
233
+ if (!preg_match('//u', $s)) {
234
+ $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
235
+ }
236
+ } else {
237
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
238
+ }
239
+
240
+ static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
241
+
242
+ $cnt = floor(\count($convmap) / 4) * 4;
243
+ $i = 0;
244
+ $len = \strlen($s);
245
+ $result = '';
246
+
247
+ while ($i < $len) {
248
+ $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
249
+ $uchr = substr($s, $i, $ulen);
250
+ $i += $ulen;
251
+ $c = self::mb_ord($uchr);
252
+
253
+ for ($j = 0; $j < $cnt; $j += 4) {
254
+ if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) {
255
+ $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3];
256
+ $result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';';
257
+ continue 2;
258
+ }
259
+ }
260
+ $result .= $uchr;
261
+ }
262
+
263
+ if (null === $encoding) {
264
+ return $result;
265
+ }
266
+
267
+ return iconv('UTF-8', $encoding.'//IGNORE', $result);
268
+ }
269
+
270
+ public static function mb_convert_case($s, $mode, $encoding = null)
271
+ {
272
+ $s = (string) $s;
273
+ if ('' === $s) {
274
+ return '';
275
+ }
276
+
277
+ $encoding = self::getEncoding($encoding);
278
+
279
+ if ('UTF-8' === $encoding) {
280
+ $encoding = null;
281
+ if (!preg_match('//u', $s)) {
282
+ $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
283
+ }
284
+ } else {
285
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
286
+ }
287
+
288
+ if (MB_CASE_TITLE == $mode) {
289
+ static $titleRegexp = null;
290
+ if (null === $titleRegexp) {
291
+ $titleRegexp = self::getData('titleCaseRegexp');
292
+ }
293
+ $s = preg_replace_callback($titleRegexp, array(__CLASS__, 'title_case'), $s);
294
+ } else {
295
+ if (MB_CASE_UPPER == $mode) {
296
+ static $upper = null;
297
+ if (null === $upper) {
298
+ $upper = self::getData('upperCase');
299
+ }
300
+ $map = $upper;
301
+ } else {
302
+ if (self::MB_CASE_FOLD === $mode) {
303
+ $s = str_replace(self::$caseFold[0], self::$caseFold[1], $s);
304
+ }
305
+
306
+ static $lower = null;
307
+ if (null === $lower) {
308
+ $lower = self::getData('lowerCase');
309
+ }
310
+ $map = $lower;
311
+ }
312
+
313
+ static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
314
+
315
+ $i = 0;
316
+ $len = \strlen($s);
317
+
318
+ while ($i < $len) {
319
+ $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
320
+ $uchr = substr($s, $i, $ulen);
321
+ $i += $ulen;
322
+
323
+ if (isset($map[$uchr])) {
324
+ $uchr = $map[$uchr];
325
+ $nlen = \strlen($uchr);
326
+
327
+ if ($nlen == $ulen) {
328
+ $nlen = $i;
329
+ do {
330
+ $s[--$nlen] = $uchr[--$ulen];
331
+ } while ($ulen);
332
+ } else {
333
+ $s = substr_replace($s, $uchr, $i - $ulen, $ulen);
334
+ $len += $nlen - $ulen;
335
+ $i += $nlen - $ulen;
336
+ }
337
+ }
338
+ }
339
+ }
340
+
341
+ if (null === $encoding) {
342
+ return $s;
343
+ }
344
+
345
+ return iconv('UTF-8', $encoding.'//IGNORE', $s);
346
+ }
347
+
348
+ public static function mb_internal_encoding($encoding = null)
349
+ {
350
+ if (null === $encoding) {
351
+ return self::$internalEncoding;
352
+ }
353
+
354
+ $encoding = self::getEncoding($encoding);
355
+
356
+ if ('UTF-8' === $encoding || false !== @iconv($encoding, $encoding, ' ')) {
357
+ self::$internalEncoding = $encoding;
358
+
359
+ return true;
360
+ }
361
+
362
+ return false;
363
+ }
364
+
365
+ public static function mb_language($lang = null)
366
+ {
367
+ if (null === $lang) {
368
+ return self::$language;
369
+ }
370
+
371
+ switch ($lang = strtolower($lang)) {
372
+ case 'uni':
373
+ case 'neutral':
374
+ self::$language = $lang;
375
+
376
+ return true;
377
+ }
378
+
379
+ return false;
380
+ }
381
+
382
+ public static function mb_list_encodings()
383
+ {
384
+ return array('UTF-8');
385
+ }
386
+
387
+ public static function mb_encoding_aliases($encoding)
388
+ {
389
+ switch (strtoupper($encoding)) {
390
+ case 'UTF8':
391
+ case 'UTF-8':
392
+ return array('utf8');
393
+ }
394
+
395
+ return false;
396
+ }
397
+
398
+ public static function mb_check_encoding($var = null, $encoding = null)
399
+ {
400
+ if (null === $encoding) {
401
+ if (null === $var) {
402
+ return false;
403
+ }
404
+ $encoding = self::$internalEncoding;
405
+ }
406
+
407
+ return self::mb_detect_encoding($var, array($encoding)) || false !== @iconv($encoding, $encoding, $var);
408
+ }
409
+
410
+ public static function mb_detect_encoding($str, $encodingList = null, $strict = false)
411
+ {
412
+ if (null === $encodingList) {
413
+ $encodingList = self::$encodingList;
414
+ } else {
415
+ if (!\is_array($encodingList)) {
416
+ $encodingList = array_map('trim', explode(',', $encodingList));
417
+ }
418
+ $encodingList = array_map('strtoupper', $encodingList);
419
+ }
420
+
421
+ foreach ($encodingList as $enc) {
422
+ switch ($enc) {
423
+ case 'ASCII':
424
+ if (!preg_match('/[\x80-\xFF]/', $str)) {
425
+ return $enc;
426
+ }
427
+ break;
428
+
429
+ case 'UTF8':
430
+ case 'UTF-8':
431
+ if (preg_match('//u', $str)) {
432
+ return 'UTF-8';
433
+ }
434
+ break;
435
+
436
+ default:
437
+ if (0 === strncmp($enc, 'ISO-8859-', 9)) {
438
+ return $enc;
439
+ }
440
+ }
441
+ }
442
+
443
+ return false;
444
+ }
445
+
446
+ public static function mb_detect_order($encodingList = null)
447
+ {
448
+ if (null === $encodingList) {
449
+ return self::$encodingList;
450
+ }
451
+
452
+ if (!\is_array($encodingList)) {
453
+ $encodingList = array_map('trim', explode(',', $encodingList));
454
+ }
455
+ $encodingList = array_map('strtoupper', $encodingList);
456
+
457
+ foreach ($encodingList as $enc) {
458
+ switch ($enc) {
459
+ default:
460
+ if (strncmp($enc, 'ISO-8859-', 9)) {
461
+ return false;
462
+ }
463
+ // no break
464
+ case 'ASCII':
465
+ case 'UTF8':
466
+ case 'UTF-8':
467
+ }
468
+ }
469
+
470
+ self::$encodingList = $encodingList;
471
+
472
+ return true;
473
+ }
474
+
475
+ public static function mb_strlen($s, $encoding = null)
476
+ {
477
+ $encoding = self::getEncoding($encoding);
478
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
479
+ return \strlen($s);
480
+ }
481
+
482
+ return @iconv_strlen($s, $encoding);
483
+ }
484
+
485
+ public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null)
486
+ {
487
+ $encoding = self::getEncoding($encoding);
488
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
489
+ return strpos($haystack, $needle, $offset);
490
+ }
491
+
492
+ $needle = (string) $needle;
493
+ if ('' === $needle) {
494
+ trigger_error(__METHOD__.': Empty delimiter', E_USER_WARNING);
495
+
496
+ return false;
497
+ }
498
+
499
+ return iconv_strpos($haystack, $needle, $offset, $encoding);
500
+ }
501
+
502
+ public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null)
503
+ {
504
+ $encoding = self::getEncoding($encoding);
505
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
506
+ return strrpos($haystack, $needle, $offset);
507
+ }
508
+
509
+ if ($offset != (int) $offset) {
510
+ $offset = 0;
511
+ } elseif ($offset = (int) $offset) {
512
+ if ($offset < 0) {
513
+ if (0 > $offset += self::mb_strlen($needle)) {
514
+ $haystack = self::mb_substr($haystack, 0, $offset, $encoding);
515
+ }
516
+ $offset = 0;
517
+ } else {
518
+ $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding);
519
+ }
520
+ }
521
+
522
+ $pos = iconv_strrpos($haystack, $needle, $encoding);
523
+
524
+ return false !== $pos ? $offset + $pos : false;
525
+ }
526
+
527
+ public static function mb_str_split($string, $split_length = 1, $encoding = null)
528
+ {
529
+ if (null !== $string && !\is_scalar($string) && !(\is_object($string) && \method_exists($string, '__toString'))) {
530
+ trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', E_USER_WARNING);
531
+
532
+ return null;
533
+ }
534
+
535
+ if (1 > $split_length = (int) $split_length) {
536
+ trigger_error('The length of each segment must be greater than zero', E_USER_WARNING);
537
+
538
+ return false;
539
+ }
540
+
541
+ if (null === $encoding) {
542
+ $encoding = mb_internal_encoding();
543
+ }
544
+
545
+ if ('UTF-8' === $encoding = self::getEncoding($encoding)) {
546
+ $rx = '/(';
547
+ while (65535 < $split_length) {
548
+ $rx .= '.{65535}';
549
+ $split_length -= 65535;
550
+ }
551
+ $rx .= '.{'.$split_length.'})/us';
552
+
553
+ return preg_split($rx, $string, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
554
+ }
555
+
556
+ $result = array();
557
+ $length = mb_strlen($string, $encoding);
558
+
559
+ for ($i = 0; $i < $length; $i += $split_length) {
560
+ $result[] = mb_substr($string, $i, $split_length, $encoding);
561
+ }
562
+
563
+ return $result;
564
+ }
565
+
566
+ public static function mb_strtolower($s, $encoding = null)
567
+ {
568
+ return self::mb_convert_case($s, MB_CASE_LOWER, $encoding);
569
+ }
570
+
571
+ public static function mb_strtoupper($s, $encoding = null)
572
+ {
573
+ return self::mb_convert_case($s, MB_CASE_UPPER, $encoding);
574
+ }
575
+
576
+ public static function mb_substitute_character($c = null)
577
+ {
578
+ if (0 === strcasecmp($c, 'none')) {
579
+ return true;
580
+ }
581
+
582
+ return null !== $c ? false : 'none';
583
+ }
584
+
585
+ public static function mb_substr($s, $start, $length = null, $encoding = null)
586
+ {
587
+ $encoding = self::getEncoding($encoding);
588
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
589
+ return (string) substr($s, $start, null === $length ? 2147483647 : $length);
590
+ }
591
+
592
+ if ($start < 0) {
593
+ $start = iconv_strlen($s, $encoding) + $start;
594
+ if ($start < 0) {
595
+ $start = 0;
596
+ }
597
+ }
598
+
599
+ if (null === $length) {
600
+ $length = 2147483647;
601
+ } elseif ($length < 0) {
602
+ $length = iconv_strlen($s, $encoding) + $length - $start;
603
+ if ($length < 0) {
604
+ return '';
605
+ }
606
+ }
607
+
608
+ return (string) iconv_substr($s, $start, $length, $encoding);
609
+ }
610
+
611
+ public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null)
612
+ {
613
+ $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
614
+ $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
615
+
616
+ return self::mb_strpos($haystack, $needle, $offset, $encoding);
617
+ }
618
+
619
+ public static function mb_stristr($haystack, $needle, $part = false, $encoding = null)
620
+ {
621
+ $pos = self::mb_stripos($haystack, $needle, 0, $encoding);
622
+
623
+ return self::getSubpart($pos, $part, $haystack, $encoding);
624
+ }
625
+
626
+ public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null)
627
+ {
628
+ $encoding = self::getEncoding($encoding);
629
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
630
+ $pos = strrpos($haystack, $needle);
631
+ } else {
632
+ $needle = self::mb_substr($needle, 0, 1, $encoding);
633
+ $pos = iconv_strrpos($haystack, $needle, $encoding);
634
+ }
635
+
636
+ return self::getSubpart($pos, $part, $haystack, $encoding);
637
+ }
638
+
639
+ public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null)
640
+ {
641
+ $needle = self::mb_substr($needle, 0, 1, $encoding);
642
+ $pos = self::mb_strripos($haystack, $needle, $encoding);
643
+
644
+ return self::getSubpart($pos, $part, $haystack, $encoding);
645
+ }
646
+
647
+ public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null)
648
+ {
649
+ $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
650
+ $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
651
+
652
+ return self::mb_strrpos($haystack, $needle, $offset, $encoding);
653
+ }
654
+
655
+ public static function mb_strstr($haystack, $needle, $part = false, $encoding = null)
656
+ {
657
+ $pos = strpos($haystack, $needle);
658
+ if (false === $pos) {
659
+ return false;
660
+ }
661
+ if ($part) {
662
+ return substr($haystack, 0, $pos);
663
+ }
664
+
665
+ return substr($haystack, $pos);
666
+ }
667
+
668
+ public static function mb_get_info($type = 'all')
669
+ {
670
+ $info = array(
671
+ 'internal_encoding' => self::$internalEncoding,
672
+ 'http_output' => 'pass',
673
+ 'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)',
674
+ 'func_overload' => 0,
675
+ 'func_overload_list' => 'no overload',
676
+ 'mail_charset' => 'UTF-8',
677
+ 'mail_header_encoding' => 'BASE64',
678
+ 'mail_body_encoding' => 'BASE64',
679
+ 'illegal_chars' => 0,
680
+ 'encoding_translation' => 'Off',
681
+ 'language' => self::$language,
682
+ 'detect_order' => self::$encodingList,
683
+ 'substitute_character' => 'none',
684
+ 'strict_detection' => 'Off',
685
+ );
686
+
687
+ if ('all' === $type) {
688
+ return $info;
689
+ }
690
+ if (isset($info[$type])) {
691
+ return $info[$type];
692
+ }
693
+
694
+ return false;
695
+ }
696
+
697
+ public static function mb_http_input($type = '')
698
+ {
699
+ return false;
700
+ }
701
+
702
+ public static function mb_http_output($encoding = null)
703
+ {
704
+ return null !== $encoding ? 'pass' === $encoding : 'pass';
705
+ }
706
+
707
+ public static function mb_strwidth($s, $encoding = null)
708
+ {
709
+ $encoding = self::getEncoding($encoding);
710
+
711
+ if ('UTF-8' !== $encoding) {
712
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
713
+ }
714
+
715
+ $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide);
716
+
717
+ return ($wide << 1) + iconv_strlen($s, 'UTF-8');
718
+ }
719
+
720
+ public static function mb_substr_count($haystack, $needle, $encoding = null)
721
+ {
722
+ return substr_count($haystack, $needle);
723
+ }
724
+
725
+ public static function mb_output_handler($contents, $status)
726
+ {
727
+ return $contents;
728
+ }
729
+
730
+ public static function mb_chr($code, $encoding = null)
731
+ {
732
+ if (0x80 > $code %= 0x200000) {
733
+ $s = \chr($code);
734
+ } elseif (0x800 > $code) {
735
+ $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
736
+ } elseif (0x10000 > $code) {
737
+ $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
738
+ } else {
739
+ $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
740
+ }
741
+
742
+ if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
743
+ $s = mb_convert_encoding($s, $encoding, 'UTF-8');
744
+ }
745
+
746
+ return $s;
747
+ }
748
+
749
+ public static function mb_ord($s, $encoding = null)
750
+ {
751
+ if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
752
+ $s = mb_convert_encoding($s, 'UTF-8', $encoding);
753
+ }
754
+
755
+ if (1 === \strlen($s)) {
756
+ return \ord($s);
757
+ }
758
+
759
+ $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
760
+ if (0xF0 <= $code) {
761
+ return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
762
+ }
763
+ if (0xE0 <= $code) {
764
+ return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
765
+ }
766
+ if (0xC0 <= $code) {
767
+ return (($code - 0xC0) << 6) + $s[2] - 0x80;
768
+ }
769
+
770
+ return $code;
771
+ }
772
+
773
+ private static function getSubpart($pos, $part, $haystack, $encoding)
774
+ {
775
+ if (false === $pos) {
776
+ return false;
777
+ }
778
+ if ($part) {
779
+ return self::mb_substr($haystack, 0, $pos, $encoding);
780
+ }
781
+
782
+ return self::mb_substr($haystack, $pos, null, $encoding);
783
+ }
784
+
785
+ private static function html_encoding_callback(array $m)
786
+ {
787
+ $i = 1;
788
+ $entities = '';
789
+ $m = unpack('C*', htmlentities($m[0], ENT_COMPAT, 'UTF-8'));
790
+
791
+ while (isset($m[$i])) {
792
+ if (0x80 > $m[$i]) {
793
+ $entities .= \chr($m[$i++]);
794
+ continue;
795
+ }
796
+ if (0xF0 <= $m[$i]) {
797
+ $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
798
+ } elseif (0xE0 <= $m[$i]) {
799
+ $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
800
+ } else {
801
+ $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80;
802
+ }
803
+
804
+ $entities .= '&#'.$c.';';
805
+ }
806
+
807
+ return $entities;
808
+ }
809
+
810
+ private static function title_case(array $s)
811
+ {
812
+ return self::mb_convert_case($s[1], MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], MB_CASE_LOWER, 'UTF-8');
813
+ }
814
+
815
+ private static function getData($file)
816
+ {
817
+ if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
818
+ return require $file;
819
+ }
820
+
821
+ return false;
822
+ }
823
+
824
+ private static function getEncoding($encoding)
825
+ {
826
+ if (null === $encoding) {
827
+ return self::$internalEncoding;
828
+ }
829
+
830
+ if ('UTF-8' === $encoding) {
831
+ return 'UTF-8';
832
+ }
833
+
834
+ $encoding = strtoupper($encoding);
835
+
836
+ if ('8BIT' === $encoding || 'BINARY' === $encoding) {
837
+ return 'CP850';
838
+ }
839
+
840
+ if ('UTF8' === $encoding) {
841
+ return 'UTF-8';
842
+ }
843
+
844
+ return $encoding;
845
+ }
846
+ }
vendor/symfony/polyfill-mbstring/README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Symfony Polyfill / Mbstring
2
+ ===========================
3
+
4
+ This component provides a partial, native PHP implementation for the
5
+ [Mbstring](https://php.net/mbstring) extension.
6
+
7
+ More information can be found in the
8
+ [main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
9
+
10
+ License
11
+ =======
12
+
13
+ This library is released under the [MIT license](LICENSE).
vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php ADDED
@@ -0,0 +1,1397 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ return array (
4
+ 'A' => 'a',
5
+ 'B' => 'b',
6
+ 'C' => 'c',
7
+ 'D' => 'd',
8
+ 'E' => 'e',
9
+ 'F' => 'f',
10
+ 'G' => 'g',
11
+ 'H' => 'h',
12
+ 'I' => 'i',
13
+ 'J' => 'j',
14
+ 'K' => 'k',
15
+ 'L' => 'l',
16
+ 'M' => 'm',
17
+ 'N' => 'n',
18
+ 'O' => 'o',
19
+ 'P' => 'p',
20
+ 'Q' => 'q',
21
+ 'R' => 'r',
22
+ 'S' => 's',
23
+ 'T' => 't',
24
+ 'U' => 'u',
25
+ 'V' => 'v',
26
+ 'W' => 'w',
27
+ 'X' => 'x',
28
+ 'Y' => 'y',
29
+ 'Z' => 'z',
30
+ 'À' => 'à',
31
+ 'Á' => 'á',
32
+ 'Â' => 'â',
33
+ 'Ã' => 'ã',
34
+ 'Ä' => 'ä',
35
+ 'Å' => 'å',
36
+ 'Æ' => 'æ',
37
+ 'Ç' => 'ç',
38
+ 'È' => 'è',
39
+ 'É' => 'é',
40
+ 'Ê' => 'ê',
41
+ 'Ë' => 'ë',
42
+ 'Ì' => 'ì',
43
+ 'Í' => 'í',
44
+ 'Î' => 'î',
45
+ 'Ï' => 'ï',
46
+ 'Ð' => 'ð',
47
+ 'Ñ' => 'ñ',
48
+ 'Ò' => 'ò',
49
+ 'Ó' => 'ó',
50
+ 'Ô' => 'ô',
51
+ 'Õ' => 'õ',
52
+ 'Ö' => 'ö',
53
+ 'Ø' => 'ø',
54
+ 'Ù' => 'ù',
55
+ 'Ú' => 'ú',
56
+ 'Û' => 'û',
57
+ 'Ü' => 'ü',
58
+ 'Ý' => 'ý',
59
+ 'Þ' => 'þ',
60
+ 'Ā' => 'ā',
61
+ 'Ă' => 'ă',
62
+ 'Ą' => 'ą',
63
+ 'Ć' => 'ć',
64
+ 'Ĉ' => 'ĉ',
65
+ 'Ċ' => 'ċ',
66
+ 'Č' => 'č',
67
+ 'Ď' => 'ď',
68
+ 'Đ' => 'đ',
69
+ 'Ē' => 'ē',
70
+ 'Ĕ' => 'ĕ',
71
+ 'Ė' => 'ė',
72
+ 'Ę' => 'ę',
73
+ 'Ě' => 'ě',
74
+ 'Ĝ' => 'ĝ',
75
+ 'Ğ' => 'ğ',
76
+ 'Ġ' => 'ġ',
77
+ 'Ģ' => 'ģ',
78
+ 'Ĥ' => 'ĥ',
79
+ 'Ħ' => 'ħ',
80
+ 'Ĩ' => 'ĩ',
81
+ 'Ī' => 'ī',
82
+ 'Ĭ' => 'ĭ',
83
+ 'Į' => 'į',
84
+ 'İ' => 'i',
85
+ 'IJ' => 'ij',
86
+ 'Ĵ' => 'ĵ',
87
+ 'Ķ' => 'ķ',
88
+ 'Ĺ' => 'ĺ',
89
+ 'Ļ' => 'ļ',
90
+ 'Ľ' => 'ľ',
91
+ 'Ŀ' => 'ŀ',
92
+ 'Ł' => 'ł',
93
+ 'Ń' => 'ń',
94
+ 'Ņ' => 'ņ',
95
+ 'Ň' => 'ň',
96
+ 'Ŋ' => 'ŋ',
97
+ 'Ō' => 'ō',
98
+ 'Ŏ' => 'ŏ',
99
+ 'Ő' => 'ő',
100
+ 'Œ' => 'œ',
101
+ 'Ŕ' => 'ŕ',
102
+ 'Ŗ' => 'ŗ',
103
+ 'Ř' => 'ř',
104
+ 'Ś' => 'ś',
105
+ 'Ŝ' => 'ŝ',
106
+ 'Ş' => 'ş',
107
+ 'Š' => 'š',
108
+ 'Ţ' => 'ţ',
109
+ 'Ť' => 'ť',
110
+ 'Ŧ' => 'ŧ',
111
+ 'Ũ' => 'ũ',
112
+ 'Ū' => 'ū',
113
+ 'Ŭ' => 'ŭ',
114
+ 'Ů' => 'ů',
115
+ 'Ű' => 'ű',
116
+ 'Ų' => 'ų',
117
+ 'Ŵ' => 'ŵ',
118
+ 'Ŷ' => 'ŷ',
119
+ 'Ÿ' => 'ÿ',
120
+ 'Ź' => 'ź',
121
+ 'Ż' => 'ż',
122
+ 'Ž' => 'ž',
123
+ 'Ɓ' => 'ɓ',
124
+ 'Ƃ' => 'ƃ',
125
+ 'Ƅ' => 'ƅ',
126
+ 'Ɔ' => 'ɔ',
127
+ 'Ƈ' => 'ƈ',
128
+ 'Ɖ' => 'ɖ',
129
+ 'Ɗ' => 'ɗ',
130
+ 'Ƌ' => 'ƌ',
131
+ 'Ǝ' => 'ǝ',
132
+ 'Ə' => 'ə',
133
+ 'Ɛ' => 'ɛ',
134
+ 'Ƒ' => 'ƒ',
135
+ 'Ɠ' => 'ɠ',
136
+ 'Ɣ' => 'ɣ',
137
+ 'Ɩ' => 'ɩ',
138
+ 'Ɨ' => 'ɨ',
139
+ 'Ƙ' => 'ƙ',
140
+ 'Ɯ' => 'ɯ',
141
+ 'Ɲ' => 'ɲ',
142
+ 'Ɵ' => 'ɵ',
143
+ 'Ơ' => 'ơ',
144
+ 'Ƣ' => 'ƣ',
145
+ 'Ƥ' => 'ƥ',
146
+ 'Ʀ' => 'ʀ',
147
+ 'Ƨ' => 'ƨ',
148
+ 'Ʃ' => 'ʃ',
149
+ 'Ƭ' => 'ƭ',
150
+ 'Ʈ' => 'ʈ',
151
+ 'Ư' => 'ư',
152
+ 'Ʊ' => 'ʊ',
153
+ 'Ʋ' => 'ʋ',
154
+ 'Ƴ' => 'ƴ',
155
+ 'Ƶ' => 'ƶ',
156
+ 'Ʒ' => 'ʒ',
157
+ 'Ƹ' => 'ƹ',
158
+ 'Ƽ' => 'ƽ',
159
+ 'DŽ' => 'dž',
160
+ 'Dž' => 'dž',
161
+ 'LJ' => 'lj',
162
+ 'Lj' => 'lj',
163
+ 'NJ' => 'nj',
164
+ 'Nj' => 'nj',
165
+ 'Ǎ' => 'ǎ',
166
+ 'Ǐ' => 'ǐ',
167
+ 'Ǒ' => 'ǒ',
168
+ 'Ǔ' => 'ǔ',
169
+ 'Ǖ' => 'ǖ',
170
+ 'Ǘ' => 'ǘ',
171
+ 'Ǚ' => 'ǚ',
172
+ 'Ǜ' => 'ǜ',
173
+ 'Ǟ' => 'ǟ',
174
+ 'Ǡ' => 'ǡ',
175
+ 'Ǣ' => 'ǣ',
176
+ 'Ǥ' => 'ǥ',
177
+ 'Ǧ' => 'ǧ',
178
+ 'Ǩ' => 'ǩ',
179
+ 'Ǫ' => 'ǫ',
180
+ 'Ǭ' => 'ǭ',
181
+ 'Ǯ' => 'ǯ',
182
+ 'DZ' => 'dz',
183
+ 'Dz' => 'dz',
184
+ 'Ǵ' => 'ǵ',
185
+ 'Ƕ' => 'ƕ',
186
+ 'Ƿ' => 'ƿ',
187
+ 'Ǹ' => 'ǹ',
188
+ 'Ǻ' => 'ǻ',
189
+ 'Ǽ' => 'ǽ',
190
+ 'Ǿ' => 'ǿ',
191
+ 'Ȁ' => 'ȁ',
192
+ 'Ȃ' => 'ȃ',
193
+ 'Ȅ' => 'ȅ',
194
+ 'Ȇ' => 'ȇ',
195
+ 'Ȉ' => 'ȉ',
196
+ 'Ȋ' => 'ȋ',
197
+ 'Ȍ' => 'ȍ',
198
+ 'Ȏ' => 'ȏ',
199
+ 'Ȑ' => 'ȑ',
200
+ 'Ȓ' => 'ȓ',
201
+ 'Ȕ' => 'ȕ',
202
+ 'Ȗ' => 'ȗ',
203
+ 'Ș' => 'ș',
204
+ 'Ț' => 'ț',
205
+ 'Ȝ' => 'ȝ',
206
+ 'Ȟ' => 'ȟ',
207
+ 'Ƞ' => 'ƞ',
208
+ 'Ȣ' => 'ȣ',
209
+ 'Ȥ' => 'ȥ',
210
+ 'Ȧ' => 'ȧ',
211
+ 'Ȩ' => 'ȩ',
212
+ 'Ȫ' => 'ȫ',
213
+ 'Ȭ' => 'ȭ',
214
+ 'Ȯ' => 'ȯ',
215
+ 'Ȱ' => 'ȱ',
216
+ 'Ȳ' => 'ȳ',
217
+ 'Ⱥ' => 'ⱥ',
218
+ 'Ȼ' => 'ȼ',
219
+ 'Ƚ' => 'ƚ',
220
+ 'Ⱦ' => 'ⱦ',
221
+ 'Ɂ' => 'ɂ',
222
+ 'Ƀ' => 'ƀ',
223
+ 'Ʉ' => 'ʉ',
224
+ 'Ʌ' => 'ʌ',
225
+ 'Ɇ' => 'ɇ',
226
+ 'Ɉ' => 'ɉ',
227
+ 'Ɋ' => 'ɋ',
228
+ 'Ɍ' => 'ɍ',
229
+ 'Ɏ' => 'ɏ',
230
+ 'Ͱ' => 'ͱ',
231
+ 'Ͳ' => 'ͳ',
232
+ 'Ͷ' => 'ͷ',
233
+ 'Ϳ' => 'ϳ',
234
+ 'Ά' => 'ά',
235
+ 'Έ' => 'έ',
236
+ 'Ή' => 'ή',
237
+ 'Ί' => 'ί',
238
+ 'Ό' => 'ό',
239
+ 'Ύ' => 'ύ',
240
+ 'Ώ' => 'ώ',
241
+ 'Α' => 'α',
242
+ 'Β' => 'β',
243
+ 'Γ' => 'γ',
244
+ 'Δ' => 'δ',
245
+ 'Ε' => 'ε',
246
+ 'Ζ' => 'ζ',
247
+ 'Η' => 'η',
248
+ 'Θ' => 'θ',
249
+ 'Ι' => 'ι',
250
+ 'Κ' => 'κ',
251
+ 'Λ' => 'λ',
252
+ 'Μ' => 'μ',
253
+ 'Ν' => 'ν',
254
+ 'Ξ' => 'ξ',
255
+ 'Ο' => 'ο',
256
+ 'Π' => 'π',
257
+ 'Ρ' => 'ρ',
258
+ 'Σ' => 'σ',
259
+ 'Τ' => 'τ',
260
+ 'Υ' => 'υ',
261
+ 'Φ' => 'φ',
262
+ 'Χ' => 'χ',
263
+ 'Ψ' => 'ψ',
264
+ 'Ω' => 'ω',
265
+ 'Ϊ' => 'ϊ',
266
+ 'Ϋ' => 'ϋ',
267
+ 'Ϗ' => 'ϗ',
268
+ 'Ϙ' => 'ϙ',
269
+ 'Ϛ' => 'ϛ',
270
+ 'Ϝ' => 'ϝ',
271
+ 'Ϟ' => 'ϟ',
272
+ 'Ϡ' => 'ϡ',
273
+ 'Ϣ' => 'ϣ',
274
+ 'Ϥ' => 'ϥ',
275
+ 'Ϧ' => 'ϧ',
276
+ 'Ϩ' => 'ϩ',
277
+ 'Ϫ' => 'ϫ',
278
+ 'Ϭ' => 'ϭ',
279
+ 'Ϯ' => 'ϯ',
280
+ 'ϴ' => 'θ',
281
+ 'Ϸ' => 'ϸ',
282
+ 'Ϲ' => 'ϲ',
283
+ 'Ϻ' => 'ϻ',
284
+ 'Ͻ' => 'ͻ',
285
+ 'Ͼ' => 'ͼ',
286
+ 'Ͽ' => 'ͽ',
287
+ 'Ѐ' => 'ѐ',
288
+ 'Ё' => 'ё',
289
+ 'Ђ' => 'ђ',
290
+ 'Ѓ' => 'ѓ',
291
+ 'Є' => 'є',
292
+ 'Ѕ' => 'ѕ',
293
+ 'І' => 'і',
294
+ 'Ї' => 'ї',
295
+ 'Ј' => 'ј',
296
+ 'Љ' => 'љ',
297
+ 'Њ' => 'њ',
298
+ 'Ћ' => 'ћ',
299
+ 'Ќ' => 'ќ',
300
+ 'Ѝ' => 'ѝ',
301
+ 'Ў' => 'ў',
302
+ 'Џ' => 'џ',
303
+ 'А' => 'а',
304
+ 'Б' => 'б',
305
+ 'В' => 'в',
306
+ 'Г' => 'г',
307
+ 'Д' => 'д',
308
+ 'Е' => 'е',
309
+ 'Ж' => 'ж',
310
+ 'З' => 'з',
311
+ 'И' => 'и',
312
+ 'Й' => 'й',
313
+ 'К' => 'к',
314
+ 'Л' => 'л',
315
+ 'М' => 'м',
316
+ 'Н' => 'н',
317
+ 'О' => 'о',
318
+ 'П' => 'п',
319
+ 'Р' => 'р',
320
+ 'С' => 'с',
321
+ 'Т' => 'т',
322
+ 'У' => 'у',
323
+ 'Ф' => 'ф',
324
+ 'Х' => 'х',
325
+ 'Ц' => 'ц',
326
+ 'Ч' => 'ч',
327
+ 'Ш' => 'ш',
328
+ 'Щ' => 'щ',
329
+ 'Ъ' => 'ъ',
330
+ 'Ы' => 'ы',
331
+ 'Ь' => 'ь',
332
+ 'Э' => 'э',
333
+ 'Ю' => 'ю',
334
+ 'Я' => 'я',
335
+ 'Ѡ' => 'ѡ',
336
+ 'Ѣ' => 'ѣ',
337
+ 'Ѥ' => 'ѥ',
338
+ 'Ѧ' => 'ѧ',
339
+ 'Ѩ' => 'ѩ',
340
+ 'Ѫ' => 'ѫ',
341
+ 'Ѭ' => 'ѭ',
342
+ 'Ѯ' => 'ѯ',
343
+ 'Ѱ' => 'ѱ',
344
+ 'Ѳ' => 'ѳ',
345
+ 'Ѵ' => 'ѵ',
346
+ 'Ѷ' => 'ѷ',
347
+ 'Ѹ' => 'ѹ',
348
+ 'Ѻ' => 'ѻ',
349
+ 'Ѽ' => 'ѽ',
350
+ 'Ѿ' => 'ѿ',
351
+ 'Ҁ' => 'ҁ',
352
+ 'Ҋ' => 'ҋ',
353
+ 'Ҍ' => 'ҍ',
354
+ 'Ҏ' => 'ҏ',
355
+ 'Ґ' => 'ґ',
356
+ 'Ғ' => 'ғ',
357
+ 'Ҕ' => 'ҕ',
358
+ 'Җ' => 'җ',
359
+ 'Ҙ' => 'ҙ',
360
+ 'Қ' => 'қ',
361
+ 'Ҝ' => 'ҝ',
362
+ 'Ҟ' => 'ҟ',
363
+ 'Ҡ' => 'ҡ',
364
+ 'Ң' => 'ң',
365
+ 'Ҥ' => 'ҥ',
366
+ 'Ҧ' => 'ҧ',
367
+ 'Ҩ' => 'ҩ',
368
+ 'Ҫ' => 'ҫ',
369
+ 'Ҭ' => 'ҭ',
370
+ 'Ү' => 'ү',
371
+ 'Ұ' => 'ұ',
372
+ 'Ҳ' => 'ҳ',
373
+ 'Ҵ' => 'ҵ',
374
+ 'Ҷ' => 'ҷ',
375
+ 'Ҹ' => 'ҹ',
376
+ 'Һ' => 'һ',
377
+ 'Ҽ' => 'ҽ',
378
+ 'Ҿ' => 'ҿ',
379
+ 'Ӏ' => 'ӏ',
380
+ 'Ӂ' => 'ӂ',
381
+ 'Ӄ' => 'ӄ',
382
+ 'Ӆ' => 'ӆ',
383
+ 'Ӈ' => 'ӈ',
384
+ 'Ӊ' => 'ӊ',
385
+ 'Ӌ' => 'ӌ',
386
+ 'Ӎ' => 'ӎ',
387
+ 'Ӑ' => 'ӑ',
388
+ 'Ӓ' => 'ӓ',
389
+ 'Ӕ' => 'ӕ',
390
+ 'Ӗ' => 'ӗ',
391
+ 'Ә' => 'ә',
392
+ 'Ӛ' => 'ӛ',
393
+ 'Ӝ' => 'ӝ',
394
+ 'Ӟ' => 'ӟ',
395
+ 'Ӡ' => 'ӡ',
396
+ 'Ӣ' => 'ӣ',
397
+ 'Ӥ' => 'ӥ',
398
+ 'Ӧ' => 'ӧ',
399
+ 'Ө' => 'ө',
400
+ 'Ӫ' => 'ӫ',
401
+ 'Ӭ' => 'ӭ',
402
+ 'Ӯ' => 'ӯ',
403
+ 'Ӱ' => 'ӱ',
404
+ 'Ӳ' => 'ӳ',
405
+ 'Ӵ' => 'ӵ',
406
+ 'Ӷ' => 'ӷ',
407
+ 'Ӹ' => 'ӹ',
408
+ 'Ӻ' => 'ӻ',
409
+ 'Ӽ' => 'ӽ',
410
+ 'Ӿ' => 'ӿ',
411
+ 'Ԁ' => 'ԁ',
412
+ 'Ԃ' => 'ԃ',
413
+ 'Ԅ' => 'ԅ',
414
+ 'Ԇ' => 'ԇ',
415
+ 'Ԉ' => 'ԉ',
416
+ 'Ԋ' => 'ԋ',
417
+ 'Ԍ' => 'ԍ',
418
+ 'Ԏ' => 'ԏ',
419
+ 'Ԑ' => 'ԑ',
420
+ 'Ԓ' => 'ԓ',
421
+ 'Ԕ' => 'ԕ',
422
+ 'Ԗ' => 'ԗ',
423
+ 'Ԙ' => 'ԙ',
424
+ 'Ԛ' => 'ԛ',
425
+ 'Ԝ' => 'ԝ',
426
+ 'Ԟ' => 'ԟ',
427
+ 'Ԡ' => 'ԡ',
428
+ 'Ԣ' => 'ԣ',
429
+ 'Ԥ' => 'ԥ',
430
+ 'Ԧ' => 'ԧ',
431
+ 'Ԩ' => 'ԩ',
432
+ 'Ԫ' => 'ԫ',
433
+ 'Ԭ' => 'ԭ',
434
+ 'Ԯ' => 'ԯ',
435
+ 'Ա' => 'ա',
436
+ 'Բ' => 'բ',
437
+ 'Գ' => 'գ',
438
+ 'Դ' => 'դ',
439
+ 'Ե' => 'ե',
440
+ 'Զ' => 'զ',
441
+ 'Է' => 'է',
442
+ 'Ը' => 'ը',
443
+ 'Թ' => 'թ',
444
+ 'Ժ' => 'ժ',
445
+ 'Ի' => 'ի',
446
+ 'Լ' => 'լ',
447
+ 'Խ' => 'խ',
448
+ 'Ծ' => 'ծ',
449
+ 'Կ' => 'կ',
450
+ 'Հ' => 'հ',
451
+ 'Ձ' => 'ձ',
452
+ 'Ղ' => 'ղ',
453
+ 'Ճ' => 'ճ',
454
+ 'Մ' => 'մ',
455
+ 'Յ' => 'յ',
456
+ 'Ն' => 'ն',
457
+ 'Շ' => 'շ',
458
+ 'Ո' => 'ո',
459
+ 'Չ' => 'չ',
460
+ 'Պ' => 'պ',
461
+ 'Ջ' => 'ջ',
462
+ 'Ռ' => 'ռ',
463
+ 'Ս' => 'ս',
464
+ 'Վ' => 'վ',
465
+ 'Տ' => 'տ',
466
+ 'Ր' => 'ր',
467
+ 'Ց' => 'ց',
468
+ 'Ւ' => 'ւ',
469
+ 'Փ' => 'փ',
470
+ 'Ք' => 'ք',
471
+ 'Օ' => 'օ',
472
+ 'Ֆ' => 'ֆ',
473
+ 'Ⴀ' => 'ⴀ',
474
+ 'Ⴁ' => 'ⴁ',
475
+ 'Ⴂ' => 'ⴂ',
476
+ 'Ⴃ' => 'ⴃ',
477
+ 'Ⴄ' => 'ⴄ',
478
+ 'Ⴅ' => 'ⴅ',
479
+ 'Ⴆ' => 'ⴆ',
480
+ 'Ⴇ' => 'ⴇ',
481
+ 'Ⴈ' => 'ⴈ',
482
+ 'Ⴉ' => 'ⴉ',
483
+ 'Ⴊ' => 'ⴊ',
484
+ 'Ⴋ' => 'ⴋ',
485
+ 'Ⴌ' => 'ⴌ',
486
+ 'Ⴍ' => 'ⴍ',
487
+ 'Ⴎ' => 'ⴎ',
488
+ 'Ⴏ' => 'ⴏ',
489
+ 'Ⴐ' => 'ⴐ',
490
+ 'Ⴑ' => 'ⴑ',
491
+ 'Ⴒ' => 'ⴒ',
492
+ 'Ⴓ' => 'ⴓ',
493
+ 'Ⴔ' => 'ⴔ',
494
+ 'Ⴕ' => 'ⴕ',
495
+ 'Ⴖ' => 'ⴖ',
496
+ 'Ⴗ' => 'ⴗ',
497
+ 'Ⴘ' => 'ⴘ',
498
+ 'Ⴙ' => 'ⴙ',
499
+ 'Ⴚ' => 'ⴚ',
500
+ 'Ⴛ' => 'ⴛ',
501
+ 'Ⴜ' => 'ⴜ',
502
+ 'Ⴝ' => 'ⴝ',
503
+ 'Ⴞ' => 'ⴞ',
504
+ 'Ⴟ' => 'ⴟ',
505
+ 'Ⴠ' => 'ⴠ',
506
+ 'Ⴡ' => 'ⴡ',
507
+ 'Ⴢ' => 'ⴢ',
508
+ 'Ⴣ' => 'ⴣ',
509
+ 'Ⴤ' => 'ⴤ',
510
+ 'Ⴥ' => 'ⴥ',
511
+ 'Ⴧ' => 'ⴧ',
512
+ 'Ⴭ' => 'ⴭ',
513
+ 'Ꭰ' => 'ꭰ',
514
+ 'Ꭱ' => 'ꭱ',
515
+ 'Ꭲ' => 'ꭲ',
516
+ 'Ꭳ' => 'ꭳ',
517
+ 'Ꭴ' => 'ꭴ',
518
+ 'Ꭵ' => 'ꭵ',
519
+ 'Ꭶ' => 'ꭶ',
520
+ 'Ꭷ' => 'ꭷ',
521
+ 'Ꭸ' => 'ꭸ',
522
+ 'Ꭹ' => 'ꭹ',
523
+ 'Ꭺ' => 'ꭺ',
524
+ 'Ꭻ' => 'ꭻ',
525
+ 'Ꭼ' => 'ꭼ',
526
+ 'Ꭽ' => 'ꭽ',
527
+ 'Ꭾ' => 'ꭾ',
528
+ 'Ꭿ' => 'ꭿ',
529
+ 'Ꮀ' => 'ꮀ',
530
+ 'Ꮁ' => 'ꮁ',
531
+ 'Ꮂ' => 'ꮂ',
532
+ 'Ꮃ' => 'ꮃ',
533
+ 'Ꮄ' => 'ꮄ',
534
+ 'Ꮅ' => 'ꮅ',
535
+ 'Ꮆ' => 'ꮆ',
536
+ 'Ꮇ' => 'ꮇ',
537
+ 'Ꮈ' => 'ꮈ',
538
+ 'Ꮉ' => 'ꮉ',
539
+ 'Ꮊ' => 'ꮊ',
540
+ 'Ꮋ' => 'ꮋ',
541
+ 'Ꮌ' => 'ꮌ',
542
+ 'Ꮍ' => 'ꮍ',
543
+ 'Ꮎ' => 'ꮎ',
544
+ 'Ꮏ' => 'ꮏ',
545
+ 'Ꮐ' => 'ꮐ',
546
+ 'Ꮑ' => 'ꮑ',
547
+ 'Ꮒ' => 'ꮒ',
548
+ 'Ꮓ' => 'ꮓ',
549
+ 'Ꮔ' => 'ꮔ',
550
+ 'Ꮕ' => 'ꮕ',
551
+ 'Ꮖ' => 'ꮖ',
552
+ 'Ꮗ' => 'ꮗ',
553
+ 'Ꮘ' => 'ꮘ',
554
+ 'Ꮙ' => 'ꮙ',
555
+ 'Ꮚ' => 'ꮚ',
556
+ 'Ꮛ' => 'ꮛ',
557
+ 'Ꮜ' => 'ꮜ',
558
+ 'Ꮝ' => 'ꮝ',
559
+ 'Ꮞ' => 'ꮞ',
560
+ 'Ꮟ' => 'ꮟ',
561
+ 'Ꮠ' => 'ꮠ',
562
+ 'Ꮡ' => 'ꮡ',
563
+ 'Ꮢ' => 'ꮢ',
564
+ 'Ꮣ' => 'ꮣ',
565
+ 'Ꮤ' => 'ꮤ',
566
+ 'Ꮥ' => 'ꮥ',
567
+ 'Ꮦ' => 'ꮦ',
568
+ 'Ꮧ' => 'ꮧ',
569
+ 'Ꮨ' => 'ꮨ',
570
+ 'Ꮩ' => 'ꮩ',
571
+ 'Ꮪ' => 'ꮪ',
572
+ 'Ꮫ' => 'ꮫ',
573
+ 'Ꮬ' => 'ꮬ',
574
+ 'Ꮭ' => 'ꮭ',
575
+ 'Ꮮ' => 'ꮮ',
576
+ 'Ꮯ' => 'ꮯ',
577
+ 'Ꮰ' => 'ꮰ',
578
+ 'Ꮱ' => 'ꮱ',
579
+ 'Ꮲ' => 'ꮲ',
580
+ 'Ꮳ' => 'ꮳ',
581
+ 'Ꮴ' => 'ꮴ',
582
+ 'Ꮵ' => 'ꮵ',
583
+ 'Ꮶ' => 'ꮶ',
584
+ 'Ꮷ' => 'ꮷ',
585
+ 'Ꮸ' => 'ꮸ',
586
+ 'Ꮹ' => 'ꮹ',
587
+ 'Ꮺ' => 'ꮺ',
588
+ 'Ꮻ' => 'ꮻ',
589
+ 'Ꮼ' => 'ꮼ',
590
+ 'Ꮽ' => 'ꮽ',
591
+ 'Ꮾ' => 'ꮾ',
592
+ 'Ꮿ' => 'ꮿ',
593
+ 'Ᏸ' => 'ᏸ',
594
+ 'Ᏹ' => 'ᏹ',
595
+ 'Ᏺ' => 'ᏺ',
596
+ 'Ᏻ' => 'ᏻ',
597
+ 'Ᏼ' => 'ᏼ',
598
+ 'Ᏽ' => 'ᏽ',
599
+ 'Ა' => 'ა',
600
+ 'Ბ' => 'ბ',
601
+ 'Გ' => 'გ',
602
+ 'Დ' => 'დ',
603
+ 'Ე' => 'ე',
604
+ 'Ვ' => 'ვ',
605
+ 'Ზ' => 'ზ',
606
+ 'Თ' => 'თ',
607
+ 'Ი' => 'ი',
608
+ 'Კ' => 'კ',
609
+ 'Ლ' => 'ლ',
610
+ 'Მ' => 'მ',
611
+ 'Ნ' => 'ნ',
612
+ 'Ო' => 'ო',
613
+ 'Პ' => 'პ',
614
+ 'Ჟ' => 'ჟ',
615
+ 'Რ' => 'რ',
616
+ 'Ს' => 'ს',
617
+ 'Ტ' => 'ტ',
618
+ 'Უ' => 'უ',
619
+ 'Ფ' => 'ფ',
620
+ 'Ქ' => 'ქ',
621
+ 'Ღ' => 'ღ',
622
+ 'Ყ' => 'ყ',
623
+ 'Შ' => 'შ',
624
+ 'Ჩ' => 'ჩ',
625
+ 'Ც' => 'ც',
626
+ 'Ძ' => 'ძ',
627
+ 'Წ' => 'წ',
628
+ 'Ჭ' => 'ჭ',
629
+ 'Ხ' => 'ხ',
630
+ 'Ჯ' => 'ჯ',
631
+ 'Ჰ' => 'ჰ',
632
+ 'Ჱ' => 'ჱ',
633
+ 'Ჲ' => 'ჲ',
634
+ 'Ჳ' => 'ჳ',
635
+ 'Ჴ' => 'ჴ',
636
+ 'Ჵ' => 'ჵ',
637
+ 'Ჶ' => 'ჶ',
638
+ 'Ჷ' => 'ჷ',
639
+ 'Ჸ' => 'ჸ',
640
+ 'Ჹ' => 'ჹ',
641
+ 'Ჺ' => 'ჺ',
642
+ 'Ჽ' => 'ჽ',
643
+ 'Ჾ' => 'ჾ',
644
+ 'Ჿ' => 'ჿ',
645
+ 'Ḁ' => 'ḁ',
646
+ 'Ḃ' => 'ḃ',
647
+ 'Ḅ' => 'ḅ',
648
+ 'Ḇ' => 'ḇ',
649
+ 'Ḉ' => 'ḉ',
650
+ 'Ḋ' => 'ḋ',
651
+ 'Ḍ' => 'ḍ',
652
+ 'Ḏ' => 'ḏ',
653
+ 'Ḑ' => 'ḑ',
654
+ 'Ḓ' => 'ḓ',
655
+ 'Ḕ' => 'ḕ',
656
+ 'Ḗ' => 'ḗ',
657
+ 'Ḙ' => 'ḙ',
658
+ 'Ḛ' => 'ḛ',
659
+ 'Ḝ' => 'ḝ',
660
+ 'Ḟ' => 'ḟ',
661
+ 'Ḡ' => 'ḡ',
662
+ 'Ḣ' => 'ḣ',
663
+ 'Ḥ' => 'ḥ',
664
+ 'Ḧ' => 'ḧ',
665
+ 'Ḩ' => 'ḩ',
666
+ 'Ḫ' => 'ḫ',
667
+ 'Ḭ' => 'ḭ',
668
+ 'Ḯ' => 'ḯ',
669
+ 'Ḱ' => 'ḱ',
670
+ 'Ḳ' => 'ḳ',
671
+ 'Ḵ' => 'ḵ',
672
+ 'Ḷ' => 'ḷ',
673
+ 'Ḹ' => 'ḹ',
674
+ 'Ḻ' => 'ḻ',
675
+ 'Ḽ' => 'ḽ',
676
+ 'Ḿ' => 'ḿ',
677
+ 'Ṁ' => 'ṁ',
678
+ 'Ṃ' => 'ṃ',
679
+ 'Ṅ' => 'ṅ',
680
+ 'Ṇ' => 'ṇ',
681
+ 'Ṉ' => 'ṉ',
682
+ 'Ṋ' => 'ṋ',
683
+ 'Ṍ' => 'ṍ',
684
+ 'Ṏ' => 'ṏ',
685
+ 'Ṑ' => 'ṑ',
686
+ 'Ṓ' => 'ṓ',
687
+ 'Ṕ' => 'ṕ',
688
+ 'Ṗ' => 'ṗ',
689
+ 'Ṙ' => 'ṙ',
690
+ 'Ṛ' => 'ṛ',
691
+ 'Ṝ' => 'ṝ',
692
+ 'Ṟ' => 'ṟ',
693
+ 'Ṡ' => 'ṡ',
694
+ 'Ṣ' => 'ṣ',
695
+ 'Ṥ' => 'ṥ',
696
+ 'Ṧ' => 'ṧ',
697
+ 'Ṩ' => 'ṩ',
698
+ 'Ṫ' => 'ṫ',
699
+ 'Ṭ' => 'ṭ',
700
+ 'Ṯ' => 'ṯ',
701
+ 'Ṱ' => 'ṱ',
702
+ 'Ṳ' => 'ṳ',
703
+ 'Ṵ' => 'ṵ',
704
+ 'Ṷ' => 'ṷ',
705
+ 'Ṹ' => 'ṹ',
706
+ 'Ṻ' => 'ṻ',
707
+ 'Ṽ' => 'ṽ',
708
+ 'Ṿ' => 'ṿ',
709
+ 'Ẁ' => 'ẁ',
710
+ 'Ẃ' => 'ẃ',
711
+ 'Ẅ' => 'ẅ',
712
+ 'Ẇ' => 'ẇ',
713
+ 'Ẉ' => 'ẉ',
714
+ 'Ẋ' => 'ẋ',
715
+ 'Ẍ' => 'ẍ',
716
+ 'Ẏ' => 'ẏ',
717
+ 'Ẑ' => 'ẑ',
718
+ 'Ẓ' => 'ẓ',
719
+ 'Ẕ' => 'ẕ',
720
+ 'ẞ' => 'ß',
721
+ 'Ạ' => 'ạ',
722
+ 'Ả' => 'ả',
723
+ 'Ấ' => 'ấ',
724
+ 'Ầ' => 'ầ',
725
+ 'Ẩ' => 'ẩ',
726
+ 'Ẫ' => 'ẫ',
727
+ 'Ậ' => 'ậ',
728
+ 'Ắ' => 'ắ',
729
+ 'Ằ' => 'ằ',
730
+ 'Ẳ' => 'ẳ',
731
+ 'Ẵ' => 'ẵ',
732
+ 'Ặ' => 'ặ',
733
+ 'Ẹ' => 'ẹ',
734
+ 'Ẻ' => 'ẻ',
735
+ 'Ẽ' => 'ẽ',
736
+ 'Ế' => 'ế',
737
+ 'Ề' => 'ề',
738
+ 'Ể' => 'ể',
739
+ 'Ễ' => 'ễ',
740
+ 'Ệ' => 'ệ',
741
+ 'Ỉ' => 'ỉ',
742
+ 'Ị' => 'ị',
743
+ 'Ọ' => 'ọ',
744
+ 'Ỏ' => 'ỏ',
745
+ 'Ố' => 'ố',
746
+ 'Ồ' => 'ồ',
747
+ 'Ổ' => 'ổ',
748
+ 'Ỗ' => 'ỗ',
749
+ 'Ộ' => 'ộ',
750
+ 'Ớ' => 'ớ',
751
+ 'Ờ' => 'ờ',
752
+ 'Ở' => 'ở',
753
+ 'Ỡ' => 'ỡ',
754
+ 'Ợ' => 'ợ',
755
+ 'Ụ' => 'ụ',
756
+ 'Ủ' => 'ủ',
757
+ 'Ứ' => 'ứ',
758
+ 'Ừ' => 'ừ',
759
+ 'Ử' => 'ử',
760
+ 'Ữ' => 'ữ',
761
+ 'Ự' => 'ự',
762
+ 'Ỳ' => 'ỳ',
763
+ 'Ỵ' => 'ỵ',
764
+ 'Ỷ' => 'ỷ',
765
+ 'Ỹ' => 'ỹ',
766
+ 'Ỻ' => 'ỻ',
767
+ 'Ỽ' => 'ỽ',
768
+ 'Ỿ' => 'ỿ',
769
+ 'Ἀ' => 'ἀ',
770
+ 'Ἁ' => 'ἁ',
771
+ 'Ἂ' => 'ἂ',
772
+ 'Ἃ' => 'ἃ',
773
+ 'Ἄ' => 'ἄ',
774
+ 'Ἅ' => 'ἅ',
775
+ 'Ἆ' => 'ἆ',
776
+ 'Ἇ' => 'ἇ',
777
+ 'Ἐ' => 'ἐ',
778
+ 'Ἑ' => 'ἑ',
779
+ 'Ἒ' => 'ἒ',
780
+ 'Ἓ' => 'ἓ',
781
+ 'Ἔ' => 'ἔ',
782
+ 'Ἕ' => 'ἕ',
783
+ 'Ἠ' => 'ἠ',
784
+ 'Ἡ' => 'ἡ',
785
+ 'Ἢ' => 'ἢ',
786
+ 'Ἣ' => 'ἣ',
787
+ 'Ἤ' => 'ἤ',
788
+ 'Ἥ' => 'ἥ',
789
+ 'Ἦ' => 'ἦ',
790
+ 'Ἧ' => 'ἧ',
791
+ 'Ἰ' => 'ἰ',
792
+ 'Ἱ' => 'ἱ',
793
+ 'Ἲ' => 'ἲ',
794
+ 'Ἳ' => 'ἳ',
795
+ 'Ἴ' => 'ἴ',
796
+ 'Ἵ' => 'ἵ',
797
+ 'Ἶ' => 'ἶ',
798
+ 'Ἷ' => 'ἷ',
799
+ 'Ὀ' => 'ὀ',
800
+ 'Ὁ' => 'ὁ',
801
+ 'Ὂ' => 'ὂ',
802
+ 'Ὃ' => 'ὃ',
803
+ 'Ὄ' => 'ὄ',
804
+ 'Ὅ' => 'ὅ',
805
+ 'Ὑ' => 'ὑ',
806
+ 'Ὓ' => 'ὓ',
807
+ 'Ὕ' => 'ὕ',
808
+ 'Ὗ' => 'ὗ',
809
+ 'Ὠ' => 'ὠ',
810
+ 'Ὡ' => 'ὡ',
811
+ 'Ὢ' => 'ὢ',
812
+ 'Ὣ' => 'ὣ',
813
+ 'Ὤ' => 'ὤ',
814
+ 'Ὥ' => 'ὥ',
815
+ 'Ὦ' => 'ὦ',
816
+ 'Ὧ' => 'ὧ',
817
+ 'ᾈ' => 'ᾀ',
818
+ 'ᾉ' => 'ᾁ',
819
+ 'ᾊ' => 'ᾂ',
820
+ 'ᾋ' => 'ᾃ',
821
+ 'ᾌ' => 'ᾄ',
822
+ 'ᾍ' => 'ᾅ',
823
+ 'ᾎ' => 'ᾆ',
824
+ 'ᾏ' => 'ᾇ',
825
+ 'ᾘ' => 'ᾐ',
826
+ 'ᾙ' => 'ᾑ',
827
+ 'ᾚ' => 'ᾒ',
828
+ 'ᾛ' => 'ᾓ',
829
+ 'ᾜ' => 'ᾔ',
830
+ 'ᾝ' => 'ᾕ',
831
+ 'ᾞ' => 'ᾖ',
832
+ 'ᾟ' => 'ᾗ',
833
+ 'ᾨ' => 'ᾠ',
834
+ 'ᾩ' => 'ᾡ',
835
+ 'ᾪ' => 'ᾢ',
836
+ 'ᾫ' => 'ᾣ',
837
+ 'ᾬ' => 'ᾤ',
838
+ 'ᾭ' => 'ᾥ',
839
+ 'ᾮ' => 'ᾦ',
840
+ 'ᾯ' => 'ᾧ',
841
+ 'Ᾰ' => 'ᾰ',
842
+ 'Ᾱ' => 'ᾱ',
843
+ 'Ὰ' => 'ὰ',
844
+ 'Ά' => 'ά',
845
+ 'ᾼ' => 'ᾳ',
846
+ 'Ὲ' => 'ὲ',
847
+ 'Έ' => 'έ',
848
+ 'Ὴ' => 'ὴ',
849
+ 'Ή' => 'ή',
850
+ 'ῌ' => 'ῃ',
851
+ 'Ῐ' => 'ῐ',
852
+ 'Ῑ' => 'ῑ',
853
+ 'Ὶ' => 'ὶ',
854
+ 'Ί' => 'ί',
855
+ 'Ῠ' => 'ῠ',
856
+ 'Ῡ' => 'ῡ',
857
+ 'Ὺ' => 'ὺ',
858
+ 'Ύ' => 'ύ',
859
+ 'Ῥ' => 'ῥ',
860
+ 'Ὸ' => 'ὸ',
861
+ 'Ό' => 'ό',
862
+ 'Ὼ' => 'ὼ',
863
+ 'Ώ' => 'ώ',
864
+ 'ῼ' => 'ῳ',
865
+ 'Ω' => 'ω',
866
+ 'K' => 'k',
867
+ 'Å' => 'å',
868
+ 'Ⅎ' => 'ⅎ',
869
+ 'Ⅰ' => 'ⅰ',
870
+ 'Ⅱ' => 'ⅱ',
871
+ 'Ⅲ' => 'ⅲ',
872
+ 'Ⅳ' => 'ⅳ',
873
+ 'Ⅴ' => 'ⅴ',
874
+ 'Ⅵ' => 'ⅵ',
875
+ 'Ⅶ' => 'ⅶ',
876
+ 'Ⅷ' => 'ⅷ',
877
+ 'Ⅸ' => 'ⅸ',
878
+ 'Ⅹ' => 'ⅹ',
879
+ 'Ⅺ' => 'ⅺ',
880
+ 'Ⅻ' => 'ⅻ',
881
+ 'Ⅼ' => 'ⅼ',
882
+ 'Ⅽ' => 'ⅽ',
883
+ 'Ⅾ' => 'ⅾ',
884
+ 'Ⅿ' => 'ⅿ',
885
+ 'Ↄ' => 'ↄ',
886
+ 'Ⓐ' => 'ⓐ',
887
+ 'Ⓑ' => 'ⓑ',
888
+ 'Ⓒ' => 'ⓒ',
889
+ 'Ⓓ' => 'ⓓ',
890
+ 'Ⓔ' => 'ⓔ',
891
+ 'Ⓕ' => 'ⓕ',
892
+ 'Ⓖ' => 'ⓖ',
893
+ 'Ⓗ' => 'ⓗ',
894
+ 'Ⓘ' => 'ⓘ',
895
+ 'Ⓙ' => 'ⓙ',
896
+ 'Ⓚ' => 'ⓚ',
897
+ 'Ⓛ' => 'ⓛ',
898
+ 'Ⓜ' => 'ⓜ',
899
+ 'Ⓝ' => 'ⓝ',
900
+ 'Ⓞ' => 'ⓞ',
901
+ 'Ⓟ' => 'ⓟ',
902
+ 'Ⓠ' => 'ⓠ',
903
+ 'Ⓡ' => 'ⓡ',
904
+ 'Ⓢ' => 'ⓢ',
905
+ 'Ⓣ' => 'ⓣ',
906
+ 'Ⓤ' => 'ⓤ',
907
+ 'Ⓥ' => 'ⓥ',
908
+ 'Ⓦ' => 'ⓦ',
909
+ 'Ⓧ' => 'ⓧ',
910
+ 'Ⓨ' => 'ⓨ',
911
+ 'Ⓩ' => 'ⓩ',
912
+ 'Ⰰ' => 'ⰰ',
913
+ 'Ⰱ' => 'ⰱ',
914
+ 'Ⰲ' => 'ⰲ',
915
+ 'Ⰳ' => 'ⰳ',
916
+ 'Ⰴ' => 'ⰴ',
917
+ 'Ⰵ' => 'ⰵ',
918
+ 'Ⰶ' => 'ⰶ',
919
+ 'Ⰷ' => 'ⰷ',
920
+ 'Ⰸ' => 'ⰸ',
921
+ 'Ⰹ' => 'ⰹ',
922
+ 'Ⰺ' => 'ⰺ',
923
+ 'Ⰻ' => 'ⰻ',
924
+ 'Ⰼ' => 'ⰼ',
925
+ 'Ⰽ' => 'ⰽ',
926
+ 'Ⰾ' => 'ⰾ',
927
+ 'Ⰿ' => 'ⰿ',
928
+ 'Ⱀ' => 'ⱀ',
929
+ 'Ⱁ' => 'ⱁ',
930
+ 'Ⱂ' => 'ⱂ',
931
+ 'Ⱃ' => 'ⱃ',
932
+ 'Ⱄ' => 'ⱄ',
933
+ 'Ⱅ' => 'ⱅ',
934
+ 'Ⱆ' => 'ⱆ',
935
+ 'Ⱇ' => 'ⱇ',
936
+ 'Ⱈ' => 'ⱈ',
937
+ 'Ⱉ' => 'ⱉ',
938
+ 'Ⱊ' => 'ⱊ',
939
+ 'Ⱋ' => 'ⱋ',
940
+ 'Ⱌ' => 'ⱌ',
941
+ 'Ⱍ' => 'ⱍ',
942
+ 'Ⱎ' => 'ⱎ',
943
+ 'Ⱏ' => 'ⱏ',
944
+ 'Ⱐ' => 'ⱐ',
945
+ 'Ⱑ' => 'ⱑ',
946
+ 'Ⱒ' => 'ⱒ',
947
+ 'Ⱓ' => 'ⱓ',
948
+ 'Ⱔ' => 'ⱔ',
949
+ 'Ⱕ' => 'ⱕ',
950
+ 'Ⱖ' => 'ⱖ',
951
+ 'Ⱗ' => 'ⱗ',
952
+ 'Ⱘ' => 'ⱘ',
953
+ 'Ⱙ' => 'ⱙ',
954
+ 'Ⱚ' => 'ⱚ',
955
+ 'Ⱛ' => 'ⱛ',
956
+ 'Ⱜ' => 'ⱜ',
957
+ 'Ⱝ' => 'ⱝ',
958
+ 'Ⱞ' => 'ⱞ',
959
+ 'Ⱡ' => 'ⱡ',
960
+ 'Ɫ' => 'ɫ',
961
+ 'Ᵽ' => 'ᵽ',
962
+ 'Ɽ' => 'ɽ',
963
+ 'Ⱨ' => 'ⱨ',
964
+ 'Ⱪ' => 'ⱪ',
965
+ 'Ⱬ' => 'ⱬ',
966
+ 'Ɑ' => 'ɑ',
967
+ 'Ɱ' => 'ɱ',
968
+ 'Ɐ' => 'ɐ',
969
+ 'Ɒ' => 'ɒ',
970
+ 'Ⱳ' => 'ⱳ',
971
+ 'Ⱶ' => 'ⱶ',
972
+ 'Ȿ' => 'ȿ',
973
+ 'Ɀ' => 'ɀ',
974
+ 'Ⲁ' => 'ⲁ',
975
+ 'Ⲃ' => 'ⲃ',
976
+ 'Ⲅ' => 'ⲅ',
977
+ 'Ⲇ' => 'ⲇ',
978
+ 'Ⲉ' => 'ⲉ',
979
+ 'Ⲋ' => 'ⲋ',
980
+ 'Ⲍ' => 'ⲍ',
981
+ 'Ⲏ' => 'ⲏ',
982
+ 'Ⲑ' => 'ⲑ',
983
+ 'Ⲓ' => 'ⲓ',
984
+ 'Ⲕ' => 'ⲕ',
985
+ 'Ⲗ' => 'ⲗ',
986
+ 'Ⲙ' => 'ⲙ',
987
+ 'Ⲛ' => 'ⲛ',
988
+ 'Ⲝ' => 'ⲝ',
989
+ 'Ⲟ' => 'ⲟ',
990
+ 'Ⲡ' => 'ⲡ',
991
+ 'Ⲣ' => 'ⲣ',
992
+ 'Ⲥ' => 'ⲥ',
993
+ 'Ⲧ' => 'ⲧ',
994
+ 'Ⲩ' => 'ⲩ',
995
+ 'Ⲫ' => 'ⲫ',
996
+ 'Ⲭ' => 'ⲭ',
997
+ 'Ⲯ' => 'ⲯ',
998
+ 'Ⲱ' => 'ⲱ',
999
+ 'Ⲳ' => 'ⲳ',
1000
+ 'Ⲵ' => 'ⲵ',
1001
+ 'Ⲷ' => 'ⲷ',
1002
+ 'Ⲹ' => 'ⲹ',
1003
+ 'Ⲻ' => 'ⲻ',
1004
+ 'Ⲽ' => 'ⲽ',
1005
+ 'Ⲿ' => 'ⲿ',
1006
+ 'Ⳁ' => 'ⳁ',
1007
+ 'Ⳃ' => 'ⳃ',
1008
+ 'Ⳅ' => 'ⳅ',
1009
+ 'Ⳇ' => 'ⳇ',
1010
+ 'Ⳉ' => 'ⳉ',
1011
+ 'Ⳋ' => 'ⳋ',
1012
+ 'Ⳍ' => 'ⳍ',
1013
+ 'Ⳏ' => 'ⳏ',
1014
+ 'Ⳑ' => 'ⳑ',
1015
+ 'Ⳓ' => 'ⳓ',
1016
+ 'Ⳕ' => 'ⳕ',
1017
+ 'Ⳗ' => 'ⳗ',
1018
+ 'Ⳙ' => 'ⳙ',
1019
+ 'Ⳛ' => 'ⳛ',
1020
+ 'Ⳝ' => 'ⳝ',
1021
+ 'Ⳟ' => 'ⳟ',
1022
+ 'Ⳡ' => 'ⳡ',
1023
+ 'Ⳣ' => 'ⳣ',
1024
+ 'Ⳬ' => 'ⳬ',
1025
+ 'Ⳮ' => 'ⳮ',
1026
+ 'Ⳳ' => 'ⳳ',
1027
+ 'Ꙁ' => 'ꙁ',
1028
+ 'Ꙃ' => 'ꙃ',
1029
+ 'Ꙅ' => 'ꙅ',
1030
+ 'Ꙇ' => 'ꙇ',
1031
+ 'Ꙉ' => 'ꙉ',
1032
+ 'Ꙋ' => 'ꙋ',
1033
+ 'Ꙍ' => 'ꙍ',
1034
+ 'Ꙏ' => 'ꙏ',
1035
+ 'Ꙑ' => 'ꙑ',
1036
+ 'Ꙓ' => 'ꙓ',
1037
+ 'Ꙕ' => 'ꙕ',
1038
+ 'Ꙗ' => 'ꙗ',
1039
+ 'Ꙙ' => 'ꙙ',
1040
+ 'Ꙛ' => 'ꙛ',
1041
+ 'Ꙝ' => 'ꙝ',
1042
+ 'Ꙟ' => 'ꙟ',
1043
+ 'Ꙡ' => 'ꙡ',
1044
+ 'Ꙣ' => 'ꙣ',
1045
+ 'Ꙥ' => 'ꙥ',
1046
+ 'Ꙧ' => 'ꙧ',
1047
+ 'Ꙩ' => 'ꙩ',
1048
+ 'Ꙫ' => 'ꙫ',
1049
+ 'Ꙭ' => 'ꙭ',
1050
+ 'Ꚁ' => 'ꚁ',
1051
+ 'Ꚃ' => 'ꚃ',
1052
+ 'Ꚅ' => 'ꚅ',
1053
+ 'Ꚇ' => 'ꚇ',
1054
+ 'Ꚉ' => 'ꚉ',
1055
+ 'Ꚋ' => 'ꚋ',
1056
+ 'Ꚍ' => 'ꚍ',
1057
+ 'Ꚏ' => 'ꚏ',
1058
+ 'Ꚑ' => 'ꚑ',
1059
+ 'Ꚓ' => 'ꚓ',
1060
+ 'Ꚕ' => 'ꚕ',
1061
+ 'Ꚗ' => 'ꚗ',
1062
+ 'Ꚙ' => 'ꚙ',
1063
+ 'Ꚛ' => 'ꚛ',
1064
+ 'Ꜣ' => 'ꜣ',
1065
+ 'Ꜥ' => 'ꜥ',
1066
+ 'Ꜧ' => 'ꜧ',
1067
+ 'Ꜩ' => 'ꜩ',
1068
+ 'Ꜫ' => 'ꜫ',
1069
+ 'Ꜭ' => 'ꜭ',
1070
+ 'Ꜯ' => 'ꜯ',
1071
+ 'Ꜳ' => 'ꜳ',
1072
+ 'Ꜵ' => 'ꜵ',
1073
+ 'Ꜷ' => 'ꜷ',
1074
+ 'Ꜹ' => 'ꜹ',
1075
+ 'Ꜻ' => 'ꜻ',
1076
+ 'Ꜽ' => 'ꜽ',
1077
+ 'Ꜿ' => 'ꜿ',
1078
+ 'Ꝁ' => 'ꝁ',
1079
+ 'Ꝃ' => 'ꝃ',
1080
+ 'Ꝅ' => 'ꝅ',
1081
+ 'Ꝇ' => 'ꝇ',
1082
+ 'Ꝉ' => 'ꝉ',
1083
+ 'Ꝋ' => 'ꝋ',
1084
+ 'Ꝍ' => 'ꝍ',
1085
+ 'Ꝏ' => 'ꝏ',
1086
+ 'Ꝑ' => 'ꝑ',
1087
+ 'Ꝓ' => 'ꝓ',
1088
+ 'Ꝕ' => 'ꝕ',
1089
+ 'Ꝗ' => 'ꝗ',
1090
+ 'Ꝙ' => 'ꝙ',
1091
+ 'Ꝛ' => 'ꝛ',
1092
+ 'Ꝝ' => 'ꝝ',
1093
+ 'Ꝟ' => 'ꝟ',
1094
+ 'Ꝡ' => 'ꝡ',
1095
+ 'Ꝣ' => 'ꝣ',
1096
+ 'Ꝥ' => 'ꝥ',
1097
+ 'Ꝧ' => 'ꝧ',
1098
+ 'Ꝩ' => 'ꝩ',
1099
+ 'Ꝫ' => 'ꝫ',
1100
+ 'Ꝭ' => 'ꝭ',
1101
+ 'Ꝯ' => 'ꝯ',
1102
+ 'Ꝺ' => 'ꝺ',
1103
+ 'Ꝼ' => 'ꝼ',
1104
+ 'Ᵹ' => 'ᵹ',
1105
+ 'Ꝿ' => 'ꝿ',
1106
+ 'Ꞁ' => 'ꞁ',
1107
+ 'Ꞃ' => 'ꞃ',
1108
+ 'Ꞅ' => 'ꞅ',
1109
+ 'Ꞇ' => 'ꞇ',
1110
+ 'Ꞌ' => 'ꞌ',
1111
+ 'Ɥ' => 'ɥ',
1112
+ 'Ꞑ' => 'ꞑ',
1113
+ 'Ꞓ' => 'ꞓ',
1114
+ 'Ꞗ' => 'ꞗ',
1115
+ 'Ꞙ' => 'ꞙ',
1116
+ 'Ꞛ' => 'ꞛ',
1117
+ 'Ꞝ' => 'ꞝ',
1118
+ 'Ꞟ' => 'ꞟ',
1119
+ 'Ꞡ' => 'ꞡ',
1120
+ 'Ꞣ' => 'ꞣ',
1121
+ 'Ꞥ' => 'ꞥ',
1122
+ 'Ꞧ' => 'ꞧ',
1123
+ 'Ꞩ' => 'ꞩ',
1124
+ 'Ɦ' => 'ɦ',
1125
+ 'Ɜ' => 'ɜ',
1126
+ 'Ɡ' => 'ɡ',
1127
+ 'Ɬ' => 'ɬ',
1128
+ 'Ɪ' => 'ɪ',
1129
+ 'Ʞ' => 'ʞ',
1130
+ 'Ʇ' => 'ʇ',
1131
+ 'Ʝ' => 'ʝ',
1132
+ 'Ꭓ' => 'ꭓ',
1133
+ 'Ꞵ' => 'ꞵ',
1134
+ 'Ꞷ' => 'ꞷ',
1135
+ 'Ꞹ' => 'ꞹ',
1136
+ 'Ꞻ' => 'ꞻ',
1137
+ 'Ꞽ' => 'ꞽ',
1138
+ 'Ꞿ' => 'ꞿ',
1139
+ 'Ꟃ' => 'ꟃ',
1140
+ 'Ꞔ' => 'ꞔ',
1141
+ 'Ʂ' => 'ʂ',
1142
+ 'Ᶎ' => 'ᶎ',
1143
+ 'Ꟈ' => 'ꟈ',
1144
+ 'Ꟊ' => 'ꟊ',
1145
+ 'Ꟶ' => 'ꟶ',
1146
+ 'A' => 'a',
1147
+ 'B' => 'b',
1148
+ 'C' => 'c',
1149
+ 'D' => 'd',
1150
+ 'E' => 'e',
1151
+ 'F' => 'f',
1152
+ 'G' => 'g',
1153
+ 'H' => 'h',
1154
+ 'I' => 'i',
1155
+ 'J' => 'j',
1156
+ 'K' => 'k',
1157
+ 'L' => 'l',
1158
+ 'M' => 'm',
1159
+ 'N' => 'n',
1160
+ 'O' => 'o',
1161
+ 'P' => 'p',
1162
+ 'Q' => 'q',
1163
+ 'R' => 'r',
1164
+ 'S' => 's',
1165
+ 'T' => 't',
1166
+ 'U' => 'u',
1167
+ 'V' => 'v',
1168
+ 'W' => 'w',
1169
+ 'X' => 'x',
1170
+ 'Y' => 'y',
1171
+ 'Z' => 'z',
1172
+ '𐐀' => '𐐨',
1173
+ '𐐁' => '𐐩',
1174
+ '𐐂' => '𐐪',
1175
+ '𐐃' => '𐐫',
1176
+ '𐐄' => '𐐬',
1177
+ '𐐅' => '𐐭',
1178
+ '𐐆' => '𐐮',
1179
+ '𐐇' => '𐐯',
1180
+ '𐐈' => '𐐰',
1181
+ '𐐉' => '𐐱',
1182
+ '𐐊' => '𐐲',
1183
+ '𐐋' => '𐐳',
1184
+ '𐐌' => '𐐴',
1185
+ '𐐍' => '𐐵',
1186
+ '𐐎' => '𐐶',
1187
+ '𐐏' => '𐐷',
1188
+ '𐐐' => '𐐸',
1189
+ '𐐑' => '𐐹',
1190
+ '𐐒' => '𐐺',
1191
+ '𐐓' => '𐐻',
1192
+ '𐐔' => '𐐼',
1193
+ '𐐕' => '𐐽',
1194
+ '𐐖' => '𐐾',
1195
+ '𐐗' => '𐐿',
1196
+ '𐐘' => '𐑀',
1197
+ '𐐙' => '𐑁',
1198
+ '𐐚' => '𐑂',
1199
+ '𐐛' => '𐑃',
1200
+ '𐐜' => '𐑄',
1201
+ '𐐝' => '𐑅',
1202
+ '𐐞' => '𐑆',
1203
+ '𐐟' => '𐑇',
1204
+ '𐐠' => '𐑈',
1205
+ '𐐡' => '𐑉',
1206
+ '𐐢' => '𐑊',
1207
+ '𐐣' => '𐑋',
1208
+ '𐐤' => '𐑌',
1209
+ '𐐥' => '𐑍',
1210
+ '𐐦' => '𐑎',
1211
+ '𐐧' => '𐑏',
1212
+ '𐒰' => '𐓘',
1213
+ '𐒱' => '𐓙',
1214
+ '𐒲' => '𐓚',
1215
+ '𐒳' => '𐓛',
1216
+ '𐒴' => '𐓜',
1217
+ '𐒵' => '𐓝',
1218
+ '𐒶' => '𐓞',
1219
+ '𐒷' => '𐓟',
1220
+ '𐒸' => '𐓠',
1221
+ '𐒹' => '𐓡',
1222
+ '𐒺' => '𐓢',
1223
+ '𐒻' => '𐓣',
1224
+ '𐒼' => '𐓤',
1225
+ '𐒽' => '𐓥',
1226
+ '𐒾' => '𐓦',
1227
+ '𐒿' => '𐓧',
1228
+ '𐓀' => '𐓨',
1229
+ '𐓁' => '𐓩',
1230
+ '𐓂' => '𐓪',
1231
+ '𐓃' => '𐓫',
1232
+ '𐓄' => '𐓬',
1233
+ '𐓅' => '𐓭',
1234
+ '𐓆' => '𐓮',
1235
+ '𐓇' => '𐓯',
1236
+ '𐓈' => '𐓰',
1237
+ '𐓉' => '𐓱',
1238
+ '𐓊' => '𐓲',
1239
+ '𐓋' => '𐓳',
1240
+ '𐓌' => '𐓴',
1241
+ '𐓍' => '𐓵',
1242
+ '𐓎' => '𐓶',
1243
+ '𐓏' => '𐓷',
1244
+ '𐓐' => '𐓸',
1245
+ '𐓑' => '𐓹',
1246
+ '𐓒' => '𐓺',
1247
+ '𐓓' => '𐓻',
1248
+ '𐲀' => '𐳀',
1249
+ '𐲁' => '𐳁',
1250
+ '𐲂' => '𐳂',
1251
+ '𐲃' => '𐳃',
1252
+ '𐲄' => '𐳄',
1253
+ '𐲅' => '𐳅',
1254
+ '𐲆' => '𐳆',
1255
+ '𐲇' => '𐳇',
1256
+ '𐲈' => '𐳈',
1257
+ '𐲉' => '𐳉',
1258
+ '𐲊' => '𐳊',
1259
+ '𐲋' => '𐳋',
1260
+ '𐲌' => '𐳌',
1261
+ '𐲍' => '𐳍',
1262
+ '𐲎' => '𐳎',
1263
+ '𐲏' => '𐳏',
1264
+ '𐲐' => '𐳐',
1265
+ '𐲑' => '𐳑',
1266
+ '𐲒' => '𐳒',
1267
+ '𐲓' => '𐳓',
1268
+ '𐲔' => '𐳔',
1269
+ '𐲕' => '𐳕',
1270
+ '𐲖' => '𐳖',
1271
+ '𐲗' => '𐳗',
1272
+ '𐲘' => '𐳘',
1273
+ '𐲙' => '𐳙',
1274
+ '𐲚' => '𐳚',
1275
+ '𐲛' => '𐳛',
1276
+ '𐲜' => '𐳜',
1277
+ '𐲝' => '𐳝',
1278
+ '𐲞' => '𐳞',
1279
+ '𐲟' => '𐳟',
1280
+ '𐲠' => '𐳠',
1281
+ '𐲡' => '𐳡',
1282
+ '𐲢' => '𐳢',
1283
+ '𐲣' => '𐳣',
1284
+ '𐲤' => '𐳤',
1285
+ '𐲥' => '𐳥',
1286
+ '𐲦' => '𐳦',
1287
+ '𐲧' => '𐳧',
1288
+ '𐲨' => '𐳨',
1289
+ '𐲩' => '𐳩',
1290
+ '𐲪' => '𐳪',
1291
+ '𐲫' => '𐳫',
1292
+ '𐲬' => '𐳬',
1293
+ '𐲭' => '𐳭',
1294
+ '𐲮' => '𐳮',
1295
+ '𐲯' => '𐳯',
1296
+ '𐲰' => '𐳰',
1297
+ '𐲱' => '𐳱',
1298
+ '𐲲' => '𐳲',
1299
+ '𑢠' => '𑣀',
1300
+ '𑢡' => '𑣁',
1301
+ '𑢢' => '𑣂',
1302
+ '𑢣' => '𑣃',
1303
+ '𑢤' => '𑣄',
1304
+ '𑢥' => '𑣅',
1305
+ '𑢦' => '𑣆',
1306
+ '𑢧' => '𑣇',
1307
+ '𑢨' => '𑣈',
1308
+ '𑢩' => '𑣉',
1309
+ '𑢪' => '𑣊',
1310
+ '𑢫' => '𑣋',
1311
+ '𑢬' => '𑣌',
1312
+ '𑢭' => '𑣍',
1313
+ '𑢮' => '𑣎',
1314
+ '𑢯' => '𑣏',
1315
+ '𑢰' => '𑣐',
1316
+ '𑢱' => '𑣑',
1317
+ '𑢲' => '𑣒',
1318
+ '𑢳' => '𑣓',
1319
+ '𑢴' => '𑣔',
1320
+ '𑢵' => '𑣕',
1321
+ '𑢶' => '𑣖',
1322
+ '𑢷' => '𑣗',
1323
+ '𑢸' => '𑣘',
1324
+ '𑢹' => '𑣙',
1325
+ '𑢺' => '𑣚',
1326
+ '𑢻' => '𑣛',
1327
+ '𑢼' => '𑣜',
1328
+ '𑢽' => '𑣝',
1329
+ '𑢾' => '𑣞',
1330
+ '𑢿' => '𑣟',
1331
+ '𖹀' => '𖹠',
1332
+ '𖹁' => '𖹡',
1333
+ '𖹂' => '𖹢',
1334
+ '𖹃' => '𖹣',
1335
+ '𖹄' => '𖹤',
1336
+ '𖹅' => '𖹥',
1337
+ '𖹆' => '𖹦',
1338
+ '𖹇' => '𖹧',
1339
+ '𖹈' => '𖹨',
1340
+ '𖹉' => '𖹩',
1341
+ '𖹊' => '𖹪',
1342
+ '𖹋' => '𖹫',
1343
+ '𖹌' => '𖹬',
1344
+ '𖹍' => '𖹭',
1345
+ '𖹎' => '𖹮',
1346
+ '𖹏' => '𖹯',
1347
+ '𖹐' => '𖹰',
1348
+ '𖹑' => '𖹱',
1349
+ '𖹒' => '𖹲',
1350
+ '𖹓' => '𖹳',
1351
+ '𖹔' => '𖹴',
1352
+ '𖹕' => '𖹵',
1353
+ '𖹖' => '𖹶',
1354
+ '𖹗' => '𖹷',
1355
+ '𖹘' => '𖹸',
1356
+ '𖹙' => '𖹹',
1357
+ '𖹚' => '𖹺',
1358
+ '𖹛' => '𖹻',
1359
+ '𖹜' => '𖹼',
1360
+ '𖹝' => '𖹽',
1361
+ '𖹞' => '𖹾',
1362
+ '𖹟' => '𖹿',
1363
+ '𞤀' => '𞤢',
1364
+ '𞤁' => '𞤣',
1365
+ '𞤂' => '𞤤',
1366
+ '𞤃' => '𞤥',
1367
+ '𞤄' => '𞤦',
1368
+ '𞤅' => '𞤧',
1369
+ '𞤆' => '𞤨',
1370
+ '𞤇' => '𞤩',
1371
+ '𞤈' => '𞤪',
1372
+ '𞤉' => '𞤫',
1373
+ '𞤊' => '𞤬',
1374
+ '𞤋' => '𞤭',
1375
+ '𞤌' => '𞤮',
1376
+ '𞤍' => '𞤯',
1377
+ '𞤎' => '𞤰',
1378
+ '𞤏' => '𞤱',
1379
+ '𞤐' => '𞤲',
1380
+ '𞤑' => '𞤳',
1381
+ '𞤒' => '𞤴',
1382
+ '𞤓' => '𞤵',
1383
+ '𞤔' => '𞤶',
1384
+ '𞤕' => '𞤷',
1385
+ '𞤖' => '𞤸',
1386
+ '𞤗' => '𞤹',
1387
+ '𞤘' => '𞤺',
1388
+ '𞤙' => '𞤻',
1389
+ '𞤚' => '𞤼',
1390
+ '𞤛' => '𞤽',
1391
+ '𞤜' => '𞤾',
1392
+ '𞤝' => '𞤿',
1393
+ '𞤞' => '𞥀',
1394
+ '𞤟' => '𞥁',
1395
+ '𞤠' => '𞥂',
1396
+ '𞤡' => '𞥃',
1397
+ );
vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <?php
2
+
3
+ // from Case_Ignorable in https://unicode.org/Public/UNIDATA/DerivedCoreProperties.txt
4
+
5
+ return '/(?<![\x{0027}\x{002E}\x{003A}\x{005E}\x{0060}\x{00A8}\x{00AD}\x{00AF}\x{00B4}\x{00B7}\x{00B8}\x{02B0}-\x{02C1}\x{02C2}-\x{02C5}\x{02C6}-\x{02D1}\x{02D2}-\x{02DF}\x{02E0}-\x{02E4}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EE}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037A}\x{0384}-\x{0385}\x{0387}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0559}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{05F4}\x{0600}-\x{0605}\x{0610}-\x{061A}\x{061C}\x{0640}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DD}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07FA}\x{07FD}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0971}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E46}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EB9}\x{0EBB}-\x{0EBC}\x{0EC6}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{10FC}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17D7}\x{17DD}\x{180B}-\x{180D}\x{180E}\x{1843}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AA7}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1C78}-\x{1C7D}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1D2C}-\x{1D6A}\x{1D78}\x{1D9B}-\x{1DBF}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{200B}-\x{200F}\x{2018}\x{2019}\x{2024}\x{2027}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{2066}-\x{206F}\x{2071}\x{207F}\x{2090}-\x{209C}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2C7C}-\x{2C7D}\x{2CEF}-\x{2CF1}\x{2D6F}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E2F}\x{3005}\x{302A}-\x{302D}\x{3031}-\x{3035}\x{303B}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{309D}-\x{309E}\x{30FC}-\x{30FE}\x{A015}\x{A4F8}-\x{A4FD}\x{A60C}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A67F}\x{A69C}-\x{A69D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A770}\x{A788}\x{A789}-\x{A78A}\x{A7F8}-\x{A7F9}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}\x{A9CF}\x{A9E5}\x{A9E6}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA70}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AADD}\x{AAEC}-\x{AAED}\x{AAF3}-\x{AAF4}\x{AAF6}\x{AB5B}\x{AB5C}-\x{AB5F}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FBB2}-\x{FBC1}\x{FE00}-\x{FE0F}\x{FE13}\x{FE20}-\x{FE2F}\x{FE52}\x{FE55}\x{FEFF}\x{FF07}\x{FF0E}\x{FF1A}\x{FF3E}\x{FF40}\x{FF70}\x{FF9E}-\x{FF9F}\x{FFE3}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{110BD}\x{110CD}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16B40}-\x{16B43}\x{16F8F}-\x{16F92}\x{16F93}-\x{16F9F}\x{16FE0}-\x{16FE1}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1F3FB}-\x{1F3FF}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}])(\pL)(\pL*+)/u';
vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php ADDED
@@ -0,0 +1,1414 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ return array (
4
+ 'a' => 'A',
5
+ 'b' => 'B',
6
+ 'c' => 'C',
7
+ 'd' => 'D',
8
+ 'e' => 'E',
9
+ 'f' => 'F',
10
+ 'g' => 'G',
11
+ 'h' => 'H',
12
+ 'i' => 'I',
13
+ 'j' => 'J',
14
+ 'k' => 'K',
15
+ 'l' => 'L',
16
+ 'm' => 'M',
17
+ 'n' => 'N',
18
+ 'o' => 'O',
19
+ 'p' => 'P',
20
+ 'q' => 'Q',
21
+ 'r' => 'R',
22
+ 's' => 'S',
23
+ 't' => 'T',
24
+ 'u' => 'U',
25
+ 'v' => 'V',
26
+ 'w' => 'W',
27
+ 'x' => 'X',
28
+ 'y' => 'Y',
29
+ 'z' => 'Z',
30
+ 'µ' => 'Μ',
31
+ 'à' => 'À',
32
+ 'á' => 'Á',
33
+ 'â' => 'Â',
34
+ 'ã' => 'Ã',
35
+ 'ä' => 'Ä',
36
+ 'å' => 'Å',
37
+ 'æ' => 'Æ',
38
+ 'ç' => 'Ç',
39
+ 'è' => 'È',
40
+ 'é' => 'É',
41
+ 'ê' => 'Ê',
42
+ 'ë' => 'Ë',
43
+ 'ì' => 'Ì',
44
+ 'í' => 'Í',
45
+ 'î' => 'Î',
46
+ 'ï' => 'Ï',
47
+ 'ð' => 'Ð',
48
+ 'ñ' => 'Ñ',
49
+ 'ò' => 'Ò',
50
+ 'ó' => 'Ó',
51
+ 'ô' => 'Ô',
52
+ 'õ' => 'Õ',
53
+ 'ö' => 'Ö',
54
+ 'ø' => 'Ø',
55
+ 'ù' => 'Ù',
56
+ 'ú' => 'Ú',
57
+ 'û' => 'Û',
58
+ 'ü' => 'Ü',
59
+ 'ý' => 'Ý',
60
+ 'þ' => 'Þ',
61
+ 'ÿ' => 'Ÿ',
62
+ 'ā' => 'Ā',
63
+ 'ă' => 'Ă',
64
+ 'ą' => 'Ą',
65
+ 'ć' => 'Ć',
66
+ 'ĉ' => 'Ĉ',
67
+ 'ċ' => 'Ċ',
68
+ 'č' => 'Č',
69
+ 'ď' => 'Ď',
70
+ 'đ' => 'Đ',
71
+ 'ē' => 'Ē',
72
+ 'ĕ' => 'Ĕ',
73
+ 'ė' => 'Ė',
74
+ 'ę' => 'Ę',
75
+ 'ě' => 'Ě',
76
+ 'ĝ' => 'Ĝ',
77
+ 'ğ' => 'Ğ',
78
+ 'ġ' => 'Ġ',
79
+ 'ģ' => 'Ģ',
80
+ 'ĥ' => 'Ĥ',
81
+ 'ħ' => 'Ħ',
82
+ 'ĩ' => 'Ĩ',
83
+ 'ī' => 'Ī',
84
+ 'ĭ' => 'Ĭ',
85
+ 'į' => 'Į',
86
+ 'ı' => 'I',
87
+ 'ij' => 'IJ',
88
+ 'ĵ' => 'Ĵ',
89
+ 'ķ' => 'Ķ',
90
+ 'ĺ' => 'Ĺ',
91
+ 'ļ' => 'Ļ',
92
+ 'ľ' => 'Ľ',
93
+ 'ŀ' => 'Ŀ',
94
+ 'ł' => 'Ł',
95
+ 'ń' => 'Ń',
96
+ 'ņ' => 'Ņ',
97
+ 'ň' => 'Ň',
98
+ 'ŋ' => 'Ŋ',
99
+ 'ō' => 'Ō',
100
+ 'ŏ' => 'Ŏ',
101
+ 'ő' => 'Ő',
102
+ 'œ' => 'Œ',
103
+ 'ŕ' => 'Ŕ',
104
+ 'ŗ' => 'Ŗ',
105
+ 'ř' => 'Ř',
106
+ 'ś' => 'Ś',
107
+ 'ŝ' => 'Ŝ',
108
+ 'ş' => 'Ş',
109
+ 'š' => 'Š',
110
+ 'ţ' => 'Ţ',
111
+ 'ť' => 'Ť',
112
+ 'ŧ' => 'Ŧ',
113
+ 'ũ' => 'Ũ',
114
+ 'ū' => 'Ū',
115
+ 'ŭ' => 'Ŭ',
116
+ 'ů' => 'Ů',
117
+ 'ű' => 'Ű',
118
+ 'ų' => 'Ų',
119
+ 'ŵ' => 'Ŵ',
120
+ 'ŷ' => 'Ŷ',
121
+ 'ź' => 'Ź',
122
+ 'ż' => 'Ż',
123
+ 'ž' => 'Ž',
124
+ 'ſ' => 'S',
125
+ 'ƀ' => 'Ƀ',
126
+ 'ƃ' => 'Ƃ',
127
+ 'ƅ' => 'Ƅ',
128
+ 'ƈ' => 'Ƈ',
129
+ 'ƌ' => 'Ƌ',
130
+ 'ƒ' => 'Ƒ',
131
+ 'ƕ' => 'Ƕ',
132
+ 'ƙ' => 'Ƙ',
133
+ 'ƚ' => 'Ƚ',
134
+ 'ƞ' => 'Ƞ',
135
+ 'ơ' => 'Ơ',
136
+ 'ƣ' => 'Ƣ',
137
+ 'ƥ' => 'Ƥ',
138
+ 'ƨ' => 'Ƨ',
139
+ 'ƭ' => 'Ƭ',
140
+ 'ư' => 'Ư',
141
+ 'ƴ' => 'Ƴ',
142
+ 'ƶ' => 'Ƶ',
143
+ 'ƹ' => 'Ƹ',
144
+ 'ƽ' => 'Ƽ',
145
+ 'ƿ' => 'Ƿ',
146
+ 'Dž' => 'DŽ',
147
+ 'dž' => 'DŽ',
148
+ 'Lj' => 'LJ',
149
+ 'lj' => 'LJ',
150
+ 'Nj' => 'NJ',
151
+ 'nj' => 'NJ',
152
+ 'ǎ' => 'Ǎ',
153
+ 'ǐ' => 'Ǐ',
154
+ 'ǒ' => 'Ǒ',
155
+ 'ǔ' => 'Ǔ',
156
+ 'ǖ' => 'Ǖ',
157
+ 'ǘ' => 'Ǘ',
158
+ 'ǚ' => 'Ǚ',
159
+ 'ǜ' => 'Ǜ',
160
+ 'ǝ' => 'Ǝ',
161
+ 'ǟ' => 'Ǟ',
162
+ 'ǡ' => 'Ǡ',
163
+ 'ǣ' => 'Ǣ',
164
+ 'ǥ' => 'Ǥ',
165
+ 'ǧ' => 'Ǧ',
166
+ 'ǩ' => 'Ǩ',
167
+ 'ǫ' => 'Ǫ',
168
+ 'ǭ' => 'Ǭ',
169
+ 'ǯ' => 'Ǯ',
170
+ 'Dz' => 'DZ',
171
+ 'dz' => 'DZ',
172
+ 'ǵ' => 'Ǵ',
173
+ 'ǹ' => 'Ǹ',
174
+ 'ǻ' => 'Ǻ',
175
+ 'ǽ' => 'Ǽ',
176
+ 'ǿ' => 'Ǿ',
177
+ 'ȁ' => 'Ȁ',
178
+ 'ȃ' => 'Ȃ',
179
+ 'ȅ' => 'Ȅ',
180
+ 'ȇ' => 'Ȇ',
181
+ 'ȉ' => 'Ȉ',
182
+ 'ȋ' => 'Ȋ',
183
+ 'ȍ' => 'Ȍ',
184
+ 'ȏ' => 'Ȏ',
185
+ 'ȑ' => 'Ȑ',
186
+ 'ȓ' => 'Ȓ',
187
+ 'ȕ' => 'Ȕ',
188
+ 'ȗ' => 'Ȗ',
189
+ 'ș' => 'Ș',
190
+ 'ț' => 'Ț',
191
+ 'ȝ' => 'Ȝ',
192
+ 'ȟ' => 'Ȟ',
193
+ 'ȣ' => 'Ȣ',
194
+ 'ȥ' => 'Ȥ',
195
+ 'ȧ' => 'Ȧ',
196
+ 'ȩ' => 'Ȩ',
197
+ 'ȫ' => 'Ȫ',
198
+ 'ȭ' => 'Ȭ',
199
+ 'ȯ' => 'Ȯ',
200
+ 'ȱ' => 'Ȱ',
201
+ 'ȳ' => 'Ȳ',
202
+ 'ȼ' => 'Ȼ',
203
+ 'ȿ' => 'Ȿ',
204
+ 'ɀ' => 'Ɀ',
205
+ 'ɂ' => 'Ɂ',
206
+ 'ɇ' => 'Ɇ',
207
+ 'ɉ' => 'Ɉ',
208
+ 'ɋ' => 'Ɋ',
209
+ 'ɍ' => 'Ɍ',
210
+ 'ɏ' => 'Ɏ',
211
+ 'ɐ' => 'Ɐ',
212
+ 'ɑ' => 'Ɑ',
213
+ 'ɒ' => 'Ɒ',
214
+ 'ɓ' => 'Ɓ',
215
+ 'ɔ' => 'Ɔ',
216
+ 'ɖ' => 'Ɖ',
217
+ 'ɗ' => 'Ɗ',
218
+ 'ə' => 'Ə',
219
+ 'ɛ' => 'Ɛ',
220
+ 'ɜ' => 'Ɜ',
221
+ 'ɠ' => 'Ɠ',
222
+ 'ɡ' => 'Ɡ',
223
+ 'ɣ' => 'Ɣ',
224
+ 'ɥ' => 'Ɥ',
225
+ 'ɦ' => 'Ɦ',
226
+ 'ɨ' => 'Ɨ',
227
+ 'ɩ' => 'Ɩ',
228
+ 'ɪ' => 'Ɪ',
229
+ 'ɫ' => 'Ɫ',
230
+ 'ɬ' => 'Ɬ',
231
+ 'ɯ' => 'Ɯ',
232
+ 'ɱ' => 'Ɱ',
233
+ 'ɲ' => 'Ɲ',
234
+ 'ɵ' => 'Ɵ',
235
+ 'ɽ' => 'Ɽ',
236
+ 'ʀ' => 'Ʀ',
237
+ 'ʂ' => 'Ʂ',
238
+ 'ʃ' => 'Ʃ',
239
+ 'ʇ' => 'Ʇ',
240
+ 'ʈ' => 'Ʈ',
241
+ 'ʉ' => 'Ʉ',
242
+ 'ʊ' => 'Ʊ',
243
+ 'ʋ' => 'Ʋ',
244
+ 'ʌ' => 'Ʌ',
245
+ 'ʒ' => 'Ʒ',
246
+ 'ʝ' => 'Ʝ',
247
+ 'ʞ' => 'Ʞ',
248
+ 'ͅ' => 'Ι',
249
+ 'ͱ' => 'Ͱ',
250
+ 'ͳ' => 'Ͳ',
251
+ 'ͷ' => 'Ͷ',
252
+ 'ͻ' => 'Ͻ',
253
+ 'ͼ' => 'Ͼ',
254
+ 'ͽ' => 'Ͽ',
255
+ 'ά' => 'Ά',
256
+ 'έ' => 'Έ',
257
+ 'ή' => 'Ή',
258
+ 'ί' => 'Ί',
259
+ 'α' => 'Α',
260
+ 'β' => 'Β',
261
+ 'γ' => 'Γ',
262
+ 'δ' => 'Δ',
263
+ 'ε' => 'Ε',
264
+ 'ζ' => 'Ζ',
265
+ 'η' => 'Η',
266
+ 'θ' => 'Θ',
267
+ 'ι' => 'Ι',
268
+ 'κ' => 'Κ',
269
+ 'λ' => 'Λ',
270
+ 'μ' => 'Μ',
271
+ 'ν' => 'Ν',
272
+ 'ξ' => 'Ξ',
273
+ 'ο' => 'Ο',
274
+ 'π' => 'Π',
275
+ 'ρ' => 'Ρ',
276
+ 'ς' => 'Σ',
277
+ 'σ' => 'Σ',
278
+ 'τ' => 'Τ',
279
+ 'υ' => 'Υ',
280
+ 'φ' => 'Φ',
281
+ 'χ' => 'Χ',
282
+ 'ψ' => 'Ψ',
283
+ 'ω' => 'Ω',
284
+ 'ϊ' => 'Ϊ',
285
+ 'ϋ' => 'Ϋ',
286
+ 'ό' => 'Ό',
287
+ 'ύ' => 'Ύ',
288
+ 'ώ' => 'Ώ',
289
+ 'ϐ' => 'Β',
290
+ 'ϑ' => 'Θ',
291
+ 'ϕ' => 'Φ',
292
+ 'ϖ' => 'Π',
293
+ 'ϗ' => 'Ϗ',
294
+ 'ϙ' => 'Ϙ',
295
+ 'ϛ' => 'Ϛ',
296
+ 'ϝ' => 'Ϝ',
297
+ 'ϟ' => 'Ϟ',
298
+ 'ϡ' => 'Ϡ',
299
+ 'ϣ' => 'Ϣ',
300
+ 'ϥ' => 'Ϥ',
301
+ 'ϧ' => 'Ϧ',
302
+ 'ϩ' => 'Ϩ',
303
+ 'ϫ' => 'Ϫ',
304
+ 'ϭ' => 'Ϭ',
305
+ 'ϯ' => 'Ϯ',
306
+ 'ϰ' => 'Κ',
307
+ 'ϱ' => 'Ρ',
308
+ 'ϲ' => 'Ϲ',
309
+ 'ϳ' => 'Ϳ',
310
+ 'ϵ' => 'Ε',
311
+ 'ϸ' => 'Ϸ',
312
+ 'ϻ' => 'Ϻ',
313
+ 'а' => 'А',
314
+ 'б' => 'Б',
315
+ 'в' => 'В',
316
+ 'г' => 'Г',
317
+ 'д' => 'Д',
318
+ 'е' => 'Е',
319
+ 'ж' => 'Ж',
320
+ 'з' => 'З',
321
+ 'и' => 'И',
322
+ 'й' => 'Й',
323
+ 'к' => 'К',
324
+ 'л' => 'Л',
325
+ 'м' => 'М',
326
+ 'н' => 'Н',
327
+ 'о' => 'О',
328
+ 'п' => 'П',
329
+ 'р' => 'Р',
330
+ 'с' => 'С',
331
+ 'т' => 'Т',
332
+ 'у' => 'У',
333
+ 'ф' => 'Ф',
334
+ 'х' => 'Х',
335
+ 'ц' => 'Ц',
336
+ 'ч' => 'Ч',
337
+ 'ш' => 'Ш',
338
+ 'щ' => 'Щ',
339
+ 'ъ' => 'Ъ',
340
+ 'ы' => 'Ы',
341
+ 'ь' => 'Ь',
342
+ 'э' => 'Э',
343
+ 'ю' => 'Ю',
344
+ 'я' => 'Я',
345
+ 'ѐ' => 'Ѐ',
346
+ 'ё' => 'Ё',
347
+ 'ђ' => 'Ђ',
348
+ 'ѓ' => 'Ѓ',
349
+ 'є' => 'Є',
350
+ 'ѕ' => 'Ѕ',
351
+ 'і' => 'І',
352
+ 'ї' => 'Ї',
353
+ 'ј' => 'Ј',
354
+ 'љ' => 'Љ',
355
+ 'њ' => 'Њ',
356
+ 'ћ' => 'Ћ',
357
+ 'ќ' => 'Ќ',
358
+ 'ѝ' => 'Ѝ',
359
+ 'ў' => 'Ў',
360
+ 'џ' => 'Џ',
361
+ 'ѡ' => 'Ѡ',
362
+ 'ѣ' => 'Ѣ',
363
+ 'ѥ' => 'Ѥ',
364
+ 'ѧ' => 'Ѧ',
365
+ 'ѩ' => 'Ѩ',
366
+ 'ѫ' => 'Ѫ',
367
+ 'ѭ' => 'Ѭ',
368
+ 'ѯ' => 'Ѯ',
369
+ 'ѱ' => 'Ѱ',
370
+ 'ѳ' => 'Ѳ',
371
+ 'ѵ' => 'Ѵ',
372
+ 'ѷ' => 'Ѷ',
373
+ 'ѹ' => 'Ѹ',
374
+ 'ѻ' => 'Ѻ',
375
+ 'ѽ' => 'Ѽ',
376
+ 'ѿ' => 'Ѿ',
377
+ 'ҁ' => 'Ҁ',
378
+ 'ҋ' => 'Ҋ',
379
+ 'ҍ' => 'Ҍ',
380
+ 'ҏ' => 'Ҏ',
381
+ 'ґ' => 'Ґ',
382
+ 'ғ' => 'Ғ',
383
+ 'ҕ' => 'Ҕ',
384
+ 'җ' => 'Җ',
385
+ 'ҙ' => 'Ҙ',
386
+ 'қ' => 'Қ',
387
+ 'ҝ' => 'Ҝ',
388
+ 'ҟ' => 'Ҟ',
389
+ 'ҡ' => 'Ҡ',
390
+ 'ң' => 'Ң',
391
+ 'ҥ' => 'Ҥ',
392
+ 'ҧ' => 'Ҧ',
393
+ 'ҩ' => 'Ҩ',
394
+ 'ҫ' => 'Ҫ',
395
+ 'ҭ' => 'Ҭ',
396
+ 'ү' => 'Ү',
397
+ 'ұ' => 'Ұ',
398
+ 'ҳ' => 'Ҳ',
399
+ 'ҵ' => 'Ҵ',
400
+ 'ҷ' => 'Ҷ',
401
+ 'ҹ' => 'Ҹ',
402
+ 'һ' => 'Һ',
403
+ 'ҽ' => 'Ҽ',
404
+ 'ҿ' => 'Ҿ',
405
+ 'ӂ' => 'Ӂ',
406
+ 'ӄ' => 'Ӄ',
407
+ 'ӆ' => 'Ӆ',
408
+ 'ӈ' => 'Ӈ',
409
+ 'ӊ' => 'Ӊ',
410
+ 'ӌ' => 'Ӌ',
411
+ 'ӎ' => 'Ӎ',
412
+ 'ӏ' => 'Ӏ',
413
+ 'ӑ' => 'Ӑ',
414
+ 'ӓ' => 'Ӓ',
415
+ 'ӕ' => 'Ӕ',
416
+ 'ӗ' => 'Ӗ',
417
+ 'ә' => 'Ә',
418
+ 'ӛ' => 'Ӛ',
419
+ 'ӝ' => 'Ӝ',
420
+ 'ӟ' => 'Ӟ',
421
+ 'ӡ' => 'Ӡ',
422
+ 'ӣ' => 'Ӣ',
423
+ 'ӥ' => 'Ӥ',
424
+ 'ӧ' => 'Ӧ',
425
+ 'ө' => 'Ө',
426
+ 'ӫ' => 'Ӫ',
427
+ 'ӭ' => 'Ӭ',
428
+ 'ӯ' => 'Ӯ',
429
+ 'ӱ' => 'Ӱ',
430
+ 'ӳ' => 'Ӳ',
431
+ 'ӵ' => 'Ӵ',
432
+ 'ӷ' => 'Ӷ',
433
+ 'ӹ' => 'Ӹ',
434
+ 'ӻ' => 'Ӻ',
435
+ 'ӽ' => 'Ӽ',
436
+ 'ӿ' => 'Ӿ',
437
+ 'ԁ' => 'Ԁ',
438
+ 'ԃ' => 'Ԃ',
439
+ 'ԅ' => 'Ԅ',
440
+ 'ԇ' => 'Ԇ',
441
+ 'ԉ' => 'Ԉ',
442
+ 'ԋ' => 'Ԋ',
443
+ 'ԍ' => 'Ԍ',
444
+ 'ԏ' => 'Ԏ',
445
+ 'ԑ' => 'Ԑ',
446
+ 'ԓ' => 'Ԓ',
447
+ 'ԕ' => 'Ԕ',
448
+ 'ԗ' => 'Ԗ',
449
+ 'ԙ' => 'Ԙ',
450
+ 'ԛ' => 'Ԛ',
451
+ 'ԝ' => 'Ԝ',
452
+ 'ԟ' => 'Ԟ',
453
+ 'ԡ' => 'Ԡ',
454
+ 'ԣ' => 'Ԣ',
455
+ 'ԥ' => 'Ԥ',
456
+ 'ԧ' => 'Ԧ',
457
+ 'ԩ' => 'Ԩ',
458
+ 'ԫ' => 'Ԫ',
459
+ 'ԭ' => 'Ԭ',
460
+ 'ԯ' => 'Ԯ',
461
+ 'ա' => 'Ա',
462
+ 'բ' => 'Բ',
463
+ 'գ' => 'Գ',
464
+ 'դ' => 'Դ',
465
+ 'ե' => 'Ե',
466
+ 'զ' => 'Զ',
467
+ 'է' => 'Է',
468
+ 'ը' => 'Ը',
469
+ 'թ' => 'Թ',
470
+ 'ժ' => 'Ժ',
471
+ 'ի' => 'Ի',
472
+ 'լ' => 'Լ',
473
+ 'խ' => 'Խ',
474
+ 'ծ' => 'Ծ',
475
+ 'կ' => 'Կ',
476
+ 'հ' => 'Հ',
477
+ 'ձ' => 'Ձ',
478
+ 'ղ' => 'Ղ',
479
+ 'ճ' => 'Ճ',
480
+ 'մ' => 'Մ',
481
+ 'յ' => 'Յ',
482
+ 'ն' => 'Ն',
483
+ 'շ' => 'Շ',
484
+ 'ո' => 'Ո',
485
+ 'չ' => 'Չ',
486
+ 'պ' => 'Պ',
487
+ 'ջ' => 'Ջ',
488
+ 'ռ' => 'Ռ',
489
+ 'ս' => 'Ս',
490
+ 'վ' => 'Վ',
491
+ 'տ' => 'Տ',
492
+ 'ր' => 'Ր',
493
+ 'ց' => 'Ց',
494
+ 'ւ' => 'Ւ',
495
+ 'փ' => 'Փ',
496
+ 'ք' => 'Ք',
497
+ 'օ' => 'Օ',
498
+ 'ֆ' => 'Ֆ',
499
+ 'ა' => 'Ა',
500
+ 'ბ' => 'Ბ',
501
+ 'გ' => 'Გ',
502
+ 'დ' => 'Დ',
503
+ 'ე' => 'Ე',
504
+ 'ვ' => 'Ვ',
505
+ 'ზ' => 'Ზ',
506
+ 'თ' => 'Თ',
507
+ 'ი' => 'Ი',
508
+ 'კ' => 'Კ',
509
+ 'ლ' => 'Ლ',
510
+ 'მ' => 'Მ',
511
+ 'ნ' => 'Ნ',
512
+ 'ო' => 'Ო',
513
+ 'პ' => 'Პ',
514
+ 'ჟ' => 'Ჟ',
515
+ 'რ' => 'Რ',
516
+ 'ს' => 'Ს',
517
+ 'ტ' => 'Ტ',
518
+ 'უ' => 'Უ',
519
+ 'ფ' => 'Ფ',
520
+ 'ქ' => 'Ქ',
521
+ 'ღ' => 'Ღ',
522
+ 'ყ' => 'Ყ',
523
+ 'შ' => 'Შ',
524
+ 'ჩ' => 'Ჩ',
525
+ 'ც' => 'Ც',
526
+ 'ძ' => 'Ძ',
527
+ 'წ' => 'Წ',
528
+ 'ჭ' => 'Ჭ',
529
+ 'ხ' => 'Ხ',
530
+ 'ჯ' => 'Ჯ',
531
+ 'ჰ' => 'Ჰ',
532
+ 'ჱ' => 'Ჱ',
533
+ 'ჲ' => 'Ჲ',
534
+ 'ჳ' => 'Ჳ',
535
+ 'ჴ' => 'Ჴ',
536
+ 'ჵ' => 'Ჵ',
537
+ 'ჶ' => 'Ჶ',
538
+ 'ჷ' => 'Ჷ',
539
+ 'ჸ' => 'Ჸ',
540
+ 'ჹ' => 'Ჹ',
541
+ 'ჺ' => 'Ჺ',
542
+ 'ჽ' => 'Ჽ',
543
+ 'ჾ' => 'Ჾ',
544
+ 'ჿ' => 'Ჿ',
545
+ 'ᏸ' => 'Ᏸ',
546
+ 'ᏹ' => 'Ᏹ',
547
+ 'ᏺ' => 'Ᏺ',
548
+ 'ᏻ' => 'Ᏻ',
549
+ 'ᏼ' => 'Ᏼ',
550
+ 'ᏽ' => 'Ᏽ',
551
+ 'ᲀ' => 'В',
552
+ 'ᲁ' => 'Д',
553
+ 'ᲂ' => 'О',
554
+ 'ᲃ' => 'С',
555
+ 'ᲄ' => 'Т',
556
+ 'ᲅ' => 'Т',
557
+ 'ᲆ' => 'Ъ',
558
+ 'ᲇ' => 'Ѣ',
559
+ 'ᲈ' => 'Ꙋ',
560
+ 'ᵹ' => 'Ᵹ',
561
+ 'ᵽ' => 'Ᵽ',
562
+ 'ᶎ' => 'Ᶎ',
563
+ 'ḁ' => 'Ḁ',
564
+ 'ḃ' => 'Ḃ',
565
+ 'ḅ' => 'Ḅ',
566
+ 'ḇ' => 'Ḇ',
567
+ 'ḉ' => 'Ḉ',
568
+ 'ḋ' => 'Ḋ',
569
+ 'ḍ' => 'Ḍ',
570
+ 'ḏ' => 'Ḏ',
571
+ 'ḑ' => 'Ḑ',
572
+ 'ḓ' => 'Ḓ',
573
+ 'ḕ' => 'Ḕ',
574
+ 'ḗ' => 'Ḗ',
575
+ 'ḙ' => 'Ḙ',
576
+ 'ḛ' => 'Ḛ',
577
+ 'ḝ' => 'Ḝ',
578
+ 'ḟ' => 'Ḟ',
579
+ 'ḡ' => 'Ḡ',
580
+ 'ḣ' => 'Ḣ',
581
+ 'ḥ' => 'Ḥ',
582
+ 'ḧ' => 'Ḧ',
583
+ 'ḩ' => 'Ḩ',
584
+ 'ḫ' => 'Ḫ',
585
+ 'ḭ' => 'Ḭ',
586
+ 'ḯ' => 'Ḯ',
587
+ 'ḱ' => 'Ḱ',
588
+ 'ḳ' => 'Ḳ',
589
+ 'ḵ' => 'Ḵ',
590
+ 'ḷ' => 'Ḷ',
591
+ 'ḹ' => 'Ḹ',
592
+ 'ḻ' => 'Ḻ',
593
+ 'ḽ' => 'Ḽ',
594
+ 'ḿ' => 'Ḿ',
595
+ 'ṁ' => 'Ṁ',
596
+ 'ṃ' => 'Ṃ',
597
+ 'ṅ' => 'Ṅ',
598
+ 'ṇ' => 'Ṇ',
599
+ 'ṉ' => 'Ṉ',
600
+ 'ṋ' => 'Ṋ',
601
+ 'ṍ' => 'Ṍ',
602
+ 'ṏ' => 'Ṏ',
603
+ 'ṑ' => 'Ṑ',
604
+ 'ṓ' => 'Ṓ',
605
+ 'ṕ' => 'Ṕ',
606
+ 'ṗ' => 'Ṗ',
607
+ 'ṙ' => 'Ṙ',
608
+ 'ṛ' => 'Ṛ',
609
+ 'ṝ' => 'Ṝ',
610
+ 'ṟ' => 'Ṟ',
611
+ 'ṡ' => 'Ṡ',
612
+ 'ṣ' => 'Ṣ',
613
+ 'ṥ' => 'Ṥ',
614
+ 'ṧ' => 'Ṧ',
615
+ 'ṩ' => 'Ṩ',
616
+ 'ṫ' => 'Ṫ',
617
+ 'ṭ' => 'Ṭ',
618
+ 'ṯ' => 'Ṯ',
619
+ 'ṱ' => 'Ṱ',
620
+ 'ṳ' => 'Ṳ',
621
+ 'ṵ' => 'Ṵ',
622
+ 'ṷ' => 'Ṷ',
623
+ 'ṹ' => 'Ṹ',
624
+ 'ṻ' => 'Ṻ',
625
+ 'ṽ' => 'Ṽ',
626
+ 'ṿ' => 'Ṿ',
627
+ 'ẁ' => 'Ẁ',
628
+ 'ẃ' => 'Ẃ',
629
+ 'ẅ' => 'Ẅ',
630
+ 'ẇ' => 'Ẇ',
631
+ 'ẉ' => 'Ẉ',
632
+ 'ẋ' => 'Ẋ',
633
+ 'ẍ' => 'Ẍ',
634
+ 'ẏ' => 'Ẏ',
635
+ 'ẑ' => 'Ẑ',
636
+ 'ẓ' => 'Ẓ',
637
+ 'ẕ' => 'Ẕ',
638
+ 'ẛ' => 'Ṡ',
639
+ 'ạ' => 'Ạ',
640
+ 'ả' => 'Ả',
641
+ 'ấ' => 'Ấ',
642
+ 'ầ' => 'Ầ',
643
+ 'ẩ' => 'Ẩ',
644
+ 'ẫ' => 'Ẫ',
645
+ 'ậ' => 'Ậ',
646
+ 'ắ' => 'Ắ',
647
+ 'ằ' => 'Ằ',
648
+ 'ẳ' => 'Ẳ',
649
+ 'ẵ' => 'Ẵ',
650
+ 'ặ' => 'Ặ',
651
+ 'ẹ' => 'Ẹ',
652
+ 'ẻ' => 'Ẻ',
653
+ 'ẽ' => 'Ẽ',
654
+ 'ế' => 'Ế',
655
+ 'ề' => 'Ề',
656
+ 'ể' => 'Ể',
657
+ 'ễ' => 'Ễ',
658
+ 'ệ' => 'Ệ',
659
+ 'ỉ' => 'Ỉ',
660
+ 'ị' => 'Ị',
661
+ 'ọ' => 'Ọ',
662
+ 'ỏ' => 'Ỏ',
663
+ 'ố' => 'Ố',
664
+ 'ồ' => 'Ồ',
665
+ 'ổ' => 'Ổ',
666
+ 'ỗ' => 'Ỗ',
667
+ 'ộ' => 'Ộ',
668
+ 'ớ' => 'Ớ',
669
+ 'ờ' => 'Ờ',
670
+ 'ở' => 'Ở',
671
+ 'ỡ' => 'Ỡ',
672
+ 'ợ' => 'Ợ',
673
+ 'ụ' => 'Ụ',
674
+ 'ủ' => 'Ủ',
675
+ 'ứ' => 'Ứ',
676
+ 'ừ' => 'Ừ',
677
+ 'ử' => 'Ử',
678
+ 'ữ' => 'Ữ',
679
+ 'ự' => 'Ự',
680
+ 'ỳ' => 'Ỳ',
681
+ 'ỵ' => 'Ỵ',
682
+ 'ỷ' => 'Ỷ',
683
+ 'ỹ' => 'Ỹ',
684
+ 'ỻ' => 'Ỻ',
685
+ 'ỽ' => 'Ỽ',
686
+ 'ỿ' => 'Ỿ',
687
+ 'ἀ' => 'Ἀ',
688
+ 'ἁ' => 'Ἁ',
689
+ 'ἂ' => 'Ἂ',
690
+ 'ἃ' => 'Ἃ',
691
+ 'ἄ' => 'Ἄ',
692
+ 'ἅ' => 'Ἅ',
693
+ 'ἆ' => 'Ἆ',
694
+ 'ἇ' => 'Ἇ',
695
+ 'ἐ' => 'Ἐ',
696
+ 'ἑ' => 'Ἑ',
697
+ 'ἒ' => 'Ἒ',
698
+ 'ἓ' => 'Ἓ',
699
+ 'ἔ' => 'Ἔ',
700
+ 'ἕ' => 'Ἕ',
701
+ 'ἠ' => 'Ἠ',
702
+ 'ἡ' => 'Ἡ',
703
+ 'ἢ' => 'Ἢ',
704
+ 'ἣ' => 'Ἣ',
705
+ 'ἤ' => 'Ἤ',
706
+ 'ἥ' => 'Ἥ',
707
+ 'ἦ' => 'Ἦ',
708
+ 'ἧ' => 'Ἧ',
709
+ 'ἰ' => 'Ἰ',
710
+ 'ἱ' => 'Ἱ',
711
+ 'ἲ' => 'Ἲ',
712
+ 'ἳ' => 'Ἳ',
713
+ 'ἴ' => 'Ἴ',
714
+ 'ἵ' => 'Ἵ',
715
+ 'ἶ' => 'Ἶ',
716
+ 'ἷ' => 'Ἷ',
717
+ 'ὀ' => 'Ὀ',
718
+ 'ὁ' => 'Ὁ',
719
+ 'ὂ' => 'Ὂ',
720
+ 'ὃ' => 'Ὃ',
721
+ 'ὄ' => 'Ὄ',
722
+ 'ὅ' => 'Ὅ',
723
+ 'ὑ' => 'Ὑ',
724
+ 'ὓ' => 'Ὓ',
725
+ 'ὕ' => 'Ὕ',
726
+ 'ὗ' => 'Ὗ',
727
+ 'ὠ' => 'Ὠ',
728
+ 'ὡ' => 'Ὡ',
729
+ 'ὢ' => 'Ὢ',
730
+ 'ὣ' => 'Ὣ',
731
+ 'ὤ' => 'Ὤ',
732
+ 'ὥ' => 'Ὥ',
733
+ 'ὦ' => 'Ὦ',
734
+ 'ὧ' => 'Ὧ',
735
+ 'ὰ' => 'Ὰ',
736
+ 'ά' => 'Ά',
737
+ 'ὲ' => 'Ὲ',
738
+ 'έ' => 'Έ',
739
+ 'ὴ' => 'Ὴ',
740
+ 'ή' => 'Ή',
741
+ 'ὶ' => 'Ὶ',
742
+ 'ί' => 'Ί',
743
+ 'ὸ' => 'Ὸ',
744
+ 'ό' => 'Ό',
745
+ 'ὺ' => 'Ὺ',
746
+ 'ύ' => 'Ύ',
747
+ 'ὼ' => 'Ὼ',
748
+ 'ώ' => 'Ώ',
749
+ 'ᾀ' => 'ᾈ',
750
+ 'ᾁ' => 'ᾉ',
751
+ 'ᾂ' => 'ᾊ',
752
+ 'ᾃ' => 'ᾋ',
753
+ 'ᾄ' => 'ᾌ',
754
+ 'ᾅ' => 'ᾍ',
755
+ 'ᾆ' => 'ᾎ',
756
+ 'ᾇ' => 'ᾏ',
757
+ 'ᾐ' => 'ᾘ',
758
+ 'ᾑ' => 'ᾙ',
759
+ 'ᾒ' => 'ᾚ',
760
+ 'ᾓ' => 'ᾛ',
761
+ 'ᾔ' => 'ᾜ',
762
+ 'ᾕ' => 'ᾝ',
763
+ 'ᾖ' => 'ᾞ',
764
+ 'ᾗ' => 'ᾟ',
765
+ 'ᾠ' => 'ᾨ',
766
+ 'ᾡ' => 'ᾩ',
767
+ 'ᾢ' => 'ᾪ',
768
+ 'ᾣ' => 'ᾫ',
769
+ 'ᾤ' => 'ᾬ',
770
+ 'ᾥ' => 'ᾭ',
771
+ 'ᾦ' => 'ᾮ',
772
+ 'ᾧ' => 'ᾯ',
773
+ 'ᾰ' => 'Ᾰ',
774
+ 'ᾱ' => 'Ᾱ',
775
+ 'ᾳ' => 'ᾼ',
776
+ 'ι' => 'Ι',
777
+ 'ῃ' => 'ῌ',
778
+ 'ῐ' => 'Ῐ',
779
+ 'ῑ' => 'Ῑ',
780
+ 'ῠ' => 'Ῠ',
781
+ 'ῡ' => 'Ῡ',
782
+ 'ῥ' => 'Ῥ',
783
+ 'ῳ' => 'ῼ',
784
+ 'ⅎ' => 'Ⅎ',
785
+ 'ⅰ' => 'Ⅰ',
786
+ 'ⅱ' => 'Ⅱ',
787
+ 'ⅲ' => 'Ⅲ',
788
+ 'ⅳ' => 'Ⅳ',
789
+ 'ⅴ' => 'Ⅴ',
790
+ 'ⅵ' => 'Ⅵ',
791
+ 'ⅶ' => 'Ⅶ',
792
+ 'ⅷ' => 'Ⅷ',
793
+ 'ⅸ' => 'Ⅸ',
794
+ 'ⅹ' => 'Ⅹ',
795
+ 'ⅺ' => 'Ⅺ',
796
+ 'ⅻ' => 'Ⅻ',
797
+ 'ⅼ' => 'Ⅼ',
798
+ 'ⅽ' => 'Ⅽ',
799
+ 'ⅾ' => 'Ⅾ',
800
+ 'ⅿ' => 'Ⅿ',
801
+ 'ↄ' => 'Ↄ',
802
+ 'ⓐ' => 'Ⓐ',
803
+ 'ⓑ' => 'Ⓑ',
804
+ 'ⓒ' => 'Ⓒ',
805
+ 'ⓓ' => 'Ⓓ',
806
+ 'ⓔ' => 'Ⓔ',
807
+ 'ⓕ' => 'Ⓕ',
808
+ 'ⓖ' => 'Ⓖ',
809
+ 'ⓗ' => 'Ⓗ',
810
+ 'ⓘ' => 'Ⓘ',
811
+ 'ⓙ' => 'Ⓙ',
812
+ 'ⓚ' => 'Ⓚ',
813
+ 'ⓛ' => 'Ⓛ',
814
+ 'ⓜ' => 'Ⓜ',
815
+ 'ⓝ' => 'Ⓝ',
816
+ 'ⓞ' => 'Ⓞ',
817
+ 'ⓟ' => 'Ⓟ',
818
+ 'ⓠ' => 'Ⓠ',
819
+ 'ⓡ' => 'Ⓡ',
820
+ 'ⓢ' => 'Ⓢ',
821
+ 'ⓣ' => 'Ⓣ',
822
+ 'ⓤ' => 'Ⓤ',
823
+ 'ⓥ' => 'Ⓥ',
824
+ 'ⓦ' => 'Ⓦ',
825
+ 'ⓧ' => 'Ⓧ',
826
+ 'ⓨ' => 'Ⓨ',
827
+ 'ⓩ' => 'Ⓩ',
828
+ 'ⰰ' => 'Ⰰ',
829
+ 'ⰱ' => 'Ⰱ',
830
+ 'ⰲ' => 'Ⰲ',
831
+ 'ⰳ' => 'Ⰳ',
832
+ 'ⰴ' => 'Ⰴ',
833
+ 'ⰵ' => 'Ⰵ',
834
+ 'ⰶ' => 'Ⰶ',
835
+ 'ⰷ' => 'Ⰷ',
836
+ 'ⰸ' => 'Ⰸ',
837
+ 'ⰹ' => 'Ⰹ',
838
+ 'ⰺ' => 'Ⰺ',
839
+ 'ⰻ' => 'Ⰻ',
840
+ 'ⰼ' => 'Ⰼ',
841
+ 'ⰽ' => 'Ⰽ',
842
+ 'ⰾ' => 'Ⰾ',
843
+ 'ⰿ' => 'Ⰿ',
844
+ 'ⱀ' => 'Ⱀ',
845
+ 'ⱁ' => 'Ⱁ',
846
+ 'ⱂ' => 'Ⱂ',
847
+ 'ⱃ' => 'Ⱃ',
848
+ 'ⱄ' => 'Ⱄ',
849
+ 'ⱅ' => 'Ⱅ',
850
+ 'ⱆ' => 'Ⱆ',
851
+ 'ⱇ' => 'Ⱇ',
852
+ 'ⱈ' => 'Ⱈ',
853
+ 'ⱉ' => 'Ⱉ',
854
+ 'ⱊ' => 'Ⱊ',
855
+ 'ⱋ' => 'Ⱋ',
856
+ 'ⱌ' => 'Ⱌ',
857
+ 'ⱍ' => 'Ⱍ',
858
+ 'ⱎ' => 'Ⱎ',
859
+ 'ⱏ' => 'Ⱏ',
860
+ 'ⱐ' => 'Ⱐ',
861
+ 'ⱑ' => 'Ⱑ',
862
+ 'ⱒ' => 'Ⱒ',
863
+ 'ⱓ' => 'Ⱓ',
864
+ 'ⱔ' => 'Ⱔ',
865
+ 'ⱕ' => 'Ⱕ',
866
+ 'ⱖ' => 'Ⱖ',
867
+ 'ⱗ' => 'Ⱗ',
868
+ 'ⱘ' => 'Ⱘ',
869
+ 'ⱙ' => 'Ⱙ',
870
+ 'ⱚ' => 'Ⱚ',
871
+ 'ⱛ' => 'Ⱛ',
872
+ 'ⱜ' => 'Ⱜ',
873
+ 'ⱝ' => 'Ⱝ',
874
+ 'ⱞ' => 'Ⱞ',
875
+ 'ⱡ' => 'Ⱡ',
876
+ 'ⱥ' => 'Ⱥ',
877
+ 'ⱦ' => 'Ⱦ',
878
+ 'ⱨ' => 'Ⱨ',
879
+ 'ⱪ' => 'Ⱪ',
880
+ 'ⱬ' => 'Ⱬ',
881
+ 'ⱳ' => 'Ⱳ',
882
+ 'ⱶ' => 'Ⱶ',
883
+ 'ⲁ' => 'Ⲁ',
884
+ 'ⲃ' => 'Ⲃ',
885
+ 'ⲅ' => 'Ⲅ',
886
+ 'ⲇ' => 'Ⲇ',
887
+ 'ⲉ' => 'Ⲉ',
888
+ 'ⲋ' => 'Ⲋ',
889
+ 'ⲍ' => 'Ⲍ',
890
+ 'ⲏ' => 'Ⲏ',
891
+ 'ⲑ' => 'Ⲑ',
892
+ 'ⲓ' => 'Ⲓ',
893
+ 'ⲕ' => 'Ⲕ',
894
+ 'ⲗ' => 'Ⲗ',
895
+ 'ⲙ' => 'Ⲙ',
896
+ 'ⲛ' => 'Ⲛ',
897
+ 'ⲝ' => 'Ⲝ',
898
+ 'ⲟ' => 'Ⲟ',
899
+ 'ⲡ' => 'Ⲡ',
900
+ 'ⲣ' => 'Ⲣ',
901
+ 'ⲥ' => 'Ⲥ',
902
+ 'ⲧ' => 'Ⲧ',
903
+ 'ⲩ' => 'Ⲩ',
904
+ 'ⲫ' => 'Ⲫ',
905
+ 'ⲭ' => 'Ⲭ',
906
+ 'ⲯ' => 'Ⲯ',
907
+ 'ⲱ' => 'Ⲱ',
908
+ 'ⲳ' => 'Ⲳ',
909
+ 'ⲵ' => 'Ⲵ',
910
+ 'ⲷ' => 'Ⲷ',
911
+ 'ⲹ' => 'Ⲹ',
912
+ 'ⲻ' => 'Ⲻ',
913
+ 'ⲽ' => 'Ⲽ',
914
+ 'ⲿ' => 'Ⲿ',
915
+ 'ⳁ' => 'Ⳁ',
916
+ 'ⳃ' => 'Ⳃ',
917
+ 'ⳅ' => 'Ⳅ',
918
+ 'ⳇ' => 'Ⳇ',
919
+ 'ⳉ' => 'Ⳉ',
920
+ 'ⳋ' => 'Ⳋ',
921
+ 'ⳍ' => 'Ⳍ',
922
+ 'ⳏ' => 'Ⳏ',
923
+ 'ⳑ' => 'Ⳑ',
924
+ 'ⳓ' => 'Ⳓ',
925
+ 'ⳕ' => 'Ⳕ',
926
+ 'ⳗ' => 'Ⳗ',
927
+ 'ⳙ' => 'Ⳙ',
928
+ 'ⳛ' => 'Ⳛ',
929
+ 'ⳝ' => 'Ⳝ',
930
+ 'ⳟ' => 'Ⳟ',
931
+ 'ⳡ' => 'Ⳡ',
932
+ 'ⳣ' => 'Ⳣ',
933
+ 'ⳬ' => 'Ⳬ',
934
+ 'ⳮ' => 'Ⳮ',
935
+ 'ⳳ' => 'Ⳳ',
936
+ 'ⴀ' => 'Ⴀ',
937
+ 'ⴁ' => 'Ⴁ',
938
+ 'ⴂ' => 'Ⴂ',
939
+ 'ⴃ' => 'Ⴃ',
940
+ 'ⴄ' => 'Ⴄ',
941
+ 'ⴅ' => 'Ⴅ',
942
+ 'ⴆ' => 'Ⴆ',
943
+ 'ⴇ' => 'Ⴇ',
944
+ 'ⴈ' => 'Ⴈ',
945
+ 'ⴉ' => 'Ⴉ',
946
+ 'ⴊ' => 'Ⴊ',
947
+ 'ⴋ' => 'Ⴋ',
948
+ 'ⴌ' => 'Ⴌ',
949
+ 'ⴍ' => 'Ⴍ',
950
+ 'ⴎ' => 'Ⴎ',
951
+ 'ⴏ' => 'Ⴏ',
952
+ 'ⴐ' => 'Ⴐ',
953
+ 'ⴑ' => 'Ⴑ',
954
+ 'ⴒ' => 'Ⴒ',
955
+ 'ⴓ' => 'Ⴓ',
956
+ 'ⴔ' => 'Ⴔ',
957
+ 'ⴕ' => 'Ⴕ',
958
+ 'ⴖ' => 'Ⴖ',
959
+ 'ⴗ' => 'Ⴗ',
960
+ 'ⴘ' => 'Ⴘ',
961
+ 'ⴙ' => 'Ⴙ',
962
+ 'ⴚ' => 'Ⴚ',
963
+ 'ⴛ' => 'Ⴛ',
964
+ 'ⴜ' => 'Ⴜ',
965
+ 'ⴝ' => 'Ⴝ',
966
+ 'ⴞ' => 'Ⴞ',
967
+ 'ⴟ' => 'Ⴟ',
968
+ 'ⴠ' => 'Ⴠ',
969
+ 'ⴡ' => 'Ⴡ',
970
+ 'ⴢ' => 'Ⴢ',
971
+ 'ⴣ' => 'Ⴣ',
972
+ 'ⴤ' => 'Ⴤ',
973
+ 'ⴥ' => 'Ⴥ',
974
+ 'ⴧ' => 'Ⴧ',
975
+ 'ⴭ' => 'Ⴭ',
976
+ 'ꙁ' => 'Ꙁ',
977
+ 'ꙃ' => 'Ꙃ',
978
+ 'ꙅ' => 'Ꙅ',
979
+ 'ꙇ' => 'Ꙇ',
980
+ 'ꙉ' => 'Ꙉ',
981
+ 'ꙋ' => 'Ꙋ',
982
+ 'ꙍ' => 'Ꙍ',
983
+ 'ꙏ' => 'Ꙏ',
984
+ 'ꙑ' => 'Ꙑ',
985
+ 'ꙓ' => 'Ꙓ',
986
+ 'ꙕ' => 'Ꙕ',
987
+ 'ꙗ' => 'Ꙗ',
988
+ 'ꙙ' => 'Ꙙ',
989
+ 'ꙛ' => 'Ꙛ',
990
+ 'ꙝ' => 'Ꙝ',
991
+ 'ꙟ' => 'Ꙟ',
992
+ 'ꙡ' => 'Ꙡ',
993
+ 'ꙣ' => 'Ꙣ',
994
+ 'ꙥ' => 'Ꙥ',
995
+ 'ꙧ' => 'Ꙧ',
996
+ 'ꙩ' => 'Ꙩ',
997
+ 'ꙫ' => 'Ꙫ',
998
+ 'ꙭ' => 'Ꙭ',
999
+ 'ꚁ' => 'Ꚁ',
1000
+ 'ꚃ' => 'Ꚃ',
1001
+ 'ꚅ' => 'Ꚅ',
1002
+ 'ꚇ' => 'Ꚇ',
1003
+ 'ꚉ' => 'Ꚉ',
1004
+ 'ꚋ' => 'Ꚋ',
1005
+ 'ꚍ' => 'Ꚍ',
1006
+ 'ꚏ' => 'Ꚏ',
1007
+ 'ꚑ' => 'Ꚑ',
1008
+ 'ꚓ' => 'Ꚓ',
1009
+ 'ꚕ' => 'Ꚕ',
1010
+ 'ꚗ' => 'Ꚗ',
1011
+ 'ꚙ' => 'Ꚙ',
1012
+ 'ꚛ' => 'Ꚛ',
1013
+ 'ꜣ' => 'Ꜣ',
1014
+ 'ꜥ' => 'Ꜥ',
1015
+ 'ꜧ' => 'Ꜧ',
1016
+ 'ꜩ' => 'Ꜩ',
1017
+ 'ꜫ' => 'Ꜫ',
1018
+ 'ꜭ' => 'Ꜭ',
1019
+ 'ꜯ' => 'Ꜯ',
1020
+ 'ꜳ' => 'Ꜳ',
1021
+ 'ꜵ' => 'Ꜵ',
1022
+ 'ꜷ' => 'Ꜷ',
1023
+ 'ꜹ' => 'Ꜹ',
1024
+ 'ꜻ' => 'Ꜻ',
1025
+ 'ꜽ' => 'Ꜽ',
1026
+ 'ꜿ' => 'Ꜿ',
1027
+ 'ꝁ' => 'Ꝁ',
1028
+ 'ꝃ' => 'Ꝃ',
1029
+ 'ꝅ' => 'Ꝅ',
1030
+ 'ꝇ' => 'Ꝇ',
1031
+ 'ꝉ' => 'Ꝉ',
1032
+ 'ꝋ' => 'Ꝋ',
1033
+ 'ꝍ' => 'Ꝍ',
1034
+ 'ꝏ' => 'Ꝏ',
1035
+ 'ꝑ' => 'Ꝑ',
1036
+ 'ꝓ' => 'Ꝓ',
1037
+ 'ꝕ' => 'Ꝕ',
1038
+ 'ꝗ' => 'Ꝗ',
1039
+ 'ꝙ' => 'Ꝙ',
1040
+ 'ꝛ' => 'Ꝛ',
1041
+ 'ꝝ' => 'Ꝝ',
1042
+ 'ꝟ' => 'Ꝟ',
1043
+ 'ꝡ' => 'Ꝡ',
1044
+ 'ꝣ' => 'Ꝣ',
1045
+ 'ꝥ' => 'Ꝥ',
1046
+ 'ꝧ' => 'Ꝧ',
1047
+ 'ꝩ' => 'Ꝩ',
1048
+ 'ꝫ' => 'Ꝫ',
1049
+ 'ꝭ' => 'Ꝭ',
1050
+ 'ꝯ' => 'Ꝯ',
1051
+ 'ꝺ' => 'Ꝺ',
1052
+ 'ꝼ' => 'Ꝼ',
1053
+ 'ꝿ' => 'Ꝿ',
1054
+ 'ꞁ' => 'Ꞁ',
1055
+ 'ꞃ' => 'Ꞃ',
1056
+ 'ꞅ' => 'Ꞅ',
1057
+ 'ꞇ' => 'Ꞇ',
1058
+ 'ꞌ' => 'Ꞌ',
1059
+ 'ꞑ' => 'Ꞑ',
1060
+ 'ꞓ' => 'Ꞓ',
1061
+ 'ꞔ' => 'Ꞔ',
1062
+ 'ꞗ' => 'Ꞗ',
1063
+ 'ꞙ' => 'Ꞙ',
1064
+ 'ꞛ' => 'Ꞛ',
1065
+ 'ꞝ' => 'Ꞝ',
1066
+ 'ꞟ' => 'Ꞟ',
1067
+ 'ꞡ' => 'Ꞡ',
1068
+ 'ꞣ' => 'Ꞣ',
1069
+ 'ꞥ' => 'Ꞥ',
1070
+ 'ꞧ' => 'Ꞧ',
1071
+ 'ꞩ' => 'Ꞩ',
1072
+ 'ꞵ' => 'Ꞵ',
1073
+ 'ꞷ' => 'Ꞷ',
1074
+ 'ꞹ' => 'Ꞹ',
1075
+ 'ꞻ' => 'Ꞻ',
1076
+ 'ꞽ' => 'Ꞽ',
1077
+ 'ꞿ' => 'Ꞿ',
1078
+ 'ꟃ' => 'Ꟃ',
1079
+ 'ꟈ' => 'Ꟈ',
1080
+ 'ꟊ' => 'Ꟊ',
1081
+ 'ꟶ' => 'Ꟶ',
1082
+ 'ꭓ' => 'Ꭓ',
1083
+ 'ꭰ' => 'Ꭰ',
1084
+ 'ꭱ' => 'Ꭱ',
1085
+ 'ꭲ' => 'Ꭲ',
1086
+ 'ꭳ' => 'Ꭳ',
1087
+ 'ꭴ' => 'Ꭴ',
1088
+ 'ꭵ' => 'Ꭵ',
1089
+ 'ꭶ' => 'Ꭶ',
1090
+ 'ꭷ' => 'Ꭷ',
1091
+ 'ꭸ' => 'Ꭸ',
1092
+ 'ꭹ' => 'Ꭹ',
1093
+ 'ꭺ' => 'Ꭺ',
1094
+ 'ꭻ' => 'Ꭻ',
1095
+ 'ꭼ' => 'Ꭼ',
1096
+ 'ꭽ' => 'Ꭽ',
1097
+ 'ꭾ' => 'Ꭾ',
1098
+ 'ꭿ' => 'Ꭿ',
1099
+ 'ꮀ' => 'Ꮀ',
1100
+ 'ꮁ' => 'Ꮁ',
1101
+ 'ꮂ' => 'Ꮂ',
1102
+ 'ꮃ' => 'Ꮃ',
1103
+ 'ꮄ' => 'Ꮄ',
1104
+ 'ꮅ' => 'Ꮅ',
1105
+ 'ꮆ' => 'Ꮆ',
1106
+ 'ꮇ' => 'Ꮇ',
1107
+ 'ꮈ' => 'Ꮈ',
1108
+ 'ꮉ' => 'Ꮉ',
1109
+ 'ꮊ' => 'Ꮊ',
1110
+ 'ꮋ' => 'Ꮋ',
1111
+ 'ꮌ' => 'Ꮌ',
1112
+ 'ꮍ' => 'Ꮍ',
1113
+ 'ꮎ' => 'Ꮎ',
1114
+ 'ꮏ' => 'Ꮏ',
1115
+ 'ꮐ' => 'Ꮐ',
1116
+ 'ꮑ' => 'Ꮑ',
1117
+ 'ꮒ' => 'Ꮒ',
1118
+ 'ꮓ' => 'Ꮓ',
1119
+ 'ꮔ' => 'Ꮔ',
1120
+ 'ꮕ' => 'Ꮕ',
1121
+ 'ꮖ' => 'Ꮖ',
1122
+ 'ꮗ' => 'Ꮗ',
1123
+ 'ꮘ' => 'Ꮘ',
1124
+ 'ꮙ' => 'Ꮙ',
1125
+ 'ꮚ' => 'Ꮚ',
1126
+ 'ꮛ' => 'Ꮛ',
1127
+ 'ꮜ' => 'Ꮜ',
1128
+ 'ꮝ' => 'Ꮝ',
1129
+ 'ꮞ' => 'Ꮞ',
1130
+ 'ꮟ' => 'Ꮟ',
1131
+ 'ꮠ' => 'Ꮠ',
1132
+ 'ꮡ' => 'Ꮡ',
1133
+ 'ꮢ' => 'Ꮢ',
1134
+ 'ꮣ' => 'Ꮣ',
1135
+ 'ꮤ' => 'Ꮤ',
1136
+ 'ꮥ' => 'Ꮥ',
1137
+ 'ꮦ' => 'Ꮦ',
1138
+ 'ꮧ' => 'Ꮧ',
1139
+ 'ꮨ' => 'Ꮨ',
1140
+ 'ꮩ' => 'Ꮩ',
1141
+ 'ꮪ' => 'Ꮪ',
1142
+ 'ꮫ' => 'Ꮫ',
1143
+ 'ꮬ' => 'Ꮬ',
1144
+ 'ꮭ' => 'Ꮭ',
1145
+ 'ꮮ' => 'Ꮮ',
1146
+ 'ꮯ' => 'Ꮯ',
1147
+ 'ꮰ' => 'Ꮰ',
1148
+ 'ꮱ' => 'Ꮱ',
1149
+ 'ꮲ' => 'Ꮲ',
1150
+ 'ꮳ' => 'Ꮳ',
1151
+ 'ꮴ' => 'Ꮴ',
1152
+ 'ꮵ' => 'Ꮵ',
1153
+ 'ꮶ' => 'Ꮶ',
1154
+ 'ꮷ' => 'Ꮷ',
1155
+ 'ꮸ' => 'Ꮸ',
1156
+ 'ꮹ' => 'Ꮹ',
1157
+ 'ꮺ' => 'Ꮺ',
1158
+ 'ꮻ' => 'Ꮻ',
1159
+ 'ꮼ' => 'Ꮼ',
1160
+ 'ꮽ' => 'Ꮽ',
1161
+ 'ꮾ' => 'Ꮾ',
1162
+ 'ꮿ' => 'Ꮿ',
1163
+ 'a' => 'A',
1164
+ 'b' => 'B',
1165
+ 'c' => 'C',
1166
+ 'd' => 'D',
1167
+ 'e' => 'E',
1168
+ 'f' => 'F',
1169
+ 'g' => 'G',
1170
+ 'h' => 'H',
1171
+ 'i' => 'I',
1172
+ 'j' => 'J',
1173
+ 'k' => 'K',
1174
+ 'l' => 'L',
1175
+ 'm' => 'M',
1176
+ 'n' => 'N',
1177
+ 'o' => 'O',
1178
+ 'p' => 'P',
1179
+ 'q' => 'Q',
1180
+ 'r' => 'R',
1181
+ 's' => 'S',
1182
+ 't' => 'T',
1183
+ 'u' => 'U',
1184
+ 'v' => 'V',
1185
+ 'w' => 'W',
1186
+ 'x' => 'X',
1187
+ 'y' => 'Y',
1188
+ 'z' => 'Z',
1189
+ '𐐨' => '𐐀',
1190
+ '𐐩' => '𐐁',
1191
+ '𐐪' => '𐐂',
1192
+ '𐐫' => '𐐃',
1193
+ '𐐬' => '𐐄',
1194
+ '𐐭' => '𐐅',
1195
+ '𐐮' => '𐐆',
1196
+ '𐐯' => '𐐇',
1197
+ '𐐰' => '𐐈',
1198
+ '𐐱' => '𐐉',
1199
+ '𐐲' => '𐐊',
1200
+ '𐐳' => '𐐋',
1201
+ '𐐴' => '𐐌',
1202
+ '𐐵' => '𐐍',
1203
+ '𐐶' => '𐐎',
1204
+ '𐐷' => '𐐏',
1205
+ '𐐸' => '𐐐',
1206
+ '𐐹' => '𐐑',
1207
+ '𐐺' => '𐐒',
1208
+ '𐐻' => '𐐓',
1209
+ '𐐼' => '𐐔',
1210
+ '𐐽' => '𐐕',
1211
+ '𐐾' => '𐐖',
1212
+ '𐐿' => '𐐗',
1213
+ '𐑀' => '𐐘',
1214
+ '𐑁' => '𐐙',
1215
+ '𐑂' => '𐐚',
1216
+ '𐑃' => '𐐛',
1217
+ '𐑄' => '𐐜',
1218
+ '𐑅' => '𐐝',
1219
+ '𐑆' => '𐐞',
1220
+ '𐑇' => '𐐟',
1221
+ '𐑈' => '𐐠',
1222
+ '𐑉' => '𐐡',
1223
+ '𐑊' => '𐐢',
1224
+ '𐑋' => '𐐣',
1225
+ '𐑌' => '𐐤',
1226
+ '𐑍' => '𐐥',
1227
+ '𐑎' => '𐐦',
1228
+ '𐑏' => '𐐧',
1229
+ '𐓘' => '𐒰',
1230
+ '𐓙' => '𐒱',
1231
+ '𐓚' => '𐒲',
1232
+ '𐓛' => '𐒳',
1233
+ '𐓜' => '𐒴',
1234
+ '𐓝' => '𐒵',
1235
+ '𐓞' => '𐒶',
1236
+ '𐓟' => '𐒷',
1237
+ '𐓠' => '𐒸',
1238
+ '𐓡' => '𐒹',
1239
+ '𐓢' => '𐒺',
1240
+ '𐓣' => '𐒻',
1241
+ '𐓤' => '𐒼',
1242
+ '𐓥' => '𐒽',
1243
+ '𐓦' => '𐒾',
1244
+ '𐓧' => '𐒿',
1245
+ '𐓨' => '𐓀',
1246
+ '𐓩' => '𐓁',
1247
+ '𐓪' => '𐓂',
1248
+ '𐓫' => '𐓃',
1249
+ '𐓬' => '𐓄',
1250
+ '𐓭' => '𐓅',
1251
+ '𐓮' => '𐓆',
1252
+ '𐓯' => '𐓇',
1253
+ '𐓰' => '𐓈',
1254
+ '𐓱' => '𐓉',
1255
+ '𐓲' => '𐓊',
1256
+ '𐓳' => '𐓋',
1257
+ '𐓴' => '𐓌',
1258
+ '𐓵' => '𐓍',
1259
+ '𐓶' => '𐓎',
1260
+ '𐓷' => '𐓏',
1261
+ '𐓸' => '𐓐',
1262
+ '𐓹' => '𐓑',
1263
+ '𐓺' => '𐓒',
1264
+ '𐓻' => '𐓓',
1265
+ '𐳀' => '𐲀',
1266
+ '𐳁' => '𐲁',
1267
+ '𐳂' => '𐲂',
1268
+ '𐳃' => '𐲃',
1269
+ '𐳄' => '𐲄',
1270
+ '𐳅' => '𐲅',
1271
+ '𐳆' => '𐲆',
1272
+ '𐳇' => '𐲇',
1273
+ '𐳈' => '𐲈',
1274
+ '𐳉' => '𐲉',
1275
+ '𐳊' => '𐲊',
1276
+ '𐳋' => '𐲋',
1277
+ '𐳌' => '𐲌',
1278
+ '𐳍' => '𐲍',
1279
+ '𐳎' => '𐲎',
1280
+ '𐳏' => '𐲏',
1281
+ '𐳐' => '𐲐',
1282
+ '𐳑' => '𐲑',
1283
+ '𐳒' => '𐲒',
1284
+ '𐳓' => '𐲓',
1285
+ '𐳔' => '𐲔',
1286
+ '𐳕' => '𐲕',
1287
+ '𐳖' => '𐲖',
1288
+ '𐳗' => '𐲗',
1289
+ '𐳘' => '𐲘',
1290
+ '𐳙' => '𐲙',
1291
+ '𐳚' => '𐲚',
1292
+ '𐳛' => '𐲛',
1293
+ '𐳜' => '𐲜',
1294
+ '𐳝' => '𐲝',
1295
+ '𐳞' => '𐲞',
1296
+ '𐳟' => '𐲟',
1297
+ '𐳠' => '𐲠',
1298
+ '𐳡' => '𐲡',
1299
+ '𐳢' => '𐲢',
1300
+ '𐳣' => '𐲣',
1301
+ '𐳤' => '𐲤',
1302
+ '𐳥' => '𐲥',
1303
+ '𐳦' => '𐲦',
1304
+ '𐳧' => '𐲧',
1305
+ '𐳨' => '𐲨',
1306
+ '𐳩' => '𐲩',
1307
+ '𐳪' => '𐲪',
1308
+ '𐳫' => '𐲫',
1309
+ '𐳬' => '𐲬',
1310
+ '𐳭' => '𐲭',
1311
+ '𐳮' => '𐲮',
1312
+ '𐳯' => '𐲯',
1313
+ '𐳰' => '𐲰',
1314
+ '𐳱' => '𐲱',
1315
+ '𐳲' => '𐲲',
1316
+ '𑣀' => '𑢠',
1317
+ '𑣁' => '𑢡',
1318
+ '𑣂' => '𑢢',
1319
+ '𑣃' => '𑢣',
1320
+ '𑣄' => '𑢤',
1321
+ '𑣅' => '𑢥',
1322
+ '𑣆' => '𑢦',
1323
+ '𑣇' => '𑢧',
1324
+ '𑣈' => '𑢨',
1325
+ '𑣉' => '𑢩',
1326
+ '𑣊' => '𑢪',
1327
+ '𑣋' => '𑢫',
1328
+ '𑣌' => '𑢬',
1329
+ '𑣍' => '𑢭',
1330
+ '𑣎' => '𑢮',
1331
+ '𑣏' => '𑢯',
1332
+ '𑣐' => '𑢰',
1333
+ '𑣑' => '𑢱',
1334
+ '𑣒' => '𑢲',
1335
+ '𑣓' => '𑢳',
1336
+ '𑣔' => '𑢴',
1337
+ '𑣕' => '𑢵',
1338
+ '𑣖' => '𑢶',
1339
+ '𑣗' => '𑢷',
1340
+ '𑣘' => '𑢸',
1341
+ '𑣙' => '𑢹',
1342
+ '𑣚' => '𑢺',
1343
+ '𑣛' => '𑢻',
1344
+ '𑣜' => '𑢼',
1345
+ '𑣝' => '𑢽',
1346
+ '𑣞' => '𑢾',
1347
+ '𑣟' => '𑢿',
1348
+ '𖹠' => '𖹀',
1349
+ '𖹡' => '𖹁',
1350
+ '𖹢' => '𖹂',
1351
+ '𖹣' => '𖹃',
1352
+ '𖹤' => '𖹄',
1353
+ '𖹥' => '𖹅',
1354
+ '𖹦' => '𖹆',
1355
+ '𖹧' => '𖹇',
1356
+ '𖹨' => '𖹈',
1357
+ '𖹩' => '𖹉',
1358
+ '𖹪' => '𖹊',
1359
+ '𖹫' => '𖹋',
1360
+ '𖹬' => '𖹌',
1361
+ '𖹭' => '𖹍',
1362
+ '𖹮' => '𖹎',
1363
+ '𖹯' => '𖹏',
1364
+ '𖹰' => '𖹐',
1365
+ '𖹱' => '𖹑',
1366
+ '𖹲' => '𖹒',
1367
+ '𖹳' => '𖹓',
1368
+ '𖹴' => '𖹔',
1369
+ '𖹵' => '𖹕',
1370
+ '𖹶' => '𖹖',
1371
+ '𖹷' => '𖹗',
1372
+ '𖹸' => '𖹘',
1373
+ '𖹹' => '𖹙',
1374
+ '𖹺' => '𖹚',
1375
+ '𖹻' => '𖹛',
1376
+ '𖹼' => '𖹜',
1377
+ '𖹽' => '𖹝',
1378
+ '𖹾' => '𖹞',
1379
+ '𖹿' => '𖹟',
1380
+ '𞤢' => '𞤀',
1381
+ '𞤣' => '𞤁',
1382
+ '𞤤' => '𞤂',
1383
+ '𞤥' => '𞤃',
1384
+ '𞤦' => '𞤄',
1385
+ '𞤧' => '𞤅',
1386
+ '𞤨' => '𞤆',
1387
+ '𞤩' => '𞤇',
1388
+ '𞤪' => '𞤈',
1389
+ '𞤫' => '𞤉',
1390
+ '𞤬' => '𞤊',
1391
+ '𞤭' => '𞤋',
1392
+ '𞤮' => '𞤌',
1393
+ '𞤯' => '𞤍',
1394
+ '𞤰' => '𞤎',
1395
+ '𞤱' => '𞤏',
1396
+ '𞤲' => '𞤐',
1397
+ '𞤳' => '𞤑',
1398
+ '𞤴' => '𞤒',
1399
+ '𞤵' => '𞤓',
1400
+ '𞤶' => '𞤔',
1401
+ '𞤷' => '𞤕',
1402
+ '𞤸' => '𞤖',
1403
+ '𞤹' => '𞤗',
1404
+ '𞤺' => '𞤘',
1405
+ '𞤻' => '𞤙',
1406
+ '𞤼' => '𞤚',
1407
+ '𞤽' => '𞤛',
1408
+ '𞤾' => '𞤜',
1409
+ '𞤿' => '𞤝',
1410
+ '𞥀' => '𞤞',
1411
+ '𞥁' => '𞤟',
1412
+ '𞥂' => '𞤠',
1413
+ '𞥃' => '𞤡',
1414
+ );
vendor/symfony/polyfill-mbstring/bootstrap.php ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Symfony package.
5
+ *
6
+ * (c) Fabien Potencier <fabien@symfony.com>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ use Symfony\Polyfill\Mbstring as p;
13
+
14
+ if (!function_exists('mb_convert_encoding')) {
15
+ function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); }
16
+ }
17
+ if (!function_exists('mb_decode_mimeheader')) {
18
+ function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); }
19
+ }
20
+ if (!function_exists('mb_encode_mimeheader')) {
21
+ function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); }
22
+ }
23
+ if (!function_exists('mb_decode_numericentity')) {
24
+ function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); }
25
+ }
26
+ if (!function_exists('mb_encode_numericentity')) {
27
+ function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); }
28
+ }
29
+ if (!function_exists('mb_convert_case')) {
30
+ function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); }
31
+ }
32
+ if (!function_exists('mb_internal_encoding')) {
33
+ function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); }
34
+ }
35
+ if (!function_exists('mb_language')) {
36
+ function mb_language($language = null) { return p\Mbstring::mb_language($language); }
37
+ }
38
+ if (!function_exists('mb_list_encodings')) {
39
+ function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
40
+ }
41
+ if (!function_exists('mb_encoding_aliases')) {
42
+ function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
43
+ }
44
+ if (!function_exists('mb_check_encoding')) {
45
+ function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); }
46
+ }
47
+ if (!function_exists('mb_detect_encoding')) {
48
+ function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); }
49
+ }
50
+ if (!function_exists('mb_detect_order')) {
51
+ function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); }
52
+ }
53
+ if (!function_exists('mb_parse_str')) {
54
+ function mb_parse_str($string, &$result = array()) { parse_str($string, $result); }
55
+ }
56
+ if (!function_exists('mb_strlen')) {
57
+ function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); }
58
+ }
59
+ if (!function_exists('mb_strpos')) {
60
+ function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); }
61
+ }
62
+ if (!function_exists('mb_strtolower')) {
63
+ function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); }
64
+ }
65
+ if (!function_exists('mb_strtoupper')) {
66
+ function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); }
67
+ }
68
+ if (!function_exists('mb_substitute_character')) {
69
+ function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); }
70
+ }
71
+ if (!function_exists('mb_substr')) {
72
+ function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); }
73
+ }
74
+ if (!function_exists('mb_stripos')) {
75
+ function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); }
76
+ }
77
+ if (!function_exists('mb_stristr')) {
78
+ function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); }
79
+ }
80
+ if (!function_exists('mb_strrchr')) {
81
+ function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); }
82
+ }
83
+ if (!function_exists('mb_strrichr')) {
84
+ function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); }
85
+ }
86
+ if (!function_exists('mb_strripos')) {
87
+ function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); }
88
+ }
89
+ if (!function_exists('mb_strrpos')) {
90
+ function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); }
91
+ }
92
+ if (!function_exists('mb_strstr')) {
93
+ function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); }
94
+ }
95
+ if (!function_exists('mb_get_info')) {
96
+ function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
97
+ }
98
+ if (!function_exists('mb_http_output')) {
99
+ function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); }
100
+ }
101
+ if (!function_exists('mb_strwidth')) {
102
+ function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); }
103
+ }
104
+ if (!function_exists('mb_substr_count')) {
105
+ function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); }
106
+ }
107
+ if (!function_exists('mb_output_handler')) {
108
+ function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); }
109
+ }
110
+ if (!function_exists('mb_http_input')) {
111
+ function mb_http_input($type = '') { return p\Mbstring::mb_http_input($type); }
112
+ }
113
+
114
+ if (!function_exists('mb_convert_variables')) {
115
+ if (PHP_VERSION_ID >= 80000) {
116
+ function mb_convert_variables($to_encoding, $from_encoding, &$var, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, $var, ...$vars); }
117
+ } else {
118
+ function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); }
119
+ }
120
+ }
121
+
122
+ if (!function_exists('mb_ord')) {
123
+ function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); }
124
+ }
125
+ if (!function_exists('mb_chr')) {
126
+ function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); }
127
+ }
128
+ if (!function_exists('mb_scrub')) {
129
+ function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
130
+ }
131
+ if (!function_exists('mb_str_split')) {
132
+ function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); }
133
+ }
134
+
135
+ if (extension_loaded('mbstring')) {
136
+ return;
137
+ }
138
+
139
+ if (!defined('MB_CASE_UPPER')) {
140
+ define('MB_CASE_UPPER', 0);
141
+ }
142
+ if (!defined('MB_CASE_LOWER')) {
143
+ define('MB_CASE_LOWER', 1);
144
+ }
145
+ if (!defined('MB_CASE_TITLE')) {
146
+ define('MB_CASE_TITLE', 2);
147
+ }
vendor/symfony/polyfill-mbstring/composer.json ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "symfony/polyfill-mbstring",
3
+ "type": "library",
4
+ "description": "Symfony polyfill for the Mbstring extension",
5
+ "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"],
6
+ "homepage": "https://symfony.com",
7
+ "license": "MIT",
8
+ "authors": [
9
+ {
10
+ "name": "Nicolas Grekas",
11
+ "email": "p@tchwork.com"
12
+ },
13
+ {
14
+ "name": "Symfony Community",
15
+ "homepage": "https://symfony.com/contributors"
16
+ }
17
+ ],
18
+ "require": {
19
+ "php": ">=7.1"
20
+ },
21
+ "autoload": {
22
+ "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
23
+ "files": [ "bootstrap.php" ]
24
+ },
25
+ "suggest": {
26
+ "ext-mbstring": "For best performance"
27
+ },
28
+ "minimum-stability": "dev",
29
+ "extra": {
30
+ "branch-alias": {
31
+ "dev-main": "1.20-dev"
32
+ },
33
+ "thanks": {
34
+ "name": "symfony/polyfill",
35
+ "url": "https://github.com/symfony/polyfill"
36
+ }
37
+ }
38
+ }
woocommerce-pdf-invoices-packingslips.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: WooCommerce PDF Invoices & Packing Slips
4
  * Plugin URI: http://www.wpovernight.com
5
  * Description: Create, print & email PDF invoices & packing slips for WooCommerce orders.
6
- * Version: 2.10.3
7
  * Author: Ewout Fernhout
8
  * Author URI: http://www.wpovernight.com
9
  * License: GPLv2 or later
@@ -21,7 +21,7 @@ if ( !class_exists( 'WPO_WCPDF' ) ) :
21
 
22
  class WPO_WCPDF {
23
 
24
- public $version = '2.10.3';
25
  public $plugin_basename;
26
  public $legacy_mode;
27
  public $legacy_textdomain;
@@ -196,9 +196,6 @@ class WPO_WCPDF {
196
  // Backwards compatibility with self
197
  include_once( $this->plugin_path() . '/includes/legacy/class-wcpdf-legacy.php' );
198
  include_once( $this->plugin_path() . '/includes/legacy/class-wcpdf-legacy-deprecated-hooks.php' );
199
-
200
- // PHP MB String fallback functions
201
- include_once( $this->plugin_path() . '/includes/compatibility/mb-string-compatibility.php' );
202
  }
203
 
204
 
3
  * Plugin Name: WooCommerce PDF Invoices & Packing Slips
4
  * Plugin URI: http://www.wpovernight.com
5
  * Description: Create, print & email PDF invoices & packing slips for WooCommerce orders.
6
+ * Version: 2.10.4
7
  * Author: Ewout Fernhout
8
  * Author URI: http://www.wpovernight.com
9
  * License: GPLv2 or later
21
 
22
  class WPO_WCPDF {
23
 
24
+ public $version = '2.10.4';
25
  public $plugin_basename;
26
  public $legacy_mode;
27
  public $legacy_textdomain;
196
  // Backwards compatibility with self
197
  include_once( $this->plugin_path() . '/includes/legacy/class-wcpdf-legacy.php' );
198
  include_once( $this->plugin_path() . '/includes/legacy/class-wcpdf-legacy-deprecated-hooks.php' );
 
 
 
199
  }
200
 
201