line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
# automatically generated file, don't edit |
2
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
|
4
|
|
|
|
|
|
|
|
5
|
|
|
|
|
|
|
# Copyright 2023 David Cantrell, derived from data from libphonenumber |
6
|
|
|
|
|
|
|
# http://code.google.com/p/libphonenumber/ |
7
|
|
|
|
|
|
|
# |
8
|
|
|
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
9
|
|
|
|
|
|
|
# you may not use this file except in compliance with the License. |
10
|
|
|
|
|
|
|
# You may obtain a copy of the License at |
11
|
|
|
|
|
|
|
# |
12
|
|
|
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0 |
13
|
|
|
|
|
|
|
# |
14
|
|
|
|
|
|
|
# Unless required by applicable law or agreed to in writing, software |
15
|
|
|
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS, |
16
|
|
|
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
17
|
|
|
|
|
|
|
# See the License for the specific language governing permissions and |
18
|
|
|
|
|
|
|
# limitations under the License. |
19
|
|
|
|
|
|
|
package Number::Phone::StubCountry::NL; |
20
|
3
|
|
|
3
|
|
1837
|
use base qw(Number::Phone::StubCountry); |
|
3
|
|
|
|
|
7
|
|
|
3
|
|
|
|
|
349
|
|
21
|
|
|
|
|
|
|
|
22
|
3
|
|
|
3
|
|
21
|
use strict; |
|
3
|
|
|
|
|
8
|
|
|
3
|
|
|
|
|
65
|
|
23
|
3
|
|
|
3
|
|
15
|
use warnings; |
|
3
|
|
|
|
|
9
|
|
|
3
|
|
|
|
|
97
|
|
24
|
3
|
|
|
3
|
|
18
|
use utf8; |
|
3
|
|
|
|
|
8
|
|
|
3
|
|
|
|
|
25
|
|
25
|
|
|
|
|
|
|
our $VERSION = 1.20230903131448; |
26
|
|
|
|
|
|
|
|
27
|
|
|
|
|
|
|
my $formatters = [ |
28
|
|
|
|
|
|
|
{ |
29
|
|
|
|
|
|
|
'format' => '$1', |
30
|
|
|
|
|
|
|
'intl_format' => 'NA', |
31
|
|
|
|
|
|
|
'leading_digits' => ' |
32
|
|
|
|
|
|
|
1[238]| |
33
|
|
|
|
|
|
|
[34] |
34
|
|
|
|
|
|
|
', |
35
|
|
|
|
|
|
|
'pattern' => '(\\d{4})' |
36
|
|
|
|
|
|
|
}, |
37
|
|
|
|
|
|
|
{ |
38
|
|
|
|
|
|
|
'format' => '$1 $2', |
39
|
|
|
|
|
|
|
'intl_format' => 'NA', |
40
|
|
|
|
|
|
|
'leading_digits' => '14', |
41
|
|
|
|
|
|
|
'pattern' => '(\\d{2})(\\d{3,4})' |
42
|
|
|
|
|
|
|
}, |
43
|
|
|
|
|
|
|
{ |
44
|
|
|
|
|
|
|
'format' => '$1', |
45
|
|
|
|
|
|
|
'intl_format' => 'NA', |
46
|
|
|
|
|
|
|
'leading_digits' => '1', |
47
|
|
|
|
|
|
|
'pattern' => '(\\d{6})' |
48
|
|
|
|
|
|
|
}, |
49
|
|
|
|
|
|
|
{ |
50
|
|
|
|
|
|
|
'format' => '$1 $2', |
51
|
|
|
|
|
|
|
'leading_digits' => '[89]0', |
52
|
|
|
|
|
|
|
'national_rule' => '0$1', |
53
|
|
|
|
|
|
|
'pattern' => '(\\d{3})(\\d{4,7})' |
54
|
|
|
|
|
|
|
}, |
55
|
|
|
|
|
|
|
{ |
56
|
|
|
|
|
|
|
'format' => '$1 $2', |
57
|
|
|
|
|
|
|
'leading_digits' => '66', |
58
|
|
|
|
|
|
|
'national_rule' => '0$1', |
59
|
|
|
|
|
|
|
'pattern' => '(\\d{2})(\\d{7})' |
60
|
|
|
|
|
|
|
}, |
61
|
|
|
|
|
|
|
{ |
62
|
|
|
|
|
|
|
'format' => '$1 $2', |
63
|
|
|
|
|
|
|
'leading_digits' => '6', |
64
|
|
|
|
|
|
|
'national_rule' => '0$1', |
65
|
|
|
|
|
|
|
'pattern' => '(\\d)(\\d{8})' |
66
|
|
|
|
|
|
|
}, |
67
|
|
|
|
|
|
|
{ |
68
|
|
|
|
|
|
|
'format' => '$1 $2 $3', |
69
|
|
|
|
|
|
|
'leading_digits' => ' |
70
|
|
|
|
|
|
|
1[16-8]| |
71
|
|
|
|
|
|
|
2[259]| |
72
|
|
|
|
|
|
|
3[124]| |
73
|
|
|
|
|
|
|
4[17-9]| |
74
|
|
|
|
|
|
|
5[124679] |
75
|
|
|
|
|
|
|
', |
76
|
|
|
|
|
|
|
'national_rule' => '0$1', |
77
|
|
|
|
|
|
|
'pattern' => '(\\d{3})(\\d{3})(\\d{3})' |
78
|
|
|
|
|
|
|
}, |
79
|
|
|
|
|
|
|
{ |
80
|
|
|
|
|
|
|
'format' => '$1 $2 $3', |
81
|
|
|
|
|
|
|
'leading_digits' => ' |
82
|
|
|
|
|
|
|
[1-578]| |
83
|
|
|
|
|
|
|
91 |
84
|
|
|
|
|
|
|
', |
85
|
|
|
|
|
|
|
'national_rule' => '0$1', |
86
|
|
|
|
|
|
|
'pattern' => '(\\d{2})(\\d{3})(\\d{4})' |
87
|
|
|
|
|
|
|
}, |
88
|
|
|
|
|
|
|
{ |
89
|
|
|
|
|
|
|
'format' => '$1 $2 $3', |
90
|
|
|
|
|
|
|
'leading_digits' => '9', |
91
|
|
|
|
|
|
|
'national_rule' => '0$1', |
92
|
|
|
|
|
|
|
'pattern' => '(\\d{3})(\\d{3})(\\d{5})' |
93
|
|
|
|
|
|
|
} |
94
|
|
|
|
|
|
|
]; |
95
|
|
|
|
|
|
|
|
96
|
|
|
|
|
|
|
my $validators = { |
97
|
|
|
|
|
|
|
'fixed_line' => ' |
98
|
|
|
|
|
|
|
(?: |
99
|
|
|
|
|
|
|
1(?: |
100
|
|
|
|
|
|
|
[035]\\d| |
101
|
|
|
|
|
|
|
1[13-578]| |
102
|
|
|
|
|
|
|
6[124-8]| |
103
|
|
|
|
|
|
|
7[24]| |
104
|
|
|
|
|
|
|
8[0-467] |
105
|
|
|
|
|
|
|
)| |
106
|
|
|
|
|
|
|
2(?: |
107
|
|
|
|
|
|
|
[0346]\\d| |
108
|
|
|
|
|
|
|
2[2-46-9]| |
109
|
|
|
|
|
|
|
5[125]| |
110
|
|
|
|
|
|
|
9[479] |
111
|
|
|
|
|
|
|
)| |
112
|
|
|
|
|
|
|
3(?: |
113
|
|
|
|
|
|
|
[03568]\\d| |
114
|
|
|
|
|
|
|
1[3-8]| |
115
|
|
|
|
|
|
|
2[01]| |
116
|
|
|
|
|
|
|
4[1-8] |
117
|
|
|
|
|
|
|
)| |
118
|
|
|
|
|
|
|
4(?: |
119
|
|
|
|
|
|
|
[0356]\\d| |
120
|
|
|
|
|
|
|
1[1-368]| |
121
|
|
|
|
|
|
|
7[58]| |
122
|
|
|
|
|
|
|
8[15-8]| |
123
|
|
|
|
|
|
|
9[23579] |
124
|
|
|
|
|
|
|
)| |
125
|
|
|
|
|
|
|
5(?: |
126
|
|
|
|
|
|
|
[0358]\\d| |
127
|
|
|
|
|
|
|
[19][1-9]| |
128
|
|
|
|
|
|
|
2[1-57-9]| |
129
|
|
|
|
|
|
|
4[13-8]| |
130
|
|
|
|
|
|
|
6[126]| |
131
|
|
|
|
|
|
|
7[0-3578] |
132
|
|
|
|
|
|
|
)| |
133
|
|
|
|
|
|
|
7\\d\\d |
134
|
|
|
|
|
|
|
)\\d{6} |
135
|
|
|
|
|
|
|
', |
136
|
|
|
|
|
|
|
'geographic' => ' |
137
|
|
|
|
|
|
|
(?: |
138
|
|
|
|
|
|
|
1(?: |
139
|
|
|
|
|
|
|
[035]\\d| |
140
|
|
|
|
|
|
|
1[13-578]| |
141
|
|
|
|
|
|
|
6[124-8]| |
142
|
|
|
|
|
|
|
7[24]| |
143
|
|
|
|
|
|
|
8[0-467] |
144
|
|
|
|
|
|
|
)| |
145
|
|
|
|
|
|
|
2(?: |
146
|
|
|
|
|
|
|
[0346]\\d| |
147
|
|
|
|
|
|
|
2[2-46-9]| |
148
|
|
|
|
|
|
|
5[125]| |
149
|
|
|
|
|
|
|
9[479] |
150
|
|
|
|
|
|
|
)| |
151
|
|
|
|
|
|
|
3(?: |
152
|
|
|
|
|
|
|
[03568]\\d| |
153
|
|
|
|
|
|
|
1[3-8]| |
154
|
|
|
|
|
|
|
2[01]| |
155
|
|
|
|
|
|
|
4[1-8] |
156
|
|
|
|
|
|
|
)| |
157
|
|
|
|
|
|
|
4(?: |
158
|
|
|
|
|
|
|
[0356]\\d| |
159
|
|
|
|
|
|
|
1[1-368]| |
160
|
|
|
|
|
|
|
7[58]| |
161
|
|
|
|
|
|
|
8[15-8]| |
162
|
|
|
|
|
|
|
9[23579] |
163
|
|
|
|
|
|
|
)| |
164
|
|
|
|
|
|
|
5(?: |
165
|
|
|
|
|
|
|
[0358]\\d| |
166
|
|
|
|
|
|
|
[19][1-9]| |
167
|
|
|
|
|
|
|
2[1-57-9]| |
168
|
|
|
|
|
|
|
4[13-8]| |
169
|
|
|
|
|
|
|
6[126]| |
170
|
|
|
|
|
|
|
7[0-3578] |
171
|
|
|
|
|
|
|
)| |
172
|
|
|
|
|
|
|
7\\d\\d |
173
|
|
|
|
|
|
|
)\\d{6} |
174
|
|
|
|
|
|
|
', |
175
|
|
|
|
|
|
|
'mobile' => ' |
176
|
|
|
|
|
|
|
(?: |
177
|
|
|
|
|
|
|
6[1-58]| |
178
|
|
|
|
|
|
|
970\\d |
179
|
|
|
|
|
|
|
)\\d{7} |
180
|
|
|
|
|
|
|
', |
181
|
|
|
|
|
|
|
'pager' => '66\\d{7}', |
182
|
|
|
|
|
|
|
'personal_number' => '', |
183
|
|
|
|
|
|
|
'specialrate' => '(90[069]\\d{4,7})|( |
184
|
|
|
|
|
|
|
140(?: |
185
|
|
|
|
|
|
|
1[035]| |
186
|
|
|
|
|
|
|
2[0346]| |
187
|
|
|
|
|
|
|
3[03568]| |
188
|
|
|
|
|
|
|
4[0356]| |
189
|
|
|
|
|
|
|
5[0358]| |
190
|
|
|
|
|
|
|
8[458] |
191
|
|
|
|
|
|
|
)| |
192
|
|
|
|
|
|
|
(?: |
193
|
|
|
|
|
|
|
140(?: |
194
|
|
|
|
|
|
|
1[16-8]| |
195
|
|
|
|
|
|
|
2[259]| |
196
|
|
|
|
|
|
|
3[124]| |
197
|
|
|
|
|
|
|
4[17-9]| |
198
|
|
|
|
|
|
|
5[124679]| |
199
|
|
|
|
|
|
|
7 |
200
|
|
|
|
|
|
|
)| |
201
|
|
|
|
|
|
|
8[478]\\d{6} |
202
|
|
|
|
|
|
|
)\\d |
203
|
|
|
|
|
|
|
)', |
204
|
|
|
|
|
|
|
'toll_free' => '800\\d{4,7}', |
205
|
|
|
|
|
|
|
'voip' => ' |
206
|
|
|
|
|
|
|
(?: |
207
|
|
|
|
|
|
|
85| |
208
|
|
|
|
|
|
|
91 |
209
|
|
|
|
|
|
|
)\\d{7} |
210
|
|
|
|
|
|
|
' |
211
|
|
|
|
|
|
|
}; |
212
|
|
|
|
|
|
|
my %areanames = (); |
213
|
|
|
|
|
|
|
$areanames{en} = {"31544", "Lichtenvoorde", |
214
|
|
|
|
|
|
|
"31342", "Barneveld", |
215
|
|
|
|
|
|
|
"31184", "Sliedrecht", |
216
|
|
|
|
|
|
|
"31513", "Heerenveen", |
217
|
|
|
|
|
|
|
"31341", "Harderwijk", |
218
|
|
|
|
|
|
|
"3115", "Delft", |
219
|
|
|
|
|
|
|
"31224", "Schagen", |
220
|
|
|
|
|
|
|
"31317", "Wageningen", |
221
|
|
|
|
|
|
|
"3145", "Heerlen", |
222
|
|
|
|
|
|
|
"31523", "Hardenberg", |
223
|
|
|
|
|
|
|
"31111", "Zierikzee", |
224
|
|
|
|
|
|
|
"31488", "Zetten", |
225
|
|
|
|
|
|
|
"31572", "Raalte", |
226
|
|
|
|
|
|
|
"31571", "Twello", |
227
|
|
|
|
|
|
|
"31411", "Boxtel", |
228
|
|
|
|
|
|
|
"3120", "Amsterdam", |
229
|
|
|
|
|
|
|
"31548", "Rijssen", |
230
|
|
|
|
|
|
|
"31595", "Warffum", |
231
|
|
|
|
|
|
|
"31252", "Nieuw\-Vennep", |
232
|
|
|
|
|
|
|
"31412", "Oss", |
233
|
|
|
|
|
|
|
"31228", "Enkhuizen", |
234
|
|
|
|
|
|
|
"31316", "Zevenaar", |
235
|
|
|
|
|
|
|
"31251", "Beverwijk", |
236
|
|
|
|
|
|
|
"3173", "\'s\-Hertogenbosch", |
237
|
|
|
|
|
|
|
"31519", "Dokkum", |
238
|
|
|
|
|
|
|
"31164", "Bergen\ op\ Zoom", |
239
|
|
|
|
|
|
|
"31596", "Delfzijl", |
240
|
|
|
|
|
|
|
"3133", "Amersfoort", |
241
|
|
|
|
|
|
|
"31315", "Terborg", |
242
|
|
|
|
|
|
|
"31566", "Grou", |
243
|
|
|
|
|
|
|
"31529", "Dalfsen", |
244
|
|
|
|
|
|
|
"3146", "Sittard", |
245
|
|
|
|
|
|
|
"31168", "Zevenbergen", |
246
|
|
|
|
|
|
|
"31597", "Winschoten", |
247
|
|
|
|
|
|
|
"3177", "Venlo", |
248
|
|
|
|
|
|
|
"31299", "Purmerend", |
249
|
|
|
|
|
|
|
"31495", "Weert", |
250
|
|
|
|
|
|
|
"31343", "Driebergen\-Rijsenburg", |
251
|
|
|
|
|
|
|
"31511", "Veenwouden", |
252
|
|
|
|
|
|
|
"31172", "Alphen\ aan\ den\ Rijn", |
253
|
|
|
|
|
|
|
"31314", "Doetinchem", |
254
|
|
|
|
|
|
|
"31512", "Drachten", |
255
|
|
|
|
|
|
|
"31487", "Druten", |
256
|
|
|
|
|
|
|
"31227", "Medemblik", |
257
|
|
|
|
|
|
|
"3158", "Leeuwarden", |
258
|
|
|
|
|
|
|
"31187", "Middelharnis", |
259
|
|
|
|
|
|
|
"31165", "Roosendaal", |
260
|
|
|
|
|
|
|
"31547", "Goor", |
261
|
|
|
|
|
|
|
"3130", "Utrecht", |
262
|
|
|
|
|
|
|
"31522", "Meppel", |
263
|
|
|
|
|
|
|
"31486", "Grave", |
264
|
|
|
|
|
|
|
"31573", "Lochem", |
265
|
|
|
|
|
|
|
"31113", "Goes", |
266
|
|
|
|
|
|
|
"31521", "Steenwijk", |
267
|
|
|
|
|
|
|
"3155", "Apeldoorn", |
268
|
|
|
|
|
|
|
"31546", "Almelo", |
269
|
|
|
|
|
|
|
"31186", "Oud\-Beijerland", |
270
|
|
|
|
|
|
|
"31318", "Veenendaal", |
271
|
|
|
|
|
|
|
"31413", "Uden", |
272
|
|
|
|
|
|
|
"31226", "Noord\ Scharwoude", |
273
|
|
|
|
|
|
|
"31485", "Cuyk", |
274
|
|
|
|
|
|
|
"31497", "Eersel", |
275
|
|
|
|
|
|
|
"31545", "Eibergen", |
276
|
|
|
|
|
|
|
"31598", "Veendam", |
277
|
|
|
|
|
|
|
"31167", "Steenbergen", |
278
|
|
|
|
|
|
|
"3171", "Leiden", |
279
|
|
|
|
|
|
|
"31594", "Zuidhorn", |
280
|
|
|
|
|
|
|
"31570", "Deventer", |
281
|
|
|
|
|
|
|
"3170", "The\ Hague", |
282
|
|
|
|
|
|
|
"3123", "Haarlem", |
283
|
|
|
|
|
|
|
"31166", "Tholen", |
284
|
|
|
|
|
|
|
"3172", "Alkmaar", |
285
|
|
|
|
|
|
|
"31478", "Venray", |
286
|
|
|
|
|
|
|
"31524", "Coevorden", |
287
|
|
|
|
|
|
|
"3135", "Hilversum", |
288
|
|
|
|
|
|
|
"31321", "Dronten", |
289
|
|
|
|
|
|
|
"31117", "Oostburg", |
290
|
|
|
|
|
|
|
"3176", "Breda", |
291
|
|
|
|
|
|
|
"31346", "Maarssen", |
292
|
|
|
|
|
|
|
"31577", "Elspeet", |
293
|
|
|
|
|
|
|
"31518", "St\.\ Annaparochie", |
294
|
|
|
|
|
|
|
"3179", "Zoetermeer", |
295
|
|
|
|
|
|
|
"31174", "Naaldwijk", |
296
|
|
|
|
|
|
|
"31183", "Gorinchem", |
297
|
|
|
|
|
|
|
"31543", "Winterswijk", |
298
|
|
|
|
|
|
|
"31223", "Den\ Helder", |
299
|
|
|
|
|
|
|
"31416", "Waalwijk", |
300
|
|
|
|
|
|
|
"31514", "Lemmer", |
301
|
|
|
|
|
|
|
"3138", "Zwolle", |
302
|
|
|
|
|
|
|
"31528", "Hoogeveen", |
303
|
|
|
|
|
|
|
"31347", "Vianen", |
304
|
|
|
|
|
|
|
"3150", "Groningen", |
305
|
|
|
|
|
|
|
"31499", "Best", |
306
|
|
|
|
|
|
|
"3124", "Nijmegen", |
307
|
|
|
|
|
|
|
"31592", "Assen", |
308
|
|
|
|
|
|
|
"3143", "Maastricht", |
309
|
|
|
|
|
|
|
"31255", "IJmuiden", |
310
|
|
|
|
|
|
|
"31561", "Wolvega", |
311
|
|
|
|
|
|
|
"31591", "Emmen", |
312
|
|
|
|
|
|
|
"31562", "West\-Terschelling", |
313
|
|
|
|
|
|
|
"3113", "Tilburg", |
314
|
|
|
|
|
|
|
"31575", "Zutphen", |
315
|
|
|
|
|
|
|
"31115", "Terneuzen", |
316
|
|
|
|
|
|
|
"3178", "Dordrecht", |
317
|
|
|
|
|
|
|
"3175", "Zaandam", |
318
|
|
|
|
|
|
|
"31229", "Horn", |
319
|
|
|
|
|
|
|
"31180", "Barendrecht", |
320
|
|
|
|
|
|
|
"31297", "Aalsmeer", |
321
|
|
|
|
|
|
|
"31345", "Culemborg", |
322
|
|
|
|
|
|
|
"31493", "Deurne", |
323
|
|
|
|
|
|
|
"3136", "Almere", |
324
|
|
|
|
|
|
|
"31599", "Stadskanaal", |
325
|
|
|
|
|
|
|
"3140", "Eindhoven", |
326
|
|
|
|
|
|
|
"31114", "Hulst", |
327
|
|
|
|
|
|
|
"31348", "Woerden", |
328
|
|
|
|
|
|
|
"3110", "Rotterdam", |
329
|
|
|
|
|
|
|
"31527", "Emmeloord", |
330
|
|
|
|
|
|
|
"31516", "Oosterwolde", |
331
|
|
|
|
|
|
|
"31344", "Tiel", |
332
|
|
|
|
|
|
|
"31182", "Gouda", |
333
|
|
|
|
|
|
|
"31222", "Den\ Burg", |
334
|
|
|
|
|
|
|
"31541", "Oldenzaal", |
335
|
|
|
|
|
|
|
"31181", "Spijkenisse", |
336
|
|
|
|
|
|
|
"31418", "Zaltbommel", |
337
|
|
|
|
|
|
|
"31313", "Dieren", |
338
|
|
|
|
|
|
|
"31517", "Harlingen", |
339
|
|
|
|
|
|
|
"31578", "Epe", |
340
|
|
|
|
|
|
|
"31118", "Middelburg", |
341
|
|
|
|
|
|
|
"31481", "Bemmel", |
342
|
|
|
|
|
|
|
"31593", "Beilen", |
343
|
|
|
|
|
|
|
"31320", "Lelystad", |
344
|
|
|
|
|
|
|
"31525", "Elburg", |
345
|
|
|
|
|
|
|
"3126", "Arnhem", |
346
|
|
|
|
|
|
|
"31475", "Roermond", |
347
|
|
|
|
|
|
|
"31161", "Rijen", |
348
|
|
|
|
|
|
|
"31162", "Oosterhout", |
349
|
|
|
|
|
|
|
"31294", "Weesp", |
350
|
|
|
|
|
|
|
"31492", "Helmond", |
351
|
|
|
|
|
|
|
"3153", "Enschede", |
352
|
|
|
|
|
|
|
"3174", "Hengelo", |
353
|
|
|
|
|
|
|
"31515", "Sneek",}; |
354
|
|
|
|
|
|
|
$areanames{nl} = {"31486", "Schaijk", |
355
|
|
|
|
|
|
|
"3170", "Den\ Haag", |
356
|
|
|
|
|
|
|
"31229", "Hoorn", |
357
|
|
|
|
|
|
|
"31481", "Elst",}; |
358
|
|
|
|
|
|
|
|
359
|
|
|
|
|
|
|
sub new { |
360
|
30
|
|
|
30
|
1
|
59
|
my $class = shift; |
361
|
30
|
|
|
|
|
60
|
my $number = shift; |
362
|
30
|
|
|
|
|
189
|
$number =~ s/(^\+31|\D)//g; |
363
|
30
|
|
|
|
|
268
|
my $self = bless({ country_code => '31', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class); |
364
|
30
|
100
|
|
|
|
142
|
return $self if ($self->is_valid()); |
365
|
5
|
|
|
|
|
25
|
$number =~ s/^(?:0)//; |
366
|
5
|
|
|
|
|
49
|
$self = bless({ country_code => '31', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class); |
367
|
5
|
100
|
|
|
|
37
|
return $self->is_valid() ? $self : undef; |
368
|
|
|
|
|
|
|
} |
369
|
|
|
|
|
|
|
1; |