diff options
author | Norbert Preining <norbert@preining.info> | 2022-07-02 03:03:53 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-07-02 03:03:53 +0000 |
commit | cd3bef34bd0bfcf1625056fd2f2832328c516179 (patch) | |
tree | c7337e2acdc9c8e9f18518ee8cf09a985a9d94c8 /macros/latex/contrib/phonenumbers/tex | |
parent | 360c779f505ae5d8baf567f534861a7a9c7afcb2 (diff) |
CTAN sync 202207020303
Diffstat (limited to 'macros/latex/contrib/phonenumbers/tex')
13 files changed, 10828 insertions, 10412 deletions
diff --git a/macros/latex/contrib/phonenumbers/tex/phn-AT_Vorwahlen.tex b/macros/latex/contrib/phonenumbers/tex/phn-AT_Vorwahlen.tex deleted file mode 100644 index 2a27994d60..0000000000 --- a/macros/latex/contrib/phonenumbers/tex/phn-AT_Vorwahlen.tex +++ /dev/null @@ -1,1071 +0,0 @@ -% phonenumbers package: Austrian area codes -% Datum: 22. Oktober 2017 -\clist_const:Nn \c_phone_AT_ortsvorwahlen_clist {01, -02142, -02143, -02144, -02145, -02146, -02147, -02160, -02162, -02163, -02164, -02165, -02166, -02167, -02168, -02169, -02172, -02173, -02174, -02175, -02176, -02177, -02212, -02213, -02214, -02215, -02216, -02230, -02231, -02232, -02233, -02234, -02235, -02236, -02237, -02238, -02239, -02242, -02243, -02244, -02245, -02246, -02247, -02248, -02249, -02252, -02253, -02254, -02255, -02256, -02257, -02258, -02259, -02262, -02263, -02264, -02265, -02266, -02267, -02268, -02269, -02271, -02272, -02273, -02274, -02275, -02276, -02277, -02278, -02279, -02282, -02283, -02284, -02285, -02286, -02287, -02288, -02289, -02522, -02523, -02524, -02525, -02526, -02527, -02532, -02533, -02534, -02535, -02536, -02538, -02552, -02554, -02555, -02556, -02557, -02572, -02573, -02574, -02575, -02576, -02577, -02610, -02611, -02612, -02613, -02614, -02615, -02616, -02617, -02618, -02619, -02620, -02621, -02622, -02623, -02624, -02625, -02626, -02627, -02628, -02629, -02630, -02631, -02632, -02633, -02634, -02635, -02636, -02637, -02638, -02639, -02641, -02642, -02643, -02644, -02645, -02646, -02647, -02648, -02649, -02662, -02663, -02664, -02665, -02666, -02667, -02672, -02673, -02674, -02680, -02682, -02683, -02684, -02685, -02686, -02687, -02688, -02689, -02711, -02712, -02713, -02714, -02715, -02716, -02717, -02718, -02719, -02722, -02723, -02724, -02725, -02726, -02728, -02731, -02732, -02733, -02734, -02735, -02736, -02738, -02739, -02741, -02742, -02743, -02744, -02745, -02746, -02747, -02748, -02749, -02752, -02753, -02754, -02755, -02756, -02757, -02758, -02762, -02763, -02764, -02765, -02766, -02767, -02768, -02769, -02772, -02773, -02774, -02782, -02783, -02784, -02786, -02812, -02813, -02814, -02815, -02816, -02822, -02823, -02824, -02825, -02826, -02827, -02828, -02829, -02841, -02842, -02843, -02844, -02845, -02846, -02847, -02848, -02849, -02852, -02853, -02854, -02855, -02856, -02857, -02858, -02859, -02862, -02863, -02864, -02865, -02872, -02873, -02874, -02875, -02876, -02877, -02878, -02912, -02913, -02914, -02915, -02916, -02942, -02943, -02944, -02945, -02946, -02947, -02948, -02949, -02951, -02952, -02953, -02954, -02955, -02956, -02957, -02958, -02959, -02982, -02983, -02984, -02985, -02986, -02987, -02988, -02989, -03112, -03113, -03114, -03115, -03116, -03117, -03118, -03119, -03123, -03124, -03125, -03126, -03127, -03132, -03133, -03134, -03135, -03136, -03137, -03140, -03141, -03142, -03143, -03144, -03145, -03146, -03147, -03148, -03149, -03150, -03151, -03152, -03153, -03155, -03157, -03158, -03159, -0316, -03170, -03171, -03172, -03173, -03174, -03175, -03176, -03177, -03178, -03179, -03182, -03183, -03184, -03185, -03322, -03323, -03324, -03325, -03326, -03327, -03328, -03329, -03331, -03332, -03333, -03334, -03335, -03336, -03337, -03338, -03339, -03352, -03353, -03354, -03355, -03356, -03357, -03358, -03359, -03362, -03363, -03364, -03365, -03366, -03382, -03383, -03385, -03386, -03387, -03452, -03453, -03454, -03455, -03456, -03457, -03460, -03461, -03462, -03463, -03464, -03465, -03466, -03467, -03468, -03469, -03472, -03473, -03474, -03475, -03476, -03477, -03512, -03513, -03514, -03515, -03516, -03532, -03533, -03534, -03535, -03536, -03537, -03571, -03572, -03573, -03574, -03575, -03576, -03577, -03578, -03579, -03581, -03582, -03583, -03584, -03585, -03586, -03587, -03588, -03611, -03612, -03613, -03614, -03615, -03616, -03617, -03618, -03619, -03622, -03623, -03624, -03631, -03632, -03633, -03634, -03635, -03636, -03637, -03638, -03680, -03682, -03683, -03684, -03685, -03686, -03687, -03688, -03689, -03832, -03833, -03834, -03842, -03843, -03844, -03845, -03846, -03847, -03848, -03849, -03852, -03853, -03854, -03855, -03856, -03857, -03858, -03859, -03861, -03862, -03863, -03864, -03865, -03866, -03867, -03868, -03869, -03882, -03883, -03884, -03885, -03886, -04212, -04213, -04214, -04215, -04220, -04221, -04223, -04224, -04225, -04226, -04227, -04228, -04229, -04230, -04231, -04232, -04233, -04234, -04235, -04236, -04237, -04238, -04239, -04240, -04242, -04243, -04244, -04245, -04246, -04247, -04248, -04252, -04253, -04254, -04255, -04256, -04257, -04258, -04262, -04263, -04264, -04265, -04266, -04267, -04268, -04269, -04271, -04272, -04273, -04274, -04275, -04276, -04277, -04278, -04279, -04282, -04283, -04284, -04285, -04286, -04350, -04352, -04353, -04354, -04355, -04356, -04357, -04358, -04359, -0463, -04710, -04712, -04713, -04714, -04715, -04716, -04717, -04718, -04732, -04733, -04734, -04735, -04736, -04761, -04762, -04766, -04767, -04768, -04769, -04782, -04783, -04784, -04785, -04822, -04823, -04824, -04825, -04826, -04842, -04843, -04846, -04847, -04848, -04852, -04853, -04855, -04858, -04872, -04873, -04874, -04875, -04876, -04877, -04879, -0512, -05212, -05213, -05214, -05223, -05224, -05225, -05226, -05230, -05232, -05234, -05236, -05238, -05239, -05242, -05243, -05244, -05245, -05246, -05248, -05252, -05253, -05254, -05255, -05256, -05262, -05263, -05264, -05265, -05266, -05272, -05273, -05274, -05275, -05276, -05278, -05279, -05280, -05282, -05283, -05284, -05285, -05286, -05287, -05288, -05289, -05331, -05332, -05333, -05334, -05335, -05336, -05337, -05338, -05339, -05352, -05353, -05354, -05355, -05356, -05357, -05358, -05359, -05372, -05373, -05374, -05375, -05376, -05412, -05413, -05414, -05417, -05418, -05441, -05442, -05443, -05444, -05445, -05446, -05447, -05448, -05449, -05472, -05473, -05474, -05475, -05476, -05477, -05510, -05512, -05513, -05514, -05515, -05516, -05517, -05518, -05519, -05522, -05523, -05524, -05525, -05526, -05550, -05552, -05553, -05554, -05556, -05557, -05558, -05559, -05572, -05573, -05574, -05575, -05576, -05577, -05578, -05579, -05582, -05583, -05585, -05632, -05633, -05634, -05635, -05672, -05673, -05674, -05675, -05676, -05677, -05678, -06131, -06132, -06133, -06134, -06135, -06136, -06137, -06138, -06212, -06213, -06214, -06215, -06216, -06217, -06219, -06221, -06223, -06224, -06225, -06226, -06227, -06228, -06229, -06232, -06233, -06234, -06235, -06240, -06241, -06242, -06243, -06244, -06245, -06246, -06247, -06272, -06274, -06276, -06277, -06278, -06412, -06413, -06414, -06415, -06416, -06417, -06418, -06432, -06433, -06434, -06452, -06453, -06454, -06455, -06456, -06457, -06458, -06461, -06462, -06463, -06466, -06467, -06468, -06470, -06471, -06472, -06473, -06474, -06475, -06476, -06477, -06478, -06479, -06483, -06484, -06541, -06542, -06543, -06544, -06545, -06546, -06547, -06548, -06549, -06562, -06563, -06564, -06565, -06566, -06582, -06583, -06584, -06588, -06589, -0662, -07211, -07212, -07213, -07214, -07215, -07216, -07217, -07218, -07219, -07221, -07223, -07224, -07225, -07226, -07227, -07228, -07229, -07230, -07231, -07232, -07233, -07234, -07235, -07236, -07237, -07238, -07239, -07240, -07241, -07242, -07243, -07244, -07245, -07246, -07247, -07248, -07249, -07250, -07251, -07252, -07253, -07254, -07255, -07256, -07257, -07258, -07259, -07260, -07261, -07262, -07263, -07264, -07265, -07266, -07267, -07268, -07269, -07272, -07273, -07274, -07276, -07277, -07278, -07279, -07280, -07281, -07282, -07283, -07284, -07285, -07286, -07287, -07288, -07289, -0732, -07353, -07355, -07357, -07412, -07413, -07414, -07415, -07416, -07432, -07433, -07434, -07435, -07442, -07443, -07444, -07445, -07448, -07471, -07472, -07473, -07474, -07475, -07476, -07477, -07478, -07479, -07480, -07482, -07483, -07484, -07485, -07486, -07487, -07488, -07489, -07562, -07563, -07564, -07565, -07566, -07582, -07583, -07584, -07585, -07586, -07587, -07588, -07612, -07613, -07614, -07615, -07616, -07617, -07618, -07619, -07662, -07663, -07664, -07665, -07666, -07667, -07672, -07673, -07674, -07675, -07676, -07682, -07683, -07684, -07711, -07712, -07713, -07714, -07716, -07717, -07718, -07719, -07722, -07723, -07724, -07727, -07728, -07729, -07732, -07733, -07734, -07735, -07736, -07742, -07743, -07744, -07745, -07746, -07747, -07748, -07750, -07751, -07752, -07753, -07754, -07755, -07757, -07758, -07759, -07762, -07763, -07764, -07765, -07766, -07767, -07941, -07942, -07943, -07944, -07945, -07946, -07947, -07948, -07949, -07952, -07953, -07954, -07955, -07956} -\clist_const:Nn \c_phone_AT_sondervorwahlen_clist {0501, -0502, -0503, -0504, -0505, -0506, -0507, -0508, -0509, -0517, -057, -059, -0650, -0651, -0652, -0653, -0655, -0657, -0659, -0660, -0661, -0663, -0664, -0665, -0666, -0667, -0668, -0669, -067, -068, -069, -0711, -0718, -0720, -0780, -0800, -0804, -0810, -0820, -0821, -0828, -089, -0900, -0901, -0930, -0931, -0939} diff --git a/macros/latex/contrib/phonenumbers/tex/phn-DE_Vorwahlen.tex b/macros/latex/contrib/phonenumbers/tex/phn-DE_Vorwahlen.tex deleted file mode 100644 index 9f188e30d3..0000000000 --- a/macros/latex/contrib/phonenumbers/tex/phn-DE_Vorwahlen.tex +++ /dev/null @@ -1,5279 +0,0 @@ -% phonenumbers package: German area codes -% Datum: 20. August 2021 -\clist_const:Nn \c_phone_DE_ortsvorwahlen_clist {0201, -0202, -0203, -02041, -02043, -02045, -02051, -02052, -02053, -02054, -02056, -02058, -02064, -02065, -02066, -0208, -0209, -02102, -02103, -02104, -0211, -0212, -02129, -02131, -02132, -02133, -02137, -0214, -02150, -02151, -02152, -02153, -02154, -02156, -02157, -02158, -02159, -02161, -02162, -02163, -02164, -02165, -02166, -02171, -02173, -02174, -02175, -02181, -02182, -02183, -02191, -02192, -02193, -02195, -02196, -02202, -02203, -02204, -02205, -02206, -02207, -02208, -0221, -02222, -02223, -02224, -02225, -02226, -02227, -02228, -02232, -02233, -02234, -02235, -02236, -02237, -02238, -02241, -02242, -02243, -02244, -02245, -02246, -02247, -02248, -02251, -02252, -02253, -02254, -02255, -02256, -02257, -02261, -02262, -02263, -02264, -02265, -02266, -02267, -02268, -02269, -02271, -02272, -02273, -02274, -02275, -0228, -02291, -02292, -02293, -02294, -02295, -02296, -02297, -02301, -02302, -02303, -02304, -02305, -02306, -02307, -02308, -02309, -0231, -02323, -02324, -02325, -02327, -02330, -02331, -02332, -02333, -02334, -02335, -02336, -02337, -02338, -02339, -0234, -02351, -02352, -02353, -02354, -02355, -02357, -02358, -02359, -02360, -02361, -02362, -02363, -02364, -02365, -02366, -02367, -02368, -02369, -02371, -02372, -02373, -02374, -02375, -02377, -02378, -02379, -02381, -02382, -02383, -02384, -02385, -02387, -02388, -02389, -02391, -02392, -02393, -02394, -02395, -02401, -02402, -02403, -02404, -02405, -02406, -02407, -02408, -02409, -0241, -02421, -02422, -02423, -02424, -02425, -02426, -02427, -02428, -02429, -02431, -02432, -02433, -02434, -02435, -02436, -02440, -02441, -02443, -02444, -02445, -02446, -02447, -02448, -02449, -02451, -02452, -02453, -02454, -02455, -02456, -02461, -02462, -02463, -02464, -02465, -02471, -02472, -02473, -02474, -02482, -02484, -02485, -02486, -02501, -02502, -02504, -02505, -02506, -02507, -02508, -02509, -0251, -02520, -02521, -02522, -02523, -02524, -02525, -02526, -02527, -02528, -02529, -02532, -02533, -02534, -02535, -02536, -02538, -02541, -02542, -02543, -02545, -02546, -02547, -02548, -02551, -02552, -02553, -02554, -02555, -02556, -02557, -02558, -02561, -02562, -02563, -02564, -02565, -02566, -02567, -02568, -02571, -02572, -02573, -02574, -02575, -02581, -02582, -02583, -02584, -02585, -02586, -02587, -02588, -02590, -02591, -02592, -02593, -02594, -02595, -02596, -02597, -02598, -02599, -02601, -02602, -02603, -02604, -02605, -02606, -02607, -02608, -0261, -02620, -02621, -02622, -02623, -02624, -02625, -02626, -02627, -02628, -02630, -02631, -02632, -02633, -02634, -02635, -02636, -02637, -02638, -02639, -02641, -02642, -02643, -02644, -02645, -02646, -02647, -02651, -02652, -02653, -02654, -02655, -02656, -02657, -02661, -02662, -02663, -02664, -02666, -02667, -02671, -02672, -02673, -02674, -02675, -02676, -02677, -02678, -02680, -02681, -02682, -02683, -02684, -02685, -02686, -02687, -02688, -02689, -02691, -02692, -02693, -02694, -02695, -02696, -02697, -0271, -02721, -02722, -02723, -02724, -02725, -02732, -02733, -02734, -02735, -02736, -02737, -02738, -02739, -02741, -02742, -02743, -02744, -02745, -02747, -02750, -02751, -02752, -02753, -02754, -02755, -02758, -02759, -02761, -02762, -02763, -02764, -02770, -02771, -02772, -02773, -02774, -02775, -02776, -02777, -02778, -02779, -02801, -02802, -02803, -02804, -0281, -02821, -02822, -02823, -02824, -02825, -02826, -02827, -02828, -02831, -02832, -02833, -02834, -02835, -02836, -02837, -02838, -02839, -02841, -02842, -02843, -02844, -02845, -02850, -02851, -02852, -02853, -02855, -02856, -02857, -02858, -02859, -02861, -02862, -02863, -02864, -02865, -02866, -02867, -02871, -02872, -02873, -02874, -02902, -02903, -02904, -02905, -0291, -02921, -02922, -02923, -02924, -02925, -02927, -02928, -02931, -02932, -02933, -02934, -02935, -02937, -02938, -02941, -02942, -02943, -02944, -02945, -02947, -02948, -02951, -02952, -02953, -02954, -02955, -02957, -02958, -02961, -02962, -02963, -02964, -02971, -02972, -02973, -02974, -02975, -02977, -02981, -02982, -02983, -02984, -02985, -02991, -02992, -02993, -02994, -030, -03301, -03302, -03303, -03304, -033051, -033053, -033054, -033055, -033056, -03306, -03307, -033080, -033082, -033083, -033084, -033085, -033086, -033087, -033088, -033089, -033093, -033094, -0331, -033200, -033201, -033202, -033203, -033204, -033205, -033206, -033207, -033208, -033209, -03321, -03322, -033230, -033231, -033232, -033233, -033234, -033235, -033237, -033238, -033239, -03327, -03328, -03329, -03331, -03332, -033331, -033332, -033333, -033334, -033335, -033336, -033337, -033338, -03334, -03335, -033361, -033362, -033363, -033364, -033365, -033366, -033367, -033368, -033369, -03337, -03338, -033393, -033394, -033395, -033396, -033397, -033398, -03341, -03342, -033432, -033433, -033434, -033435, -033436, -033437, -033438, -033439, -03344, -033451, -033452, -033454, -033456, -033457, -033458, -03346, -033470, -033472, -033473, -033474, -033475, -033476, -033477, -033478, -033479, -0335, -033601, -033602, -033603, -033604, -033605, -033606, -033607, -033608, -033609, -03361, -03362, -033631, -033632, -033633, -033634, -033635, -033636, -033637, -033638, -03364, -033652, -033653, -033654, -033655, -033656, -033657, -03366, -033671, -033672, -033673, -033674, -033675, -033676, -033677, -033678, -033679, -033701, -033702, -033703, -033704, -033708, -03371, -03372, -033731, -033732, -033733, -033734, -033741, -033742, -033743, -033744, -033745, -033746, -033747, -033748, -03375, -033760, -033762, -033763, -033764, -033765, -033766, -033767, -033768, -033769, -03377, -03378, -03379, -03381, -03382, -033830, -033831, -033832, -033833, -033834, -033835, -033836, -033837, -033838, -033839, -033841, -033843, -033844, -033845, -033846, -033847, -033848, -033849, -03385, -03386, -033870, -033872, -033873, -033874, -033875, -033876, -033877, -033878, -03391, -033920, -033921, -033922, -033923, -033924, -033925, -033926, -033928, -033929, -033931, -033932, -033933, -03394, -03395, -033962, -033963, -033964, -033965, -033966, -033967, -033968, -033969, -033970, -033971, -033972, -033973, -033974, -033975, -033976, -033977, -033978, -033979, -033981, -033982, -033983, -033984, -033986, -033989, -0340, -0341, -034202, -034203, -034204, -034205, -034206, -034207, -034208, -03421, -034221, -034222, -034223, -034224, -03423, -034241, -034242, -034243, -034244, -03425, -034261, -034262, -034263, -034291, -034292, -034293, -034294, -034295, -034296, -034297, -034298, -034299, -03431, -034321, -034322, -034324, -034325, -034327, -034328, -03433, -034341, -034342, -034343, -034344, -034345, -034346, -034347, -034348, -03435, -034361, -034362, -034363, -034364, -03437, -034381, -034382, -034383, -034384, -034385, -034386, -03441, -034422, -034423, -034424, -034425, -034426, -03443, -034441, -034443, -034444, -034445, -034446, -03445, -034461, -034462, -034463, -034464, -034465, -034466, -034467, -03447, -03448, -034491, -034492, -034493, -034494, -034495, -034496, -034497, -034498, -0345, -034600, -034601, -034602, -034603, -034604, -034605, -034606, -034607, -034609, -03461, -03462, -034632, -034633, -034635, -034636, -034637, -034638, -034639, -03464, -034651, -034652, -034653, -034654, -034656, -034658, -034659, -03466, -034671, -034672, -034673, -034691, -034692, -03471, -034721, -034722, -03473, -034741, -034742, -034743, -034745, -034746, -03475, -03476, -034771, -034772, -034773, -034774, -034775, -034776, -034779, -034781, -034782, -034783, -034785, -034901, -034903, -034904, -034905, -034906, -034907, -034909, -03491, -034920, -034921, -034922, -034923, -034924, -034925, -034926, -034927, -034928, -034929, -03493, -03494, -034953, -034954, -034955, -034956, -03496, -034973, -034975, -034976, -034977, -034978, -034979, -03501, -035020, -035021, -035022, -035023, -035024, -035025, -035026, -035027, -035028, -035032, -035033, -03504, -035052, -035053, -035054, -035055, -035056, -035057, -035058, -0351, -035200, -035201, -035202, -035203, -035204, -035205, -035206, -035207, -035208, -035209, -03521, -03522, -03523, -035240, -035241, -035242, -035243, -035244, -035245, -035246, -035247, -035248, -035249, -03525, -035263, -035264, -035265, -035266, -035267, -035268, -03528, -03529, -03531, -035322, -035323, -035324, -035325, -035326, -035327, -035329, -03533, -035341, -035342, -035343, -03535, -035361, -035362, -035363, -035364, -035365, -03537, -035383, -035384, -035385, -035386, -035387, -035388, -035389, -03541, -03542, -035433, -035434, -035435, -035436, -035439, -03544, -035451, -035452, -035453, -035454, -035455, -035456, -03546, -035471, -035472, -035473, -035474, -035475, -035476, -035477, -035478, -0355, -035600, -035601, -035602, -035603, -035604, -035605, -035606, -035607, -035608, -035609, -03561, -03562, -03563, -03564, -035691, -035692, -035693, -035694, -035695, -035696, -035697, -035698, -03571, -035722, -035723, -035724, -035725, -035726, -035727, -035728, -03573, -03574, -035751, -035752, -035753, -035754, -035755, -035756, -03576, -035771, -035772, -035773, -035774, -035775, -03578, -035792, -035793, -035795, -035796, -035797, -03581, -035820, -035822, -035823, -035825, -035826, -035827, -035828, -035829, -03583, -035841, -035842, -035843, -035844, -03585, -03586, -035872, -035873, -035874, -035875, -035876, -035877, -03588, -035891, -035892, -035893, -035894, -035895, -03591, -03592, -035930, -035931, -035932, -035933, -035934, -035935, -035936, -035937, -035938, -035939, -03594, -035951, -035952, -035953, -035954, -035955, -03596, -035971, -035973, -035974, -035975, -03601, -036020, -036021, -036022, -036023, -036024, -036025, -036026, -036027, -036028, -036029, -03603, -036041, -036042, -036043, -03605, -03606, -036071, -036072, -036074, -036075, -036076, -036077, -036081, -036082, -036083, -036084, -036085, -036087, -0361, -036200, -036201, -036202, -036203, -036204, -036205, -036206, -036207, -036208, -036209, -03621, -03622, -03623, -03624, -036252, -036253, -036254, -036255, -036256, -036257, -036258, -036259, -03628, -03629, -03631, -03632, -036330, -036331, -036332, -036333, -036334, -036335, -036336, -036337, -036338, -03634, -03635, -03636, -036370, -036371, -036372, -036373, -036374, -036375, -036376, -036377, -036378, -036379, -03641, -036421, -036422, -036423, -036424, -036425, -036426, -036427, -036428, -03643, -03644, -036450, -036451, -036452, -036453, -036454, -036458, -036459, -036461, -036462, -036463, -036464, -036465, -03647, -036481, -036482, -036483, -036484, -0365, -036601, -036602, -036603, -036604, -036605, -036606, -036607, -036608, -03661, -036621, -036622, -036623, -036624, -036625, -036626, -036628, -03663, -036640, -036642, -036643, -036644, -036645, -036646, -036647, -036648, -036649, -036651, -036652, -036653, -036691, -036692, -036693, -036694, -036695, -036701, -036702, -036703, -036704, -036705, -03671, -03672, -036730, -036731, -036732, -036733, -036734, -036735, -036736, -036737, -036738, -036739, -036741, -036742, -036743, -036744, -03675, -036761, -036762, -036764, -036766, -03677, -036781, -036782, -036783, -036784, -036785, -03679, -03681, -03682, -03683, -036840, -036841, -036842, -036843, -036844, -036845, -036846, -036847, -036848, -036849, -03685, -03686, -036870, -036871, -036873, -036874, -036875, -036878, -03691, -036920, -036921, -036922, -036923, -036924, -036925, -036926, -036927, -036928, -036929, -03693, -036940, -036941, -036943, -036944, -036945, -036946, -036947, -036948, -036949, -03695, -036961, -036962, -036963, -036964, -036965, -036966, -036967, -036968, -036969, -0371, -037200, -037202, -037203, -037204, -037206, -037207, -037208, -037209, -03721, -03722, -03723, -03724, -03725, -03726, -03727, -037291, -037292, -037293, -037294, -037295, -037296, -037297, -037298, -03731, -037320, -037321, -037322, -037323, -037324, -037325, -037326, -037327, -037328, -037329, -03733, -037341, -037342, -037343, -037344, -037346, -037347, -037348, -037349, -03735, -037360, -037361, -037362, -037363, -037364, -037365, -037366, -037367, -037368, -037369, -03737, -037381, -037382, -037383, -037384, -03741, -037421, -037422, -037423, -037430, -037431, -037432, -037433, -037434, -037435, -037436, -037437, -037438, -037439, -03744, -03745, -037462, -037463, -037464, -037465, -037467, -037468, -0375, -037600, -037601, -037602, -037603, -037604, -037605, -037606, -037607, -037608, -037609, -03761, -03762, -03763, -03764, -03765, -03771, -03772, -03773, -03774, -037752, -037754, -037755, -037756, -037757, -0381, -038201, -038202, -038203, -038204, -038205, -038206, -038207, -038208, -038209, -03821, -038220, -038221, -038222, -038223, -038224, -038225, -038226, -038227, -038228, -038229, -038231, -038232, -038233, -038234, -038292, -038293, -038294, -038295, -038296, -038297, -038300, -038301, -038302, -038303, -038304, -038305, -038306, -038307, -038308, -038309, -03831, -038320, -038321, -038322, -038323, -038324, -038325, -038326, -038327, -038328, -038331, -038332, -038333, -038334, -03834, -038351, -038352, -038353, -038354, -038355, -038356, -03836, -038370, -038371, -038372, -038373, -038374, -038375, -038376, -038377, -038378, -038379, -03838, -038391, -038392, -038393, -03841, -038422, -038423, -038424, -038425, -038426, -038427, -038428, -038429, -03843, -03844, -038450, -038451, -038452, -038453, -038454, -038455, -038456, -038457, -038458, -038459, -038461, -038462, -038464, -038466, -03847, -038481, -038482, -038483, -038484, -038485, -038486, -038488, -0385, -03860, -03861, -03863, -03865, -03866, -03867, -03868, -03869, -03871, -038720, -038721, -038722, -038723, -038724, -038725, -038726, -038727, -038728, -038729, -038731, -038732, -038733, -038735, -038736, -038737, -038738, -03874, -038750, -038751, -038752, -038753, -038754, -038755, -038756, -038757, -038758, -038759, -03876, -03877, -038780, -038781, -038782, -038783, -038784, -038785, -038787, -038788, -038789, -038791, -038792, -038793, -038794, -038796, -038797, -03881, -038821, -038822, -038823, -038824, -038825, -038826, -038827, -038828, -03883, -038841, -038842, -038843, -038844, -038845, -038847, -038848, -038850, -038851, -038852, -038853, -038854, -038855, -038856, -038858, -038859, -03886, -038871, -038872, -038873, -038874, -038875, -038876, -039000, -039001, -039002, -039003, -039004, -039005, -039006, -039007, -039008, -039009, -03901, -03902, -039030, -039031, -039032, -039033, -039034, -039035, -039036, -039037, -039038, -039039, -03904, -039050, -039051, -039052, -039053, -039054, -039055, -039056, -039057, -039058, -039059, -039061, -039062, -03907, -039080, -039081, -039082, -039083, -039084, -039085, -039086, -039087, -039088, -039089, -03909, -0391, -039200, -039201, -039202, -039203, -039204, -039205, -039206, -039207, -039208, -039209, -03921, -039221, -039222, -039223, -039224, -039225, -039226, -03923, -039241, -039242, -039243, -039244, -039245, -039246, -039247, -039248, -03925, -039262, -039263, -039264, -039265, -039266, -039267, -039268, -03928, -039291, -039292, -039293, -039294, -039295, -039296, -039297, -039298, -03931, -039320, -039321, -039322, -039323, -039324, -039325, -039327, -039328, -039329, -03933, -039341, -039342, -039343, -039344, -039345, -039346, -039347, -039348, -039349, -03935, -039361, -039362, -039363, -039364, -039365, -039366, -03937, -039382, -039383, -039384, -039386, -039387, -039388, -039389, -039390, -039391, -039392, -039393, -039394, -039395, -039396, -039397, -039398, -039399, -039400, -039401, -039402, -039403, -039404, -039405, -039406, -039407, -039408, -039409, -03941, -039421, -039422, -039423, -039424, -039425, -039426, -039427, -039428, -03943, -03944, -039451, -039452, -039453, -039454, -039455, -039456, -039457, -039458, -039459, -03946, -03947, -039481, -039482, -039483, -039484, -039485, -039487, -039488, -039489, -03949, -0395, -039600, -039601, -039602, -039603, -039604, -039605, -039606, -039607, -039608, -03961, -03962, -03963, -03964, -03965, -03966, -03967, -03968, -03969, -03971, -039721, -039722, -039723, -039724, -039726, -039727, -039728, -03973, -039740, -039741, -039742, -039743, -039744, -039745, -039746, -039747, -039748, -039749, -039751, -039752, -039753, -039754, -03976, -039771, -039772, -039773, -039774, -039775, -039776, -039777, -039778, -039779, -03981, -039820, -039821, -039822, -039823, -039824, -039825, -039826, -039827, -039828, -039829, -039831, -039832, -039833, -03984, -039851, -039852, -039853, -039854, -039855, -039856, -039857, -039858, -039859, -039861, -039862, -039863, -03987, -039881, -039882, -039883, -039884, -039885, -039886, -039887, -039888, -039889, -03991, -039921, -039922, -039923, -039924, -039925, -039926, -039927, -039928, -039929, -039931, -039932, -039933, -039934, -03994, -039951, -039952, -039953, -039954, -039955, -039956, -039957, -039959, -03996, -039971, -039972, -039973, -039975, -039976, -039977, -039978, -03998, -039991, -039992, -039993, -039994, -039995, -039996, -039997, -039998, -039999, -040, -04101, -04102, -04103, -04104, -04105, -04106, -04107, -04108, -04109, -04120, -04121, -04122, -04123, -04124, -04125, -04126, -04127, -04128, -04129, -04131, -04132, -04133, -04134, -04135, -04136, -04137, -04138, -04139, -04140, -04141, -04142, -04143, -04144, -04146, -04148, -04149, -04151, -04152, -04153, -04154, -04155, -04156, -04158, -04159, -04161, -04162, -04163, -04164, -04165, -04166, -04167, -04168, -04169, -04171, -04172, -04173, -04174, -04175, -04176, -04177, -04178, -04179, -04180, -04181, -04182, -04183, -04184, -04185, -04186, -04187, -04188, -04189, -04191, -04192, -04193, -04194, -04195, -04202, -04203, -04204, -04205, -04206, -04207, -04208, -04209, -0421, -04221, -04222, -04223, -04224, -04230, -04231, -04232, -04233, -04234, -04235, -04236, -04237, -04238, -04239, -04240, -04241, -04242, -04243, -04244, -04245, -04246, -04247, -04248, -04249, -04251, -04252, -04253, -04254, -04255, -04256, -04257, -04258, -04260, -04261, -04262, -04263, -04264, -04265, -04266, -04267, -04268, -04269, -04271, -04272, -04273, -04274, -04275, -04276, -04277, -04281, -04282, -04283, -04284, -04285, -04286, -04287, -04288, -04289, -04292, -04293, -04294, -04295, -04296, -04297, -04298, -04302, -04303, -04305, -04307, -04308, -0431, -04320, -04321, -04322, -04323, -04324, -04326, -04327, -04328, -04329, -04330, -04331, -04332, -04333, -04334, -04335, -04336, -04337, -04338, -04339, -04340, -04342, -04343, -04344, -04346, -04347, -04348, -04349, -04351, -04352, -04353, -04354, -04355, -04356, -04357, -04358, -04361, -04362, -04363, -04364, -04365, -04366, -04367, -04371, -04372, -04381, -04382, -04383, -04384, -04385, -04392, -04393, -04394, -04401, -04402, -04403, -04404, -04405, -04406, -04407, -04408, -04409, -0441, -04421, -04422, -04423, -04425, -04426, -04431, -04432, -04433, -04434, -04435, -04441, -04442, -04443, -04444, -04445, -04446, -04447, -04451, -04452, -04453, -04454, -04455, -04456, -04458, -04461, -04462, -04463, -04464, -04465, -04466, -04467, -04468, -04469, -04471, -04472, -04473, -04474, -04475, -04477, -04478, -04479, -04480, -04481, -04482, -04483, -04484, -04485, -04486, -04487, -04488, -04489, -04491, -04492, -04493, -04494, -04495, -04496, -04497, -04498, -04499, -04501, -04502, -04503, -04504, -04505, -04506, -04508, -04509, -0451, -04521, -04522, -04523, -04524, -04525, -04526, -04527, -04528, -04529, -04531, -04532, -04533, -04534, -04535, -04536, -04537, -04539, -04541, -04542, -04543, -04544, -04545, -04546, -04547, -04550, -04551, -04552, -04553, -04554, -04555, -04556, -04557, -04558, -04559, -04561, -04562, -04563, -04564, -04602, -04603, -04604, -04605, -04606, -04607, -04608, -04609, -0461, -04621, -04622, -04623, -04624, -04625, -04626, -04627, -04630, -04631, -04632, -04633, -04634, -04635, -04636, -04637, -04638, -04639, -04641, -04642, -04643, -04644, -04646, -04651, -04661, -04662, -04663, -04664, -04665, -04666, -04667, -04668, -04671, -04672, -04673, -04674, -04681, -04682, -04683, -04684, -04702, -04703, -04704, -04705, -04706, -04707, -04708, -0471, -04721, -04722, -04723, -04724, -04725, -04731, -04732, -04733, -04734, -04735, -04736, -04737, -04740, -04741, -04742, -04743, -04744, -04745, -04746, -04747, -04748, -04749, -04751, -04752, -04753, -04754, -04755, -04756, -04757, -04758, -04761, -04762, -04763, -04764, -04765, -04766, -04767, -04768, -04769, -04770, -04771, -04772, -04773, -04774, -04775, -04776, -04777, -04778, -04779, -04791, -04792, -04793, -04794, -04795, -04796, -04802, -04803, -04804, -04805, -04806, -0481, -04821, -04822, -04823, -04824, -04825, -04826, -04827, -04828, -04829, -04830, -04832, -04833, -04834, -04835, -04836, -04837, -04838, -04839, -04841, -04842, -04843, -04844, -04845, -04846, -04847, -04848, -04849, -04851, -04852, -04853, -04854, -04855, -04856, -04857, -04858, -04859, -04861, -04862, -04863, -04864, -04865, -04871, -04872, -04873, -04874, -04875, -04876, -04877, -04881, -04882, -04883, -04884, -04885, -04892, -04893, -04902, -04903, -0491, -04920, -04921, -04922, -04923, -04924, -04925, -04926, -04927, -04928, -04929, -04931, -04932, -04933, -04934, -04935, -04936, -04938, -04939, -04941, -04942, -04943, -04944, -04945, -04946, -04947, -04948, -04950, -04951, -04952, -04953, -04954, -04955, -04956, -04957, -04958, -04959, -04961, -04962, -04963, -04964, -04965, -04966, -04967, -04968, -04971, -04972, -04973, -04974, -04975, -04976, -04977, -05021, -05022, -05023, -05024, -05025, -05026, -05027, -05028, -05031, -05032, -05033, -05034, -05035, -05036, -05037, -05041, -05042, -05043, -05044, -05045, -05051, -05052, -05053, -05054, -05055, -05056, -05060, -05062, -05063, -05064, -05065, -05066, -05067, -05068, -05069, -05071, -05072, -05073, -05074, -05082, -05083, -05084, -05085, -05086, -05101, -05102, -05103, -05105, -05108, -05109, -0511, -05121, -05123, -05126, -05127, -05128, -05129, -05130, -05131, -05132, -05135, -05136, -05137, -05138, -05139, -05141, -05142, -05143, -05144, -05145, -05146, -05147, -05148, -05149, -05151, -05152, -05153, -05154, -05155, -05156, -05157, -05158, -05159, -05161, -05162, -05163, -05164, -05165, -05166, -05167, -05168, -05171, -05172, -05173, -05174, -05175, -05176, -05177, -05181, -05182, -05183, -05184, -05185, -05186, -05187, -05190, -05191, -05192, -05193, -05194, -05195, -05196, -05197, -05198, -05199, -05201, -05202, -05203, -05204, -05205, -05206, -05207, -05208, -05209, -0521, -05221, -05222, -05223, -05224, -05225, -05226, -05228, -05231, -05232, -05233, -05234, -05235, -05236, -05237, -05238, -05241, -05242, -05244, -05245, -05246, -05247, -05248, -05250, -05251, -05252, -05253, -05254, -05255, -05257, -05258, -05259, -05261, -05262, -05263, -05264, -05265, -05266, -05271, -05272, -05273, -05274, -05275, -05276, -05277, -05278, -05281, -05282, -05283, -05284, -05285, -05286, -05292, -05293, -05294, -05295, -05300, -05301, -05302, -05303, -05304, -05305, -05306, -05307, -05308, -05309, -0531, -05320, -05321, -05322, -05323, -05324, -05325, -05326, -05327, -05328, -05329, -05331, -05332, -05333, -05334, -05335, -05336, -05337, -05339, -05341, -05344, -05345, -05346, -05347, -05351, -05352, -05353, -05354, -05355, -05356, -05357, -05358, -05361, -05362, -05363, -05364, -05365, -05366, -05367, -05368, -05371, -05372, -05373, -05374, -05375, -05376, -05377, -05378, -05379, -05381, -05382, -05383, -05384, -05401, -05402, -05403, -05404, -05405, -05406, -05407, -05409, -0541, -05421, -05422, -05423, -05424, -05425, -05426, -05427, -05428, -05429, -05431, -05432, -05433, -05434, -05435, -05436, -05437, -05438, -05439, -05441, -05442, -05443, -05444, -05445, -05446, -05447, -05448, -05451, -05452, -05453, -05454, -05455, -05456, -05457, -05458, -05459, -05461, -05462, -05464, -05465, -05466, -05467, -05468, -05471, -05472, -05473, -05474, -05475, -05476, -05481, -05482, -05483, -05484, -05485, -05491, -05492, -05493, -05494, -05495, -05502, -05503, -05504, -05505, -05506, -05507, -05508, -05509, -0551, -05520, -05521, -05522, -05523, -05524, -05525, -05527, -05528, -05529, -05531, -05532, -05533, -05534, -05535, -05536, -05541, -05542, -05543, -05544, -05545, -05546, -05551, -05552, -05553, -05554, -05555, -05556, -05561, -05562, -05563, -05564, -05565, -05571, -05572, -05573, -05574, -05582, -05583, -05584, -05585, -05586, -05592, -05593, -05594, -05601, -05602, -05603, -05604, -05605, -05606, -05607, -05608, -05609, -0561, -05621, -05622, -05623, -05624, -05625, -05626, -05631, -05632, -05633, -05634, -05635, -05636, -05641, -05642, -05643, -05644, -05645, -05646, -05647, -05648, -05650, -05651, -05652, -05653, -05654, -05655, -05656, -05657, -05658, -05659, -05661, -05662, -05663, -05664, -05665, -05671, -05672, -05673, -05674, -05675, -05676, -05677, -05681, -05682, -05683, -05684, -05685, -05686, -05691, -05692, -05693, -05694, -05695, -05696, -05702, -05703, -05704, -05705, -05706, -05707, -0571, -05721, -05722, -05723, -05724, -05725, -05726, -05731, -05732, -05733, -05734, -05741, -05742, -05743, -05744, -05745, -05746, -05751, -05752, -05753, -05754, -05755, -05761, -05763, -05764, -05765, -05766, -05767, -05768, -05769, -05771, -05772, -05773, -05774, -05775, -05776, -05777, -05802, -05803, -05804, -05805, -05806, -05807, -05808, -0581, -05820, -05821, -05822, -05823, -05824, -05825, -05826, -05827, -05828, -05829, -05831, -05832, -05833, -05834, -05835, -05836, -05837, -05838, -05839, -05840, -05841, -05842, -05843, -05844, -05845, -05846, -05848, -05849, -05850, -05851, -05852, -05853, -05854, -05855, -05857, -05858, -05859, -05861, -05862, -05863, -05864, -05865, -05872, -05873, -05874, -05875, -05882, -05883, -05901, -05902, -05903, -05904, -05905, -05906, -05907, -05908, -05909, -0591, -05921, -05922, -05923, -05924, -05925, -05926, -05931, -05932, -05933, -05934, -05935, -05936, -05937, -05939, -05941, -05942, -05943, -05944, -05945, -05946, -05947, -05948, -05951, -05952, -05953, -05954, -05955, -05956, -05957, -05961, -05962, -05963, -05964, -05965, -05966, -05971, -05973, -05975, -05976, -05977, -05978, -06002, -06003, -06004, -06007, -06008, -06020, -06021, -06022, -06023, -06024, -06026, -06027, -06028, -06029, -06031, -06032, -06033, -06034, -06035, -06036, -06039, -06041, -06042, -06043, -06044, -06045, -06046, -06047, -06048, -06049, -06050, -06051, -06052, -06053, -06054, -06055, -06056, -06057, -06058, -06059, -06061, -06062, -06063, -06066, -06068, -06071, -06073, -06074, -06078, -06081, -06082, -06083, -06084, -06085, -06086, -06087, -06092, -06093, -06094, -06095, -06096, -06101, -06102, -06103, -06104, -06105, -06106, -06107, -06108, -06109, -0611, -06120, -06122, -06123, -06124, -06126, -06127, -06128, -06129, -06130, -06131, -06132, -06133, -06134, -06135, -06136, -06138, -06139, -06142, -06144, -06145, -06146, -06147, -06150, -06151, -06152, -06154, -06155, -06157, -06158, -06159, -06161, -06162, -06163, -06164, -06165, -06166, -06167, -06171, -06172, -06173, -06174, -06175, -06181, -06182, -06183, -06184, -06185, -06186, -06187, -06188, -06190, -06192, -06195, -06196, -06198, -06201, -06202, -06203, -06204, -06205, -06206, -06207, -06209, -0621, -06220, -06221, -06222, -06223, -06224, -06226, -06227, -06228, -06229, -06231, -06232, -06233, -06234, -06235, -06236, -06237, -06238, -06239, -06241, -06242, -06243, -06244, -06245, -06246, -06247, -06249, -06251, -06252, -06253, -06254, -06255, -06256, -06257, -06258, -06261, -06262, -06263, -06264, -06265, -06266, -06267, -06268, -06269, -06271, -06272, -06274, -06275, -06276, -06281, -06282, -06283, -06284, -06285, -06286, -06287, -06291, -06292, -06293, -06294, -06295, -06296, -06297, -06298, -06301, -06302, -06303, -06304, -06305, -06306, -06307, -06308, -0631, -06321, -06322, -06323, -06324, -06325, -06326, -06327, -06328, -06329, -06331, -06332, -06333, -06334, -06335, -06336, -06337, -06338, -06339, -06340, -06341, -06342, -06343, -06344, -06345, -06346, -06347, -06348, -06349, -06351, -06352, -06353, -06355, -06356, -06357, -06358, -06359, -06361, -06362, -06363, -06364, -06371, -06372, -06373, -06374, -06375, -06381, -06382, -06383, -06384, -06385, -06386, -06387, -06391, -06392, -06393, -06394, -06395, -06396, -06397, -06398, -06400, -06401, -06402, -06403, -06404, -06405, -06406, -06407, -06408, -06409, -0641, -06420, -06421, -06422, -06423, -06424, -06425, -06426, -06427, -06428, -06429, -06430, -06431, -06432, -06433, -06434, -06435, -06436, -06438, -06439, -06440, -06441, -06442, -06443, -06444, -06445, -06446, -06447, -06449, -06451, -06452, -06453, -06454, -06455, -06456, -06457, -06458, -06461, -06462, -06464, -06465, -06466, -06467, -06468, -06471, -06472, -06473, -06474, -06475, -06476, -06477, -06478, -06479, -06482, -06483, -06484, -06485, -06486, -06500, -06501, -06502, -06503, -06504, -06505, -06506, -06507, -06508, -06509, -0651, -06522, -06523, -06524, -06525, -06526, -06527, -06531, -06532, -06533, -06534, -06535, -06536, -06541, -06542, -06543, -06544, -06545, -06550, -06551, -06552, -06553, -06554, -06555, -06556, -06557, -06558, -06559, -06561, -06562, -06563, -06564, -06565, -06566, -06567, -06568, -06569, -06571, -06572, -06573, -06574, -06575, -06578, -06580, -06581, -06582, -06583, -06584, -06585, -06586, -06587, -06588, -06589, -06591, -06592, -06593, -06594, -06595, -06596, -06597, -06599, -0661, -06620, -06621, -06622, -06623, -06624, -06625, -06626, -06627, -06628, -06629, -06630, -06631, -06633, -06634, -06635, -06636, -06637, -06638, -06639, -06641, -06642, -06643, -06644, -06645, -06646, -06647, -06648, -06650, -06651, -06652, -06653, -06654, -06655, -06656, -06657, -06658, -06659, -06660, -06661, -06663, -06664, -06665, -06666, -06667, -06668, -06669, -06670, -06672, -06673, -06674, -06675, -06676, -06677, -06678, -06681, -06682, -06683, -06684, -06691, -06692, -06693, -06694, -06695, -06696, -06697, -06698, -06701, -06703, -06704, -06706, -06707, -06708, -06709, -0671, -06721, -06722, -06723, -06724, -06725, -06726, -06727, -06728, -06731, -06732, -06733, -06734, -06735, -06736, -06737, -06741, -06742, -06743, -06744, -06745, -06746, -06747, -06751, -06752, -06753, -06754, -06755, -06756, -06757, -06758, -06761, -06762, -06763, -06764, -06765, -06766, -06771, -06772, -06773, -06774, -06775, -06776, -06781, -06782, -06783, -06784, -06785, -06786, -06787, -06788, -06789, -06802, -06803, -06804, -06805, -06806, -06809, -0681, -06821, -06824, -06825, -06826, -06827, -06831, -06832, -06833, -06834, -06835, -06836, -06837, -06838, -06841, -06842, -06843, -06844, -06848, -06849, -06851, -06852, -06853, -06854, -06855, -06856, -06857, -06858, -06861, -06864, -06865, -06866, -06867, -06868, -06869, -06871, -06872, -06873, -06874, -06875, -06876, -06881, -06887, -06888, -06893, -06894, -06897, -06898, -069, -07021, -07022, -07023, -07024, -07025, -07026, -07031, -07032, -07033, -07034, -07041, -07042, -07043, -07044, -07045, -07046, -07051, -07052, -07053, -07054, -07055, -07056, -07062, -07063, -07066, -07071, -07072, -07073, -07081, -07082, -07083, -07084, -07085, -0711, -07121, -07122, -07123, -07124, -07125, -07126, -07127, -07128, -07129, -07130, -07131, -07132, -07133, -07134, -07135, -07136, -07138, -07139, -07141, -07142, -07143, -07144, -07145, -07146, -07147, -07148, -07150, -07151, -07152, -07153, -07154, -07156, -07157, -07158, -07159, -07161, -07162, -07163, -07164, -07165, -07166, -07171, -07172, -07173, -07174, -07175, -07176, -07181, -07182, -07183, -07184, -07191, -07192, -07193, -07194, -07195, -07202, -07203, -07204, -0721, -07220, -07221, -07222, -07223, -07224, -07225, -07226, -07227, -07228, -07229, -07231, -07232, -07233, -07234, -07235, -07236, -07237, -07240, -07242, -07243, -07244, -07245, -07246, -07247, -07248, -07249, -07250, -07251, -07252, -07253, -07254, -07255, -07256, -07257, -07258, -07259, -07260, -07261, -07262, -07263, -07264, -07265, -07266, -07267, -07268, -07269, -07271, -07272, -07273, -07274, -07275, -07276, -07277, -07300, -07302, -07303, -07304, -07305, -07306, -07307, -07308, -07309, -0731, -07321, -07322, -07323, -07324, -07325, -07326, -07327, -07328, -07329, -07331, -07332, -07333, -07334, -07335, -07336, -07337, -07340, -07343, -07344, -07345, -07346, -07347, -07348, -07351, -07352, -07353, -07354, -07355, -07356, -07357, -07358, -07361, -07362, -07363, -07364, -07365, -07366, -07367, -07371, -07373, -07374, -07375, -07376, -07381, -07382, -07383, -07384, -07385, -07386, -07387, -07388, -07389, -07391, -07392, -07393, -07394, -07395, -07402, -07403, -07404, -0741, -07420, -07422, -07423, -07424, -07425, -07426, -07427, -07428, -07429, -07431, -07432, -07433, -07434, -07435, -07436, -07440, -07441, -07442, -07443, -07444, -07445, -07446, -07447, -07448, -07449, -07451, -07452, -07453, -07454, -07455, -07456, -07457, -07458, -07459, -07461, -07462, -07463, -07464, -07465, -07466, -07467, -07471, -07472, -07473, -07474, -07475, -07476, -07477, -07478, -07482, -07483, -07484, -07485, -07486, -07502, -07503, -07504, -07505, -07506, -0751, -07520, -07522, -07524, -07525, -07527, -07528, -07529, -07531, -07532, -07533, -07534, -07541, -07542, -07543, -07544, -07545, -07546, -07551, -07552, -07553, -07554, -07555, -07556, -07557, -07558, -07561, -07562, -07563, -07564, -07565, -07566, -07567, -07568, -07569, -07570, -07571, -07572, -07573, -07574, -07575, -07576, -07577, -07578, -07579, -07581, -07582, -07583, -07584, -07585, -07586, -07587, -07602, -0761, -07620, -07621, -07622, -07623, -07624, -07625, -07626, -07627, -07628, -07629, -07631, -07632, -07633, -07634, -07635, -07636, -07641, -07642, -07643, -07644, -07645, -07646, -07651, -07652, -07653, -07654, -07655, -07656, -07657, -07660, -07661, -07662, -07663, -07664, -07665, -07666, -07667, -07668, -07669, -07671, -07672, -07673, -07674, -07675, -07676, -07681, -07682, -07683, -07684, -07685, -07702, -07703, -07704, -07705, -07706, -07707, -07708, -07709, -0771, -07720, -07721, -07722, -07723, -07724, -07725, -07726, -07727, -07728, -07729, -07731, -07732, -07733, -07734, -07735, -07736, -07738, -07739, -07741, -07742, -07743, -07744, -07745, -07746, -07747, -07748, -07751, -07753, -07754, -07755, -07761, -07762, -07763, -07764, -07765, -07771, -07773, -07774, -07775, -07777, -07802, -07803, -07804, -07805, -07806, -07807, -07808, -0781, -07821, -07822, -07823, -07824, -07825, -07826, -07831, -07832, -07833, -07834, -07835, -07836, -07837, -07838, -07839, -07841, -07842, -07843, -07844, -07851, -07852, -07853, -07854, -07903, -07904, -07905, -07906, -07907, -0791, -07930, -07931, -07932, -07933, -07934, -07935, -07936, -07937, -07938, -07939, -07940, -07941, -07942, -07943, -07944, -07945, -07946, -07947, -07948, -07949, -07950, -07951, -07952, -07953, -07954, -07955, -07957, -07958, -07959, -07961, -07962, -07963, -07964, -07965, -07966, -07967, -07971, -07972, -07973, -07974, -07975, -07976, -07977, -08020, -08021, -08022, -08023, -08024, -08025, -08026, -08027, -08028, -08029, -08031, -08032, -08033, -08034, -08035, -08036, -08038, -08039, -08041, -08042, -08043, -08045, -08046, -08051, -08052, -08053, -08054, -08055, -08056, -08057, -08061, -08062, -08063, -08064, -08065, -08066, -08067, -08071, -08072, -08073, -08074, -08075, -08076, -08081, -08082, -08083, -08084, -08085, -08086, -08091, -08092, -08093, -08094, -08095, -08102, -08104, -08105, -08106, -0811, -08121, -08122, -08123, -08124, -08131, -08133, -08134, -08135, -08136, -08137, -08138, -08139, -08141, -08142, -08143, -08144, -08145, -08146, -08151, -08152, -08153, -08157, -08158, -08161, -08165, -08166, -08167, -08168, -08170, -08171, -08176, -08177, -08178, -08179, -08191, -08192, -08193, -08194, -08195, -08196, -08202, -08203, -08204, -08205, -08206, -08207, -08208, -0821, -08221, -08222, -08223, -08224, -08225, -08226, -08230, -08231, -08232, -08233, -08234, -08236, -08237, -08238, -08239, -08241, -08243, -08245, -08246, -08247, -08248, -08249, -08250, -08251, -08252, -08253, -08254, -08257, -08258, -08259, -08261, -08262, -08263, -08265, -08266, -08267, -08268, -08269, -08271, -08272, -08273, -08274, -08276, -08281, -08282, -08283, -08284, -08285, -08291, -08292, -08293, -08294, -08295, -08296, -08302, -08303, -08304, -08306, -0831, -08320, -08321, -08322, -08323, -08324, -08325, -08326, -08327, -08328, -08330, -08331, -08332, -08333, -08334, -08335, -08336, -08337, -08338, -08340, -08341, -08342, -08343, -08344, -08345, -08346, -08347, -08348, -08349, -08361, -08362, -08363, -08364, -08365, -08366, -08367, -08368, -08369, -08370, -08372, -08373, -08374, -08375, -08376, -08377, -08378, -08379, -08380, -08381, -08382, -08383, -08384, -08385, -08386, -08387, -08388, -08389, -08392, -08393, -08394, -08395, -08402, -08403, -08404, -08405, -08406, -08407, -0841, -08421, -08422, -08423, -08424, -08426, -08427, -08431, -08432, -08433, -08434, -08435, -08441, -08442, -08443, -08444, -08445, -08446, -08450, -08452, -08453, -08454, -08456, -08457, -08458, -08459, -08460, -08461, -08462, -08463, -08464, -08465, -08466, -08467, -08468, -08469, -08501, -08502, -08503, -08504, -08505, -08506, -08507, -08509, -0851, -08531, -08532, -08533, -08534, -08535, -08536, -08537, -08538, -08541, -08542, -08543, -08544, -08545, -08546, -08547, -08548, -08549, -08550, -08551, -08552, -08553, -08554, -08555, -08556, -08557, -08558, -08561, -08562, -08563, -08564, -08565, -08571, -08572, -08573, -08574, -08581, -08582, -08583, -08584, -08585, -08586, -08591, -08592, -08593, -0861, -08621, -08622, -08623, -08624, -08628, -08629, -08630, -08631, -08633, -08634, -08635, -08636, -08637, -08638, -08639, -08640, -08641, -08642, -08649, -08650, -08651, -08652, -08654, -08656, -08657, -08661, -08662, -08663, -08664, -08665, -08666, -08667, -08669, -08670, -08671, -08677, -08678, -08679, -08681, -08682, -08683, -08684, -08685, -08686, -08687, -08702, -08703, -08704, -08705, -08706, -08707, -08708, -08709, -0871, -08721, -08722, -08723, -08724, -08725, -08726, -08727, -08728, -08731, -08732, -08733, -08734, -08735, -08741, -08742, -08743, -08744, -08745, -08751, -08752, -08753, -08754, -08756, -08761, -08762, -08764, -08765, -08766, -08771, -08772, -08773, -08774, -08781, -08782, -08783, -08784, -08785, -08801, -08802, -08803, -08805, -08806, -08807, -08808, -08809, -0881, -08821, -08822, -08823, -08824, -08825, -08841, -08845, -08846, -08847, -08851, -08856, -08857, -08858, -08860, -08861, -08862, -08867, -08868, -08869, -089, -0906, -09070, -09071, -09072, -09073, -09074, -09075, -09076, -09077, -09078, -09080, -09081, -09082, -09083, -09084, -09085, -09086, -09087, -09088, -09089, -09090, -09091, -09092, -09093, -09094, -09097, -09099, -09101, -09102, -09103, -09104, -09105, -09106, -09107, -0911, -09120, -09122, -09123, -09126, -09127, -09128, -09129, -09131, -09132, -09133, -09134, -09135, -09141, -09142, -09143, -09144, -09145, -09146, -09147, -09148, -09149, -09151, -09152, -09153, -09154, -09155, -09156, -09157, -09158, -09161, -09162, -09163, -09164, -09165, -09166, -09167, -09170, -09171, -09172, -09173, -09174, -09175, -09176, -09177, -09178, -09179, -09180, -09181, -09182, -09183, -09184, -09185, -09186, -09187, -09188, -09189, -09190, -09191, -09192, -09193, -09194, -09195, -09196, -09197, -09198, -09199, -09201, -09202, -09203, -09204, -09205, -09206, -09207, -09208, -09209, -0921, -09220, -09221, -09222, -09223, -09225, -09227, -09228, -09229, -09231, -09232, -09233, -09234, -09235, -09236, -09238, -09241, -09242, -09243, -09244, -09245, -09246, -09251, -09252, -09253, -09254, -09255, -09256, -09257, -09260, -09261, -09262, -09263, -09264, -09265, -09266, -09267, -09268, -09269, -09270, -09271, -09272, -09273, -09274, -09275, -09276, -09277, -09278, -09279, -09280, -09281, -09282, -09283, -09284, -09285, -09286, -09287, -09288, -09289, -09292, -09293, -09294, -09295, -09302, -09303, -09305, -09306, -09307, -0931, -09321, -09323, -09324, -09325, -09326, -09331, -09332, -09333, -09334, -09335, -09336, -09337, -09338, -09339, -09340, -09341, -09342, -09343, -09344, -09345, -09346, -09347, -09348, -09349, -09350, -09351, -09352, -09353, -09354, -09355, -09356, -09357, -09358, -09359, -09360, -09363, -09364, -09365, -09366, -09367, -09369, -09371, -09372, -09373, -09374, -09375, -09376, -09377, -09378, -09381, -09382, -09383, -09384, -09385, -09386, -09391, -09392, -09393, -09394, -09395, -09396, -09397, -09398, -09401, -09402, -09403, -09404, -09405, -09406, -09407, -09408, -09409, -0941, -09420, -09421, -09422, -09423, -09424, -09426, -09427, -09428, -09429, -09431, -09433, -09434, -09435, -09436, -09438, -09439, -09441, -09442, -09443, -09444, -09445, -09446, -09447, -09448, -09451, -09452, -09453, -09454, -09461, -09462, -09463, -09464, -09465, -09466, -09467, -09468, -09469, -09471, -09472, -09473, -09474, -09480, -09481, -09482, -09484, -09491, -09492, -09493, -09495, -09497, -09498, -09499, -09502, -09503, -09504, -09505, -0951, -09521, -09522, -09523, -09524, -09525, -09526, -09527, -09528, -09529, -09531, -09532, -09533, -09534, -09535, -09536, -09542, -09543, -09544, -09545, -09546, -09547, -09548, -09549, -09551, -09552, -09553, -09554, -09555, -09556, -09560, -09561, -09562, -09563, -09564, -09565, -09566, -09567, -09568, -09569, -09571, -09572, -09573, -09574, -09575, -09576, -09602, -09603, -09604, -09605, -09606, -09607, -09608, -0961, -09621, -09622, -09624, -09625, -09626, -09627, -09628, -09631, -09632, -09633, -09634, -09635, -09636, -09637, -09638, -09639, -09641, -09642, -09643, -09644, -09645, -09646, -09647, -09648, -09651, -09652, -09653, -09654, -09655, -09656, -09657, -09658, -09659, -09661, -09662, -09663, -09664, -09665, -09666, -09671, -09672, -09673, -09674, -09675, -09676, -09677, -09681, -09682, -09683, -09701, -09704, -09708, -0971, -09720, -09721, -09722, -09723, -09724, -09725, -09726, -09727, -09728, -09729, -09732, -09733, -09734, -09735, -09736, -09737, -09738, -09741, -09742, -09744, -09745, -09746, -09747, -09748, -09749, -09761, -09762, -09763, -09764, -09765, -09766, -09771, -09772, -09773, -09774, -09775, -09776, -09777, -09778, -09779, -09802, -09803, -09804, -09805, -0981, -09820, -09822, -09823, -09824, -09825, -09826, -09827, -09828, -09829, -09831, -09832, -09833, -09834, -09835, -09836, -09837, -09841, -09842, -09843, -09844, -09845, -09846, -09847, -09848, -09851, -09852, -09853, -09854, -09855, -09856, -09857, -09861, -09865, -09867, -09868, -09869, -09871, -09872, -09873, -09874, -09875, -09876, -09901, -09903, -09904, -09905, -09906, -09907, -09908, -0991, -09920, -09921, -09922, -09923, -09924, -09925, -09926, -09927, -09928, -09929, -09931, -09932, -09933, -09935, -09936, -09937, -09938, -09941, -09942, -09943, -09944, -09945, -09946, -09947, -09948, -09951, -09952, -09953, -09954, -09955, -09956, -09961, -09962, -09963, -09964, -09965, -09966, -09971, -09972, -09973, -09974, -09975, -09976, -09977, -09978} -\clist_const:Nn \c_phone_DE_sondervorwahlen_clist {01371, -01372, -01373, -01374, -01375, -01376, -01377, -01378, -01379, -015019, -01511, -01512, -01514, -01515, -01516, -01517, -01520, -01521, -01522, -01523, -01525, -01526, -01529, -015566, -015630, -015678, -01570, -01573, -01575, -01577, -01578, -01579, -015888, -01590, -0160, -0162, -0163, -0164, -0168, -0169, -0170, -0171, -0172, -0173, -0174, -0175, -0176, -0177, -0178, -0179, -01801, -01802, -01803, -01804, -01805, -01806, -01807, -0181, -0182, -0183, -0184, -0185, -0186, -0187, -0188, -0189, -0191, -0192, -0193, -0194, -032, -0700, -0800, -09001, -09003, -09005, -09009} diff --git a/macros/latex/contrib/phonenumbers/tex/phn-FR_Ortsnamen.tex b/macros/latex/contrib/phonenumbers/tex/phn-FR_Ortsnamen.tex deleted file mode 100644 index eda23d4664..0000000000 --- a/macros/latex/contrib/phonenumbers/tex/phn-FR_Ortsnamen.tex +++ /dev/null @@ -1,48 +0,0 @@ -% phonenumbers package: French place names -% Datum: 20. August 2021 -\tl_const:cn {c_phone_FR_ortsname_01_tl} {\^{I}le-de-France} -\tl_const:cn {c_phone_FR_ortsname_02_tl} {Nord-ouest} -\tl_const:cn {c_phone_FR_ortsname_0262_tl} {La~R\a'{e}union} -\tl_const:cn {c_phone_FR_ortsname_026200_tl} {Terres~australes~et~antarctiques~fran\c{c}aises} -\tl_const:cn {c_phone_FR_ortsname_0263_tl} {La~R\a'{e}union} -\tl_const:cn {c_phone_FR_ortsname_0269_tl} {Mayotte} -\tl_const:cn {c_phone_FR_ortsname_03_tl} {Nord-est} -\tl_const:cn {c_phone_FR_ortsname_04_tl} {Sud-est} -\tl_const:cn {c_phone_FR_ortsname_05_tl} {Sud-ouest} -\tl_const:cn {c_phone_FR_ortsname_0508_tl} {Saint-Pierre-et-Miquelon} -\tl_const:cn {c_phone_FR_ortsname_0590_tl} {Guadeloupe,~Saint-Barth\a'{e}lemy,~Saint-Martin} -\tl_const:cn {c_phone_FR_ortsname_0594_tl} {Guyane} -\tl_const:cn {c_phone_FR_ortsname_0596_tl} {Martinique} -\tl_const:cn {c_phone_FR_ortsname_06_tl} {T\a'{e}l\a'{e}phone~mobile} -\tl_const:cn {c_phone_FR_ortsname_0639_tl} {T\a'{e}l\a'{e}phone~mobile~(Mayotte)} -\tl_const:cn {c_phone_FR_ortsname_0690_tl} {T\a'{e}l\a'{e}phone~mobile~(Guadeloupe)} -\tl_const:cn {c_phone_FR_ortsname_0691_tl} {T\a'{e}l\a'{e}phone~mobile~(Guadeloupe)} -\tl_const:cn {c_phone_FR_ortsname_0692_tl} {T\a'{e}l\a'{e}phone~mobile~(La~R\a'{e}union)} -\tl_const:cn {c_phone_FR_ortsname_0693_tl} {T\a'{e}l\a'{e}phone~mobile~(La~R\a'{e}union)} -\tl_const:cn {c_phone_FR_ortsname_0694_tl} {T\a'{e}l\a'{e}phone~mobile~(Guyane)} -\tl_const:cn {c_phone_FR_ortsname_0696_tl} {T\a'{e}l\a'{e}phone~mobile~(Martinique)} -\tl_const:cn {c_phone_FR_ortsname_0697_tl} {T\a'{e}l\a'{e}phone~mobile~(Martinique)} -\tl_const:cn {c_phone_FR_ortsname_07_tl} {T\a'{e}l\a'{e}phone~mobile} -\tl_const:cn {c_phone_FR_ortsname_0700_tl} {Communication~machine~\a`{a}~machine} -\tl_const:cn {c_phone_FR_ortsname_07005_tl} {Communication~machine~\a`{a}~machine~(Guadeloupe)} -\tl_const:cn {c_phone_FR_ortsname_07006_tl} {Communication~machine~\a`{a}~machine~(Guyane)} -\tl_const:cn {c_phone_FR_ortsname_07007_tl} {Communication~machine~\a`{a}~machine~(Martinique)} -\tl_const:cn {c_phone_FR_ortsname_07008_tl} {Communication~machine~\a`{a}~machine~(Mayotte)} -\tl_const:cn {c_phone_FR_ortsname_07009_tl} {Communication~machine~\a`{a}~machine~(La~R\a'{e}union)} -\tl_const:cn {c_phone_FR_ortsname_08_tl} {Service~\a`{a}~valeur~ajout\a'{e}e} -\tl_const:cn {c_phone_FR_ortsname_09_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP} -\tl_const:cn {c_phone_FR_ortsname_09475_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)} -\tl_const:cn {c_phone_FR_ortsname_09476_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)} -\tl_const:cn {c_phone_FR_ortsname_09477_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)} -\tl_const:cn {c_phone_FR_ortsname_09478_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Mayotte)} -\tl_const:cn {c_phone_FR_ortsname_09479_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)} -\tl_const:cn {c_phone_FR_ortsname_09760_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)} -\tl_const:cn {c_phone_FR_ortsname_09761_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)} -\tl_const:cn {c_phone_FR_ortsname_09762_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)} -\tl_const:cn {c_phone_FR_ortsname_09763_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)} -\tl_const:cn {c_phone_FR_ortsname_09764_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)} -\tl_const:cn {c_phone_FR_ortsname_09765_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)} -\tl_const:cn {c_phone_FR_ortsname_09766_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)} -\tl_const:cn {c_phone_FR_ortsname_09767_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)} -\tl_const:cn {c_phone_FR_ortsname_09768_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)} -\tl_const:cn {c_phone_FR_ortsname_09769_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)} diff --git a/macros/latex/contrib/phonenumbers/tex/phn-FR_Vorwahlen.tex b/macros/latex/contrib/phonenumbers/tex/phn-FR_Vorwahlen.tex deleted file mode 100644 index 965c0259b0..0000000000 --- a/macros/latex/contrib/phonenumbers/tex/phn-FR_Vorwahlen.tex +++ /dev/null @@ -1,48 +0,0 @@ -% phonenumbers package: French area codes -% Datum: 20. August 2021 -\clist_const:Nn \c_phone_FR_ortsvorwahlen_clist {01, -02, -0262, -026200, -0263, -0269, -03, -04, -05, -0508, -0590, -0594, -0596} -\clist_const:Nn \c_phone_FR_sondervorwahlen_clist {06, -0639, -0690, -0691, -0692, -0693, -0694, -0696, -0697, -07, -0700, -07005, -07006, -07007, -07008, -07009, -08, -09, -09475, -09476, -09477, -09478, -09479, -09760, -09761, -09762, -09763, -09764, -09765, -09766, -09767, -09768, -09769} diff --git a/macros/latex/contrib/phonenumbers/tex/phn-Landeskennzahlen.tex b/macros/latex/contrib/phonenumbers/tex/phn-Landeskennzahlen.tex deleted file mode 100644 index 8ffe8e88bd..0000000000 --- a/macros/latex/contrib/phonenumbers/tex/phn-Landeskennzahlen.tex +++ /dev/null @@ -1,219 +0,0 @@ -% phonenumbers package: country codes -% Datum: 5. März 2017 -\clist_const:Nn \c_phone_landeskennzahlen_clist {1, -20, -211, -212, -213, -216, -218, -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, -260, -261, -262, -263, -264, -265, -266, -267, -268, -269, -27, -290, -291, -297, -298, -299, -30, -31, -32, -33, -34, -350, -351, -352, -353, -354, -355, -356, -357, -358, -359, -36, -370, -371, -372, -373, -374, -375, -376, -377, -378, -379, -380, -381, -382, -383, -385, -386, -387, -388, -389, -39, -40, -41, -420, -421, -423, -43, -44, -45, -46, -47, -48, -49, -500, -501, -502, -503, -504, -505, -506, -507, -508, -509, -51, -52, -53, -54, -55, -56, -57, -58, -590, -591, -592, -593, -594, -595, -596, -597, -598, -599, -60, -61, -62, -63, -64, -65, -66, -670, -672, -673, -674, -675, -676, -677, -678, -679, -680, -681, -682, -683, -685, -686, -687, -688, -689, -690, -691, -692, -7, -800, -808, -81, -82, -84, -850, -852, -853, -855, -856, -86, -870, -878, -880, -881, -882, -883, -886, -888, -90, -91, -92, -93, -94, -95, -960, -961, -962, -963, -964, -965, -966, -967, -968, -971, -972, -973, -974, -975, -976, -977, -979, -98, -991, -992, -993, -994, -995, -996, -998} diff --git a/macros/latex/contrib/phonenumbers/tex/phn-UK_Vorwahlen.tex b/macros/latex/contrib/phonenumbers/tex/phn-UK_Vorwahlen.tex deleted file mode 100644 index 62a5ab2422..0000000000 --- a/macros/latex/contrib/phonenumbers/tex/phn-UK_Vorwahlen.tex +++ /dev/null @@ -1,1321 +0,0 @@ -% phonenumbers package: British area codes -% Datum: 20. August 2021 -\clist_const:Nn \c_phone_UK_ortsvorwahlen_clist {0113, -0114, -0115, -0116, -0117, -0118, -01200, -01202, -01204, -01205, -01206, -01207, -01208, -01209, -0121, -01223, -01224, -01225, -01226, -01227, -01228, -01229, -01233, -01234, -01235, -01236, -01237, -01239, -01241, -01242, -01243, -01244, -01245, -01246, -01248, -01249, -01250, -01252, -01253, -01254, -01255, -01256, -01257, -01258, -01259, -01260, -01261, -01262, -01263, -01264, -01267, -01268, -01269, -01270, -01271, -01273, -01274, -01275, -01276, -01277, -01278, -01279, -01280, -01282, -01283, -01284, -01285, -01286, -01287, -01288, -01289, -01290, -01291, -01292, -01293, -01294, -01295, -01296, -01297, -01298, -01299, -01300, -01301, -01302, -01303, -01304, -01305, -01306, -01307, -01308, -01309, -0131, -01320, -01322, -01323, -01324, -01325, -01326, -01327, -01328, -01329, -01330, -01332, -01333, -01334, -01335, -01337, -01339, -01340, -01341, -01342, -01343, -01344, -01346, -01347, -01348, -01349, -01350, -01352, -01353, -01354, -01355, -01356, -01357, -01358, -01359, -01360, -01361, -01362, -01363, -01364, -01366, -01367, -01368, -01369, -01371, -01372, -01373, -01375, -01376, -01377, -01379, -01380, -01381, -01382, -01383, -01384, -01386, -01387, -013873, -01388, -01389, -01392, -01394, -01395, -01397, -01398, -01400, -01403, -01404, -01405, -01406, -01407, -01408, -01409, -0141, -01420, -01422, -01423, -01424, -01425, -01427, -01428, -01429, -01430, -01431, -01432, -01433, -01434, -01435, -01436, -01437, -01438, -01439, -01440, -01442, -01443, -01444, -01445, -01446, -01449, -01450, -01451, -01452, -01453, -01454, -01455, -01456, -01457, -01458, -01460, -01461, -01462, -01463, -01464, -01465, -01466, -01467, -01469, -01470, -01471, -01472, -01473, -01474, -01475, -01476, -01477, -01478, -01479, -01480, -01481, -01482, -01483, -01484, -01485, -01487, -01488, -01489, -01490, -01491, -01492, -01493, -01494, -01495, -01496, -01497, -01499, -01501, -01502, -01503, -01505, -01506, -01507, -01508, -01509, -0151, -01520, -01522, -01524, -015242, -01525, -01526, -01527, -01528, -01529, -01530, -01531, -01534, -01535, -01536, -01538, -01539, -015394, -015395, -015396, -01540, -01542, -01543, -01544, -01545, -01546, -01547, -01548, -01549, -01550, -01553, -01554, -01555, -01556, -01557, -01558, -01559, -01560, -01561, -01562, -01563, -01564, -01565, -01566, -01567, -01568, -01569, -01570, -01571, -01572, -01573, -01575, -01576, -01577, -01578, -01579, -01580, -01581, -01582, -01583, -01584, -01586, -01588, -01590, -01591, -01592, -01593, -01594, -01595, -01597, -01598, -01599, -01600, -01603, -01604, -01606, -01608, -01609, -0161, -01620, -01621, -01622, -01623, -01624, -01625, -01626, -01628, -01629, -01630, -01631, -01633, -01634, -01635, -01636, -01637, -01638, -01639, -01641, -01642, -01643, -01644, -01646, -01647, -01650, -01651, -01652, -01653, -01654, -01655, -01656, -01659, -01661, -01663, -01664, -01665, -01666, -01667, -01668, -01669, -01670, -01671, -01672, -01673, -01674, -01675, -01676, -01677, -01678, -01680, -01681, -01683, -01684, -01685, -01686, -01687, -01688, -01689, -01690, -01691, -01692, -01694, -01695, -01697, -016973, -016974, -016977, -01698, -01700, -01702, -01704, -01706, -01707, -01708, -01709, -01720, -01721, -01722, -01723, -01724, -01725, -01726, -01727, -01728, -01729, -01730, -01732, -01733, -01736, -01737, -01738, -01740, -01743, -01744, -01745, -01746, -01747, -01748, -01749, -01750, -01751, -01752, -01753, -01754, -01756, -01757, -01758, -01759, -01760, -01761, -01763, -01764, -01765, -01766, -01767, -01768, -017683, -017684, -017687, -01769, -01770, -01771, -01772, -01773, -01775, -01776, -01777, -01778, -01779, -01780, -01782, -01784, -01785, -01786, -01787, -01788, -01789, -01790, -01792, -01793, -01794, -01795, -01796, -01797, -01798, -01799, -01803, -01805, -01806, -01807, -01808, -01809, -01821, -01822, -01823, -01824, -01825, -01827, -01828, -01829, -01830, -01832, -01833, -01834, -01835, -01837, -01838, -01840, -01841, -01842, -01843, -01844, -01845, -01847, -01848, -01851, -01852, -01854, -01855, -01856, -01857, -01858, -01859, -01862, -01863, -01864, -01865, -01866, -01869, -01870, -01871, -01872, -01873, -01874, -01875, -01876, -01877, -01878, -01879, -01880, -01882, -01883, -01884, -01885, -01886, -01887, -01888, -01889, -01890, -01892, -01895, -01896, -01899, -01900, -01902, -01903, -01904, -01905, -01908, -01909, -0191, -01920, -01922, -01923, -01924, -01925, -01926, -01928, -01929, -01931, -01932, -01933, -01934, -01935, -01937, -01938, -01939, -01942, -01943, -01944, -01945, -01946, -019467, -01947, -01948, -01949, -01950, -01951, -01952, -01953, -01954, -01955, -01957, -01959, -01962, -01963, -01964, -01967, -01968, -01969, -01970, -01971, -01972, -01974, -01975, -01977, -01978, -01980, -01981, -01982, -01983, -01984, -01985, -01986, -01987, -01988, -01989, -01992, -01993, -01994, -01995, -01997, -020, -023, -024, -028, -029} -\clist_const:Nn \c_phone_UK_obligatorische_ortsvorwahlen_clist {01202, -01224, -01273, -01274, -01642, -01908} -\clist_const:Nn \c_phone_UK_sondervorwahlen_clist {0300, -0303, -0306, -0330, -0331, -0333, -0343, -0344, -0345, -0370, -0371, -0372, -05511, -05516, -05555, -05588, -05600, -05601, -05602, -05603, -05604, -07000, -07002, -07003, -07004, -07005, -07006, -07008, -07009, -07010, -07011, -07012, -07013, -07014, -07015, -07016, -07017, -07018, -07019, -07020, -07021, -07022, -07023, -07024, -07026, -07027, -07028, -07029, -07030, -07031, -07032, -07033, -07034, -07035, -07036, -07037, -07038, -07039, -07040, -07041, -07042, -07043, -07044, -07045, -07046, -07047, -07048, -07049, -07050, -07052, -07053, -07054, -07055, -07056, -07057, -07058, -07059, -07060, -07061, -07062, -07063, -07064, -07065, -07066, -07067, -07068, -07069, -07070, -07071, -07072, -07073, -07074, -07076, -07077, -07078, -07079, -07080, -07081, -07082, -07083, -07084, -07085, -07086, -07087, -07088, -07089, -07090, -07091, -07092, -07093, -07094, -07096, -07098, -07099, -07106, -07107, -07300, -07301, -07302, -07303, -07304, -07305, -07306, -07307, -07308, -07309, -07310, -07311, -07312, -07340, -07341, -07342, -07354, -07355, -07357, -07359, -07360, -07361, -07362, -07363, -07364, -07365, -07366, -07367, -07368, -07369, -07375, -07376, -07377, -07378, -07379, -07380, -07381, -07382, -07383, -07384, -07385, -07386, -07387, -07388, -07389, -07390, -07391, -07392, -07393, -07394, -07395, -07396, -07397, -07398, -07399, -07400, -07401, -07402, -07403, -07404, -07405, -07406, -07407, -07408, -07409, -07410, -07411, -07412, -07413, -07414, -07415, -07416, -07417, -07418, -07419, -07420, -07421, -07422, -07423, -07424, -07425, -07426, -07427, -07428, -07429, -07430, -07431, -07432, -07433, -07434, -07435, -07436, -07437, -07438, -07440, -07441, -07442, -07443, -07444, -07445, -07446, -07447, -07448, -07449, -07450, -07451, -07452, -07453, -07454, -07455, -07456, -07457, -07458, -07459, -07460, -07461, -07462, -07463, -07464, -07465, -07466, -07467, -07468, -07469, -07470, -07471, -07472, -07473, -07474, -07475, -07476, -07477, -07478, -07479, -07480, -07481, -07482, -07483, -07484, -07485, -07486, -07487, -07488, -07489, -07490, -07491, -07492, -07493, -07494, -07495, -07496, -07497, -07498, -07499, -07500, -07501, -07502, -07503, -07504, -07505, -07506, -07507, -07508, -07509, -07510, -07511, -07512, -07513, -07514, -07515, -07516, -07517, -07518, -07519, -07520, -07521, -07522, -07523, -07525, -07526, -07527, -07528, -07529, -07530, -07531, -07532, -07533, -07534, -07535, -07536, -07537, -07538, -07539, -07540, -07541, -07542, -07543, -07544, -07545, -07546, -07547, -07548, -07549, -07550, -07551, -07552, -07553, -07554, -07555, -07556, -07557, -07558, -07559, -07560, -07561, -07562, -07563, -07564, -07565, -07566, -07567, -07568, -07569, -07570, -07572, -07573, -07574, -07575, -07576, -07577, -07578, -07579, -07580, -07581, -07582, -07583, -07584, -07585, -07586, -07587, -07588, -07589, -07590, -07591, -07592, -07593, -07594, -07595, -07596, -07597, -07598, -07599, -07600, -07602, -07623, -07624, -07625, -07626, -07640, -07641, -07644, -07654, -07659, -07660, -07661, -07663, -07666, -07669, -07677, -07681, -07693, -07699, -07700, -07701, -07702, -07703, -07704, -07705, -07706, -07707, -07708, -07709, -07710, -07711, -07712, -07713, -07714, -07715, -07716, -07717, -07718, -07719, -07720, -07721, -07722, -07723, -07724, -07725, -07726, -07727, -07728, -07729, -07730, -07731, -07732, -07733, -07734, -07735, -07736, -07737, -07738, -07739, -07740, -07741, -07742, -07743, -07744, -07745, -07746, -07747, -07748, -07749, -07750, -07751, -07752, -07753, -07754, -07755, -07756, -07757, -07758, -07759, -07760, -07761, -07762, -07763, -07764, -07765, -07766, -07767, -07768, -07769, -07770, -07771, -07772, -07773, -07774, -07775, -07776, -07777, -07778, -07779, -07780, -07781, -07782, -07783, -07784, -07785, -07786, -07787, -07788, -07789, -07790, -07791, -07792, -07793, -07794, -07795, -07796, -07797, -07798, -07799, -07800, -07801, -07802, -07803, -07804, -07805, -07806, -07807, -07808, -07809, -07810, -07811, -07812, -07813, -07814, -07815, -07816, -07817, -07818, -07819, -07820, -07821, -07822, -07823, -07824, -07825, -07826, -07827, -07828, -07829, -07830, -07831, -07832, -07833, -07834, -07835, -07836, -07837, -07838, -07839, -07840, -07841, -07842, -07843, -07844, -07845, -07846, -07847, -07848, -07849, -07850, -07851, -07852, -07853, -07854, -07855, -07856, -07857, -07858, -07859, -07860, -07861, -07862, -07863, -07864, -07865, -07866, -07867, -07868, -07869, -07870, -07871, -07872, -07873, -07874, -07875, -07876, -07877, -07878, -07879, -07880, -07881, -07882, -07883, -07884, -07885, -07886, -07887, -07888, -07889, -07890, -07891, -07892, -07893, -07894, -07895, -07896, -07897, -07898, -07899, -07900, -07901, -07902, -07903, -07904, -07905, -07906, -07907, -07908, -07909, -07910, -07911, -07912, -07913, -07914, -07915, -07916, -07917, -07918, -07919, -07920, -07921, -07922, -07923, -07924, -07925, -07926, -07927, -07928, -07929, -07930, -07931, -07932, -07933, -07934, -07935, -07936, -07937, -07938, -07939, -07940, -07941, -07942, -07943, -07944, -07945, -07946, -07947, -07948, -07949, -07950, -07951, -07952, -07953, -07954, -07955, -07956, -07957, -07958, -07959, -07960, -07961, -07962, -07963, -07964, -07965, -07966, -07967, -07968, -07969, -07970, -07971, -07972, -07973, -07974, -07975, -07976, -07977, -07978, -07979, -07980, -07981, -07982, -07983, -07984, -07985, -07986, -07987, -07988, -07989, -07990, -07999, -0800, -0808, -0820, -0843, -0844, -0845, -0870, -0871, -0872, -0897, -0899, -0900, -0901, -0902, -0903, -0904, -0905, -0906, -0907, -0911, -0912, -0913} diff --git a/macros/latex/contrib/phonenumbers/tex/phn-US_Vorwahlen.tex b/macros/latex/contrib/phonenumbers/tex/phn-US_Vorwahlen.tex deleted file mode 100644 index c79902373d..0000000000 --- a/macros/latex/contrib/phonenumbers/tex/phn-US_Vorwahlen.tex +++ /dev/null @@ -1,681 +0,0 @@ -% phonenumbers package: area codes of the North American Numbering Plan -% Datum: 20. August 2021 -\clist_const:Nn \c_phone_US_ortsvorwahlen_clist {201, -202, -203, -204, -205, -206, -207, -208, -209, -210, -212, -213, -214, -215, -216, -217, -218, -219, -220, -223, -224, -225, -226, -227, % Freischaltungsdatum noch unklar -228, -229, -231, -234, -236, -239, -240, -242, -246, -248, -249, -250, -251, -252, -253, -254, -256, -260, -262, -264, -267, -268, -269, -270, -272, -274, % Freischaltungsdatum noch unklar -276, -279, -281, -284, -289, -301, -302, -303, -304, -305, -306, -307, -308, -309, -310, -312, -313, -314, -315, -316, -317, -318, -319, -320, -321, -323, -325, -326, -330, -331, -332, -334, -336, -337, -339, -340, -341, -343, -345, -346, -347, -351, -352, -360, -361, -364, -365, -367, -368, % ab 2022-04-23 -380, -385, -386, -401, -402, -403, -404, -405, -406, -407, -408, -409, -410, -412, -413, -414, -415, -416, -417, -418, -419, -423, -424, -425, -428, % ab 2023-04-29 -430, -431, -432, -434, -435, -437, -438, -440, -441, -442, -443, -445, -447, -448, -450, -458, -463, -464, % Freischaltungsdatum noch unklar -469, -470, -473, -474, % ab 2021-10-02 -475, -478, -479, -480, -484, -501, -502, -503, -504, -505, -506, -507, -508, -509, -510, -512, -513, -514, -515, -516, -517, -518, -519, -520, -530, -531, -534, -539, -540, -541, -548, -551, -559, -561, -562, -563, -564, -567, -570, -571, -572, -573, -574, -575, -579, -580, -581, -582, -585, -586, -587, -601, -602, -603, -604, -605, -606, -607, -608, -609, -610, -612, -613, -614, -615, -616, -617, -618, -619, -620, -623, -626, -628, -629, -630, -631, -636, -639, -640, -641, -646, -647, -649, -650, -651, -656, % ab 2022-02-22 -657, -658, -659, -660, -661, -662, -664, -667, -669, -670, -671, -672, -678, -680, -681, -682, -684, -689, -701, -702, -703, -704, -705, -706, -707, -708, -709, -712, -713, -714, -715, -716, -717, -718, -719, -720, -721, -724, -725, -726, -727, -730, % Freischaltungsdatum noch unklar -731, -732, -734, -737, -740, -742, % ab 2021-10-16 -743, -747, -754, -757, -758, -760, -762, -763, -765, -767, -769, -770, -771, % ab 2021-11-09 -772, -773, -774, -775, -778, -779, -780, -781, -782, -784, -785, -786, -787, -801, -802, -803, -804, -805, -806, -807, -808, -809, -810, -812, -813, -814, -815, -816, -817, -818, -819, -820, -825, -826, % ab 2022-06-14 -828, -829, -830, -831, -832, -838, -839, -840, -843, -845, -847, -848, -849, -850, -854, -856, -857, -858, -859, -860, -862, -863, -864, -865, -867, -868, -869, -870, -872, -873, -876, -878, -879, % Freischaltungsdatum noch unklar -901, -902, -903, -904, -905, -906, -907, -908, -909, -910, -912, -913, -914, -915, -916, -917, -918, -919, -920, -925, -928, -929, -930, -931, -934, -936, -937, -938, -939, -940, -941, -943, % ab 2022-03-15 -945, -947, -948, % ab 2022-05-09 -949, -951, -952, -954, -956, -959, -970, -971, -972, -973, -978, -979, -980, -984, -985, -986, -989} -\clist_const:Nn \c_phone_US_obligatorische_ortsvorwahlen_clist {201, -% 202, bisher 7D, demnächst 10D (Einführung von 771) -203, -204, -205, -206, -208, -210, -212, -213, -214, -215, -217, -220, -223, -224, -226, -227, % Freischaltungsdatum noch unklar -234, -236, -240, -248, -249, -250, -253, -256, -267, -270, -272, -274, % Freischaltungsdatum noch unklar -279, -281, -289, -301, -303, -304, -305, -310, -312, -315, -317, -323, -326, -330, -331, -332, -336, -339, -341, -343, -346, -347, -351, -360, -364, -365, -367, -368, % ab 2022-04-23 -380, -385, -402, -403, -404, -405, -407, -408, -410, -412, -415, -416, -418, -419, -424, -425, -428, % ab 2023-04-29 -430, -431, -437, -438, -442, -443, -445, -447, -448, -450, -458, -463, -464, % Freischaltungsdatum noch unklar -469, -470, -474, % ab 2021-10-02 -475, -484, -503, -% 506, bisher 7D, demnächst 10D (Einführung von 428) -508, -510, -512, -514, -518, -519, -531, -534, -539, -% 540, bisher 7D, demnächst 10D (Einführung von 826) -541, -548, -551, -564, -567, -570, -571, -572, -579, -581, -582, -587, -601, -604, -609, -610, -613, -614, -615, -617, -% 618, bisher 7D, demnächst 10D (Einführung von 730) -619, -628, -629, -630, -631, -639, -640, -646, -647, -656, % ab 2022-02-22 -657, -658, -659, -667, -669, -672, -678, -680, -681, -682, -689, -702, -703, -704, -706, -% 708, bisher 7D, demnächst 10D (Einführung von 464) -713, -714, -% 715, 2021-08-16 nicht mehr in der Liste aufgeführt, aber Overlay zu 534 -717, -718, -720, -724, -725, -726, -730, % Freischaltungsdatum noch unklar -732, -737, -740, -743, -747, -754, -% 757, bisher 7D, demnächst 10D (Einführung von 948) -760, -762, -769, -770, -771, % ab 2021-11-09 -773, -774, -778, -779, -780, -781, -782, -786, -787, -801, -803, -805, -809, -812, -% 813, bisher 7D, demnächst 10D (Einführung von 656) -814, -815, -817, -818, -819, -820, -825, -826, % ab 2022-06-14 -829, -832, -838, -839, -840, -843, -847, -848, -849, -850, -854, -857, -858, -860, -862, -872, -873, -878, -902, -903, -905, -909, -916, -917, -918, -919, -% 920, bisher 7D, demnächst 10D (Einführung von 274) -929, -930, -934, -937, -938, -939, -943, % ab 2022-03-15 -945, -947, -948, % ab 2022-05-09 -954, -959, -971, -972, -973, -978, -980, -984, -986} -\clist_const:Nn \c_phone_US_sondervorwahlen_clist {500, -521, -522, -523, -524, -525, -526, -533, -544, -566, -577, -588, -600, -622, -700, -710, -800, -833, -844, -855, -866, -877, -888, -900} diff --git a/macros/latex/contrib/phonenumbers/tex/phn-AT_Ortsnamen.tex b/macros/latex/contrib/phonenumbers/tex/phonenumbers-AT.def index ea6b95577f..6d8a25f3c9 100644 --- a/macros/latex/contrib/phonenumbers/tex/phn-AT_Ortsnamen.tex +++ b/macros/latex/contrib/phonenumbers/tex/phonenumbers-AT.def @@ -1,5 +1,1077 @@ -% phonenumbers package: Austrian place names -% Datum: 20. August 2021 +% phonenumbers package: phonenumbers-AT.def +% Module for Austrian telephone numbers +% Author: K. Wehr +% Version: 2.5 +% Date: 2022-07-01 +\clist_const:Nn \c_phone_AT_ortsvorwahlen_clist {01, +02142, +02143, +02144, +02145, +02146, +02147, +02160, +02162, +02163, +02164, +02165, +02166, +02167, +02168, +02169, +02172, +02173, +02174, +02175, +02176, +02177, +02212, +02213, +02214, +02215, +02216, +02230, +02231, +02232, +02233, +02234, +02235, +02236, +02237, +02238, +02239, +02242, +02243, +02244, +02245, +02246, +02247, +02248, +02249, +02252, +02253, +02254, +02255, +02256, +02257, +02258, +02259, +02262, +02263, +02264, +02265, +02266, +02267, +02268, +02269, +02271, +02272, +02273, +02274, +02275, +02276, +02277, +02278, +02279, +02282, +02283, +02284, +02285, +02286, +02287, +02288, +02289, +02522, +02523, +02524, +02525, +02526, +02527, +02532, +02533, +02534, +02535, +02536, +02538, +02552, +02554, +02555, +02556, +02557, +02572, +02573, +02574, +02575, +02576, +02577, +02610, +02611, +02612, +02613, +02614, +02615, +02616, +02617, +02618, +02619, +02620, +02621, +02622, +02623, +02624, +02625, +02626, +02627, +02628, +02629, +02630, +02631, +02632, +02633, +02634, +02635, +02636, +02637, +02638, +02639, +02641, +02642, +02643, +02644, +02645, +02646, +02647, +02648, +02649, +02662, +02663, +02664, +02665, +02666, +02667, +02672, +02673, +02674, +02680, +02682, +02683, +02684, +02685, +02686, +02687, +02688, +02689, +02711, +02712, +02713, +02714, +02715, +02716, +02717, +02718, +02719, +02722, +02723, +02724, +02725, +02726, +02728, +02731, +02732, +02733, +02734, +02735, +02736, +02738, +02739, +02741, +02742, +02743, +02744, +02745, +02746, +02747, +02748, +02749, +02752, +02753, +02754, +02755, +02756, +02757, +02758, +02762, +02763, +02764, +02765, +02766, +02767, +02768, +02769, +02772, +02773, +02774, +02782, +02783, +02784, +02786, +02812, +02813, +02814, +02815, +02816, +02822, +02823, +02824, +02825, +02826, +02827, +02828, +02829, +02841, +02842, +02843, +02844, +02845, +02846, +02847, +02848, +02849, +02852, +02853, +02854, +02855, +02856, +02857, +02858, +02859, +02862, +02863, +02864, +02865, +02872, +02873, +02874, +02875, +02876, +02877, +02878, +02912, +02913, +02914, +02915, +02916, +02942, +02943, +02944, +02945, +02946, +02947, +02948, +02949, +02951, +02952, +02953, +02954, +02955, +02956, +02957, +02958, +02959, +02982, +02983, +02984, +02985, +02986, +02987, +02988, +02989, +03112, +03113, +03114, +03115, +03116, +03117, +03118, +03119, +03123, +03124, +03125, +03126, +03127, +03132, +03133, +03134, +03135, +03136, +03137, +03140, +03141, +03142, +03143, +03144, +03145, +03146, +03147, +03148, +03149, +03150, +03151, +03152, +03153, +03155, +03157, +03158, +03159, +0316, +03170, +03171, +03172, +03173, +03174, +03175, +03176, +03177, +03178, +03179, +03182, +03183, +03184, +03185, +03322, +03323, +03324, +03325, +03326, +03327, +03328, +03329, +03331, +03332, +03333, +03334, +03335, +03336, +03337, +03338, +03339, +03352, +03353, +03354, +03355, +03356, +03357, +03358, +03359, +03362, +03363, +03364, +03365, +03366, +03382, +03383, +03385, +03386, +03387, +03452, +03453, +03454, +03455, +03456, +03457, +03460, +03461, +03462, +03463, +03464, +03465, +03466, +03467, +03468, +03469, +03472, +03473, +03474, +03475, +03476, +03477, +03512, +03513, +03514, +03515, +03516, +03532, +03533, +03534, +03535, +03536, +03537, +03571, +03572, +03573, +03574, +03575, +03576, +03577, +03578, +03579, +03581, +03582, +03583, +03584, +03585, +03586, +03587, +03588, +03611, +03612, +03613, +03614, +03615, +03616, +03617, +03618, +03619, +03622, +03623, +03624, +03631, +03632, +03633, +03634, +03635, +03636, +03637, +03638, +03680, +03682, +03683, +03684, +03685, +03686, +03687, +03688, +03689, +03832, +03833, +03834, +03842, +03843, +03844, +03845, +03846, +03847, +03848, +03849, +03852, +03853, +03854, +03855, +03856, +03857, +03858, +03859, +03861, +03862, +03863, +03864, +03865, +03866, +03867, +03868, +03869, +03882, +03883, +03884, +03885, +03886, +04212, +04213, +04214, +04215, +04220, +04221, +04223, +04224, +04225, +04226, +04227, +04228, +04229, +04230, +04231, +04232, +04233, +04234, +04235, +04236, +04237, +04238, +04239, +04240, +04242, +04243, +04244, +04245, +04246, +04247, +04248, +04252, +04253, +04254, +04255, +04256, +04257, +04258, +04262, +04263, +04264, +04265, +04266, +04267, +04268, +04269, +04271, +04272, +04273, +04274, +04275, +04276, +04277, +04278, +04279, +04282, +04283, +04284, +04285, +04286, +04350, +04352, +04353, +04354, +04355, +04356, +04357, +04358, +04359, +0463, +04710, +04712, +04713, +04714, +04715, +04716, +04717, +04718, +04732, +04733, +04734, +04735, +04736, +04761, +04762, +04766, +04767, +04768, +04769, +04782, +04783, +04784, +04785, +04822, +04823, +04824, +04825, +04826, +04842, +04843, +04846, +04847, +04848, +04852, +04853, +04855, +04858, +04872, +04873, +04874, +04875, +04876, +04877, +04879, +0512, +05212, +05213, +05214, +05223, +05224, +05225, +05226, +05230, +05232, +05234, +05236, +05238, +05239, +05242, +05243, +05244, +05245, +05246, +05248, +05252, +05253, +05254, +05255, +05256, +05262, +05263, +05264, +05265, +05266, +05272, +05273, +05274, +05275, +05276, +05278, +05279, +05280, +05282, +05283, +05284, +05285, +05286, +05287, +05288, +05289, +05331, +05332, +05333, +05334, +05335, +05336, +05337, +05338, +05339, +05352, +05353, +05354, +05355, +05356, +05357, +05358, +05359, +05372, +05373, +05374, +05375, +05376, +05412, +05413, +05414, +05417, +05418, +05441, +05442, +05443, +05444, +05445, +05446, +05447, +05448, +05449, +05472, +05473, +05474, +05475, +05476, +05477, +05510, +05512, +05513, +05514, +05515, +05516, +05517, +05518, +05519, +05522, +05523, +05524, +05525, +05526, +05550, +05552, +05553, +05554, +05556, +05557, +05558, +05559, +05572, +05573, +05574, +05575, +05576, +05577, +05578, +05579, +05582, +05583, +05585, +05632, +05633, +05634, +05635, +05672, +05673, +05674, +05675, +05676, +05677, +05678, +06131, +06132, +06133, +06134, +06135, +06136, +06137, +06138, +06212, +06213, +06214, +06215, +06216, +06217, +06219, +06221, +06223, +06224, +06225, +06226, +06227, +06228, +06229, +06232, +06233, +06234, +06235, +06240, +06241, +06242, +06243, +06244, +06245, +06246, +06247, +06272, +06274, +06276, +06277, +06278, +06412, +06413, +06414, +06415, +06416, +06417, +06418, +06432, +06433, +06434, +06452, +06453, +06454, +06455, +06456, +06457, +06458, +06461, +06462, +06463, +06466, +06467, +06468, +06470, +06471, +06472, +06473, +06474, +06475, +06476, +06477, +06478, +06479, +06483, +06484, +06541, +06542, +06543, +06544, +06545, +06546, +06547, +06548, +06549, +06562, +06563, +06564, +06565, +06566, +06582, +06583, +06584, +06588, +06589, +0662, +07211, +07212, +07213, +07214, +07215, +07216, +07217, +07218, +07219, +07221, +07223, +07224, +07225, +07226, +07227, +07228, +07229, +07230, +07231, +07232, +07233, +07234, +07235, +07236, +07237, +07238, +07239, +07240, +07241, +07242, +07243, +07244, +07245, +07246, +07247, +07248, +07249, +07250, +07251, +07252, +07253, +07254, +07255, +07256, +07257, +07258, +07259, +07260, +07261, +07262, +07263, +07264, +07265, +07266, +07267, +07268, +07269, +07272, +07273, +07274, +07276, +07277, +07278, +07279, +07280, +07281, +07282, +07283, +07284, +07285, +07286, +07287, +07288, +07289, +0732, +07353, +07355, +07357, +07412, +07413, +07414, +07415, +07416, +07432, +07433, +07434, +07435, +07442, +07443, +07444, +07445, +07448, +07471, +07472, +07473, +07474, +07475, +07476, +07477, +07478, +07479, +07480, +07482, +07483, +07484, +07485, +07486, +07487, +07488, +07489, +07562, +07563, +07564, +07565, +07566, +07582, +07583, +07584, +07585, +07586, +07587, +07588, +07612, +07613, +07614, +07615, +07616, +07617, +07618, +07619, +07662, +07663, +07664, +07665, +07666, +07667, +07672, +07673, +07674, +07675, +07676, +07682, +07683, +07684, +07711, +07712, +07713, +07714, +07716, +07717, +07718, +07719, +07722, +07723, +07724, +07727, +07728, +07729, +07732, +07733, +07734, +07735, +07736, +07742, +07743, +07744, +07745, +07746, +07747, +07748, +07750, +07751, +07752, +07753, +07754, +07755, +07757, +07758, +07759, +07762, +07763, +07764, +07765, +07766, +07767, +07941, +07942, +07943, +07944, +07945, +07946, +07947, +07948, +07949, +07952, +07953, +07954, +07955, +07956} +\clist_const:Nn \c_phone_AT_sondervorwahlen_clist {0501, +0502, +0503, +0504, +0505, +0506, +0507, +0508, +0509, +0517, +057, +059, +0650, +0651, +0652, +0653, +0655, +0657, +0659, +0660, +0661, +0663, +0664, +0665, +0666, +0667, +0668, +0669, +067, +068, +069, +0711, +0718, +0720, +0780, +0800, +0804, +0810, +0820, +0821, +0828, +089, +0900, +0901, +0930, +0931, +0939} \tl_const:cn {c_phone_AT_ortsname_01_tl} {Wien} \tl_const:cn {c_phone_AT_ortsname_02142_tl} {Gattendorf} \tl_const:cn {c_phone_AT_ortsname_02143_tl} {Kittsee} @@ -1069,3 +2141,421 @@ \tl_const:cn {c_phone_AT_ortsname_0930_tl} {Mehrwertdienst} \tl_const:cn {c_phone_AT_ortsname_0931_tl} {Mehrwertdienst} \tl_const:cn {c_phone_AT_ortsname_0939_tl} {Mehrwert-Onlinedienst~(Dialer)} + +\tl_const:Nn \c_phone_AT_landesadjektiv_tl {Austrian} +\bool_const:Nn \c_phone_AT_erlaubt_durchwahl_bool {\c_true_bool} + +\clist_new:N \c_phone_AT_vorwahlen_clist +\clist_concat:NNN \c_phone_AT_vorwahlen_clist \c_phone_AT_ortsvorwahlen_clist \c_phone_AT_sondervorwahlen_clist + +% Prüfe, ob eine Vorwahl als Heimatvorwahl zulässig ist. +% #1: Heimatvorwahl +\prg_new_protected_conditional:Npnn \phone_AT_heimatvorwahl_erlaubt:n #1 {T} + { + \clist_if_in:NnTF \c_phone_AT_ortsvorwahlen_clist {#1} + { + % Alle österreichischen Ortsvorwahlen können Heimatvorwahl sein. + \prg_return_true: + } + { + \msg_warning:nnn {phonenumbers} {invalid home area code} {#1} + \prg_return_false: + } + } + +% #1: Vorwahl, #2: Soll die führende Null ausgegeben werden? +\cs_new_protected:Npn \phone_AT_ziffernvorwahl_schreiben:nN #1#2 + { + \bool_if:NTF #2 + { + \phone_von_hinten_gruppiert_schreiben:n {#1} + } + { + \phone_von_hinten_gruppiert_schreiben:x { \str_tail:n {#1} } + } + } + +% #1: Vorwahl, #2: Folgt eine Rufnummer? +\cs_new_protected:Npn \phone_AT_vorwahl_schreiben:nn #1 #2 + { + \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {AT} } + { + \clist_if_in:NnT \c_phone_AT_sondervorwahlen_clist {#1} + { + \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place} + { + \str_set:Nn \l_phone_vorwahldarstellung_str {number} + } + } + + \bool_lazy_and:nnF { \str_if_eq_p:Vn \l_phone_heimatland_str {AT} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} } + { + \str_case:Vn \l_phone_vorwahldarstellung_str + { + {number} + { + \bool_if:nTF {#2} + { + \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets} + { + \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + { + \phone_AT_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + + \tl_put_right:Nx \l_phone_ausgabetext_tl + { + \str_case:VnF \l_phone_vorwahltrennung_str + { + {space} {\c_space_tl} + {hyphen} {\c_phone_bindestrich_tl} + } + { + \c_phone_schraegstrich_tl + } + } + } + } + { + \phone_AT_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + } + } + {place} + { + \bool_if:nTF {#2} + { + \str_if_eq:VnT \l_phone_vorwahltrennung_str {brackets} + { + \tl_put_right:Nn \l_phone_ausgabetext_tl {(} + } + + \tl_if_exist:cTF {c_phone_AT_ortsname_ #1 _tl} + { + \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_AT_ortsname_ #1 _tl} + } + { + \phone_AT_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + } + + \tl_put_right:Nx \l_phone_ausgabetext_tl + { + \str_case:VnF \l_phone_vorwahltrennung_str + { + {brackets} {) \c_space_tl} + {space} {\c_space_tl} + {hyphen} {\c_phone_bindestrich_tl} + } + { + \c_phone_schraegstrich_tl + } + } + } + { + \tl_if_exist:cTF {c_phone_AT_ortsname_ #1 _tl} + { + \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_AT_ortsname_ #1 _tl} + } + { + \phone_AT_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + } + } + } + {place-and-number} + { + \tl_if_exist:cT {c_phone_AT_ortsname_ #1 _tl} + { + \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_AT_ortsname_ #1 _tl} + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + + \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets} + { + \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + + \bool_if:nT {#2} + { + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + } + { + \phone_AT_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + + \bool_if:nT {#2} + { + \tl_put_right:Nx \l_phone_ausgabetext_tl + { + \str_case:VnF \l_phone_vorwahltrennung_str + { + {space} {\c_space_tl} + {hyphen} {\c_phone_bindestrich_tl} + } + { + \c_phone_schraegstrich_tl + } + } + } + } + } + } + } + } + { + \phone_gruppierte_auslandsvorwahl_schreiben:n {43} + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + + \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {brackets} + { + \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_false_bool + } + { + \phone_AT_ziffernvorwahl_schreiben:nN {#1} \c_false_bool + } + + \bool_if:nT {#2} + { + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + } + + % Linktext schreiben, falls eine Rufnummer folgt + \bool_if:nT {#2} + { + \str_put_right:Nx \l_phone_linktext_str {+43} + \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} } + } + } + +\cs_generate_variant:Nn \phone_AT_vorwahl_schreiben:nn {Vx} + +% #1: Vorwahl, #2: Teilnehmerrufnummer +\cs_new_protected:Npn \phone_AT_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1#2 + { + \int_set:Nn \l_tmpa_int { \str_count:N #1 } + \int_add:Nn \l_tmpa_int { \str_count:n {#2} } + \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str } + + \int_compare:nNnTF {\l_tmpa_int} > {13} + { + % Gesamtnummer hat mehr als 13 Stellen + \msg_warning:nnnn {phonenumbers} {number too long} {landline} {13} + } + { + \int_set:Nn \l_tmpa_int { \str_count:n {#2} } + \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str } + + \int_compare:nNnTF {\l_tmpa_int} < {5} + { + % Teilnehmerrufnummer hat weniger als 5 Stellen + \msg_warning:nnn {phonenumbers} {subscriber number too short} {5} + } + { + \bool_lazy_and:nnTF { \str_if_eq_p:Vn #1 {01} } { \int_compare_p:nNn {\l_tmpa_int} < {7} } + { + % Wiener Teilnehmerrufnummer hat weniger als 7 Stellen + \msg_warning:nnn {phonenumbers} {subscriber number too short} {7} + } + { + \bool_lazy_and:nnTF + { + \bool_lazy_any_p:n + { + { \str_if_eq_p:Vn #1 {02236} } + { \str_if_eq_p:Vn #1 {02252} } + { \str_if_eq_p:Vn #1 {0316} } + { \str_if_eq_p:Vn #1 {0463} } + { \str_if_eq_p:Vn #1 {0512} } + { \str_if_eq_p:Vn #1 {05572} } + { \str_if_eq_p:Vn #1 {0662} } + { \str_if_eq_p:Vn #1 {07242} } + { \str_if_eq_p:Vn #1 {0732} } + } + } + { + \int_compare_p:nNn {\l_tmpa_int} < {6} + } + { + % Teilnehmerrufnummer in bestimmten Ortsnetzen hat weniger als 6 Stellen + \msg_warning:nnn {phonenumbers} {subscriber number too short} {6} + } + { + \int_compare:nNnTF {\l_tmpa_int} > {9} + { + % Teilnehmerrufnummer hat mehr als 9 Stellen + \msg_warning:nnn {phonenumbers} {subscriber number too long} {9} + } + { + \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool + } + } + } + } + } + } + +% #1: Vorwahl, #2: Teilnehmerrufnummer +\cs_new_protected:Npn \phone_AT_festnetzteilnehmerrufnummer_ueberpruefen:Nn #1#2 + { + \str_set:Nx \l_tmpa_str { \str_head:n {#2} } + + \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_tmpa_str {0} } { \str_if_eq_p:Vn \l_tmpa_str {1} } + { + \msg_warning:nnV {phonenumbers} {illegal start of subscriber number} \l_tmpa_str + } + { + \phone_AT_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1 {#2} + } + } + +% #1: Vorwahl, #2: Teilnehmerrufnummer +\cs_new_protected:Npn \phone_AT_teilnehmerrufnummer_schreiben:Nn #1 #2 + { + \str_if_empty:NTF #1 + { + % Festnetznummer ohne Vorwahl + \bool_if:NF \l_phone_eingabe_leer_bool + { + \phone_AT_festnetzteilnehmerrufnummer_ueberpruefen:Nn #1 {#2} + } + } + { + \clist_if_in:NVTF \c_phone_AT_ortsvorwahlen_clist #1 + { + % Festnetznummer mit Vorwahl + \phone_AT_festnetzteilnehmerrufnummer_ueberpruefen:Nn #1 {#2} + } + { + % Mobilfunk-/Sondernummer + \str_set_eq:NN \l_tmpa_str #1 + \str_put_right:Nn \l_tmpa_str {#2} + + \str_case:VnF #1 + { + {0517} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} } + {0718} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {dial~up} } + {0720} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {location~independant} } + {0780} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {convergent~service} } + {0800} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {freephone} } + {0804} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {dial~up} } + {0810} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} } + {0820} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} } + {0821} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} } + {0828} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} } + {0900} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} } + {0901} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} } + {0930} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} } + {0931} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} } + {0939} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} } + } + { + \str_case:xn { \str_range:Nnn #1 {1} {3} } + { + {050} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} } + {057} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} } + {059} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} } + {065} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} } + {066} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} } + {067} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} } + {068} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} } + {069} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} } + } + } + + \str_if_empty:NF \l_phone_bereinigte_durchwahl_str + { + \msg_warning:nn {phonenumbers} {odd extension} + } + } + + \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool + { + % Für gültige Nummern mit Vorwahl Linktext schreiben: + \str_put_right:Nn \l_phone_linktext_str {#2} + \str_put_right:NV \l_phone_linktext_str \l_phone_bereinigte_durchwahl_str + } + { + % Für ungültige Nummern mit Vorwahl Linktext löschen: + \str_clear:N \l_phone_linktext_str + } + } + + \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool + { + \phone_von_hinten_gruppiert_schreiben:n {#2} + } + { + \str_put_right:Nn \l_phone_ausgabetext_tl {#2} + } + + \str_if_empty:NF \l_phone_bereinigte_durchwahl_str + { + \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl + \phone_von_hinten_gruppiert_schreiben:V \l_phone_bereinigte_durchwahl_str + } + } + +\cs_generate_variant:Nn \phone_AT_teilnehmerrufnummer_schreiben:Nn {Nx,NV} + +\cs_new_protected:Npn \phone_AT_nummer_schreiben: + { + \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0} + { + \phone_enthaelt_vorwahl:NTF \l_phone_bereinigte_nummer_str + { + \int_set:Nn \l_phone_hauptnummernlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str } + \int_set:Nn \l_phone_vorwahllaenge_int { \str_count:N \l_phone_vorwahl_str } + + \phone_AT_vorwahl_schreiben:Vx \l_phone_vorwahl_str + { + \int_compare_p:nNn {\l_phone_vorwahllaenge_int} < {\l_phone_hauptnummernlaenge_int} + } + + \int_compare:nNnTF {\l_phone_vorwahllaenge_int} = {\l_phone_hauptnummernlaenge_int} + { + \msg_warning:nn {phonenumbers} {missing subscriber number} + } + { + \phone_AT_teilnehmerrufnummer_schreiben:Nx \l_phone_vorwahl_str + { + \str_range:Nnn \l_phone_bereinigte_nummer_str { \l_phone_vorwahllaenge_int + 1 } {-1} + } + } + } + { + \msg_warning:nn {phonenumbers} {invalid area code} + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_durchwahl_str + } + } + { + \phone_AT_teilnehmerrufnummer_schreiben:NV \c_empty_tl \l_phone_bereinigte_nummer_str + } + } + +\cs_new_protected:Npn \phone_AT_vorwahlliste_ausgeben:n #1 + { + \begin{tabbing} + \hspace {4em} \= \kill + + \bool_set_false:N \l_phone_zeilenumbruch_bool + + \clist_map_inline:cn {c_phone_AT_ #1 _clist} + { + \bool_if:NTF \l_phone_zeilenumbruch_bool + { + \\ + } + { + \bool_gset_true:N \l_phone_zeilenumbruch_bool + } + + \phone_von_hinten_gruppiert_schreiben:n {##1} + \tl_use:N \l_phone_ausgabetext_tl + \> + \tl_if_exist:cT {c_phone_AT_ortsname_ ##1 _tl} + { + \tl_use:c {c_phone_AT_ortsname_ ##1 _tl} + } + } + \end{tabbing} + } diff --git a/macros/latex/contrib/phonenumbers/tex/phn-DE_Ortsnamen.tex b/macros/latex/contrib/phonenumbers/tex/phonenumbers-DE.def index fc9b19ab8a..2f02bb1baf 100644 --- a/macros/latex/contrib/phonenumbers/tex/phn-DE_Ortsnamen.tex +++ b/macros/latex/contrib/phonenumbers/tex/phonenumbers-DE.def @@ -1,5 +1,5290 @@ -% phonenumbers package: German place names -% Datum: 20. August 2021 +% phonenumbers package: phonenumbers-DE.def +% Module for German telephone numbers +% Author: K. Wehr +% Version: 2.5 +% Date: 2022-07-01 +\clist_const:Nn \c_phone_DE_ortsvorwahlen_clist {0201, +0202, +0203, +02041, +02043, +02045, +02051, +02052, +02053, +02054, +02056, +02058, +02064, +02065, +02066, +0208, +0209, +02102, +02103, +02104, +0211, +0212, +02129, +02131, +02132, +02133, +02137, +0214, +02150, +02151, +02152, +02153, +02154, +02156, +02157, +02158, +02159, +02161, +02162, +02163, +02164, +02165, +02166, +02171, +02173, +02174, +02175, +02181, +02182, +02183, +02191, +02192, +02193, +02195, +02196, +02202, +02203, +02204, +02205, +02206, +02207, +02208, +0221, +02222, +02223, +02224, +02225, +02226, +02227, +02228, +02232, +02233, +02234, +02235, +02236, +02237, +02238, +02241, +02242, +02243, +02244, +02245, +02246, +02247, +02248, +02251, +02252, +02253, +02254, +02255, +02256, +02257, +02261, +02262, +02263, +02264, +02265, +02266, +02267, +02268, +02269, +02271, +02272, +02273, +02274, +02275, +0228, +02291, +02292, +02293, +02294, +02295, +02296, +02297, +02301, +02302, +02303, +02304, +02305, +02306, +02307, +02308, +02309, +0231, +02323, +02324, +02325, +02327, +02330, +02331, +02332, +02333, +02334, +02335, +02336, +02337, +02338, +02339, +0234, +02351, +02352, +02353, +02354, +02355, +02357, +02358, +02359, +02360, +02361, +02362, +02363, +02364, +02365, +02366, +02367, +02368, +02369, +02371, +02372, +02373, +02374, +02375, +02377, +02378, +02379, +02381, +02382, +02383, +02384, +02385, +02387, +02388, +02389, +02391, +02392, +02393, +02394, +02395, +02401, +02402, +02403, +02404, +02405, +02406, +02407, +02408, +02409, +0241, +02421, +02422, +02423, +02424, +02425, +02426, +02427, +02428, +02429, +02431, +02432, +02433, +02434, +02435, +02436, +02440, +02441, +02443, +02444, +02445, +02446, +02447, +02448, +02449, +02451, +02452, +02453, +02454, +02455, +02456, +02461, +02462, +02463, +02464, +02465, +02471, +02472, +02473, +02474, +02482, +02484, +02485, +02486, +02501, +02502, +02504, +02505, +02506, +02507, +02508, +02509, +0251, +02520, +02521, +02522, +02523, +02524, +02525, +02526, +02527, +02528, +02529, +02532, +02533, +02534, +02535, +02536, +02538, +02541, +02542, +02543, +02545, +02546, +02547, +02548, +02551, +02552, +02553, +02554, +02555, +02556, +02557, +02558, +02561, +02562, +02563, +02564, +02565, +02566, +02567, +02568, +02571, +02572, +02573, +02574, +02575, +02581, +02582, +02583, +02584, +02585, +02586, +02587, +02588, +02590, +02591, +02592, +02593, +02594, +02595, +02596, +02597, +02598, +02599, +02601, +02602, +02603, +02604, +02605, +02606, +02607, +02608, +0261, +02620, +02621, +02622, +02623, +02624, +02625, +02626, +02627, +02628, +02630, +02631, +02632, +02633, +02634, +02635, +02636, +02637, +02638, +02639, +02641, +02642, +02643, +02644, +02645, +02646, +02647, +02651, +02652, +02653, +02654, +02655, +02656, +02657, +02661, +02662, +02663, +02664, +02666, +02667, +02671, +02672, +02673, +02674, +02675, +02676, +02677, +02678, +02680, +02681, +02682, +02683, +02684, +02685, +02686, +02687, +02688, +02689, +02691, +02692, +02693, +02694, +02695, +02696, +02697, +0271, +02721, +02722, +02723, +02724, +02725, +02732, +02733, +02734, +02735, +02736, +02737, +02738, +02739, +02741, +02742, +02743, +02744, +02745, +02747, +02750, +02751, +02752, +02753, +02754, +02755, +02758, +02759, +02761, +02762, +02763, +02764, +02770, +02771, +02772, +02773, +02774, +02775, +02776, +02777, +02778, +02779, +02801, +02802, +02803, +02804, +0281, +02821, +02822, +02823, +02824, +02825, +02826, +02827, +02828, +02831, +02832, +02833, +02834, +02835, +02836, +02837, +02838, +02839, +02841, +02842, +02843, +02844, +02845, +02850, +02851, +02852, +02853, +02855, +02856, +02857, +02858, +02859, +02861, +02862, +02863, +02864, +02865, +02866, +02867, +02871, +02872, +02873, +02874, +02902, +02903, +02904, +02905, +0291, +02921, +02922, +02923, +02924, +02925, +02927, +02928, +02931, +02932, +02933, +02934, +02935, +02937, +02938, +02941, +02942, +02943, +02944, +02945, +02947, +02948, +02951, +02952, +02953, +02954, +02955, +02957, +02958, +02961, +02962, +02963, +02964, +02971, +02972, +02973, +02974, +02975, +02977, +02981, +02982, +02983, +02984, +02985, +02991, +02992, +02993, +02994, +030, +03301, +03302, +03303, +03304, +033051, +033053, +033054, +033055, +033056, +03306, +03307, +033080, +033082, +033083, +033084, +033085, +033086, +033087, +033088, +033089, +033093, +033094, +0331, +033200, +033201, +033202, +033203, +033204, +033205, +033206, +033207, +033208, +033209, +03321, +03322, +033230, +033231, +033232, +033233, +033234, +033235, +033237, +033238, +033239, +03327, +03328, +03329, +03331, +03332, +033331, +033332, +033333, +033334, +033335, +033336, +033337, +033338, +03334, +03335, +033361, +033362, +033363, +033364, +033365, +033366, +033367, +033368, +033369, +03337, +03338, +033393, +033394, +033395, +033396, +033397, +033398, +03341, +03342, +033432, +033433, +033434, +033435, +033436, +033437, +033438, +033439, +03344, +033451, +033452, +033454, +033456, +033457, +033458, +03346, +033470, +033472, +033473, +033474, +033475, +033476, +033477, +033478, +033479, +0335, +033601, +033602, +033603, +033604, +033605, +033606, +033607, +033608, +033609, +03361, +03362, +033631, +033632, +033633, +033634, +033635, +033636, +033637, +033638, +03364, +033652, +033653, +033654, +033655, +033656, +033657, +03366, +033671, +033672, +033673, +033674, +033675, +033676, +033677, +033678, +033679, +033701, +033702, +033703, +033704, +033708, +03371, +03372, +033731, +033732, +033733, +033734, +033741, +033742, +033743, +033744, +033745, +033746, +033747, +033748, +03375, +033760, +033762, +033763, +033764, +033765, +033766, +033767, +033768, +033769, +03377, +03378, +03379, +03381, +03382, +033830, +033831, +033832, +033833, +033834, +033835, +033836, +033837, +033838, +033839, +033841, +033843, +033844, +033845, +033846, +033847, +033848, +033849, +03385, +03386, +033870, +033872, +033873, +033874, +033875, +033876, +033877, +033878, +03391, +033920, +033921, +033922, +033923, +033924, +033925, +033926, +033928, +033929, +033931, +033932, +033933, +03394, +03395, +033962, +033963, +033964, +033965, +033966, +033967, +033968, +033969, +033970, +033971, +033972, +033973, +033974, +033975, +033976, +033977, +033978, +033979, +033981, +033982, +033983, +033984, +033986, +033989, +0340, +0341, +034202, +034203, +034204, +034205, +034206, +034207, +034208, +03421, +034221, +034222, +034223, +034224, +03423, +034241, +034242, +034243, +034244, +03425, +034261, +034262, +034263, +034291, +034292, +034293, +034294, +034295, +034296, +034297, +034298, +034299, +03431, +034321, +034322, +034324, +034325, +034327, +034328, +03433, +034341, +034342, +034343, +034344, +034345, +034346, +034347, +034348, +03435, +034361, +034362, +034363, +034364, +03437, +034381, +034382, +034383, +034384, +034385, +034386, +03441, +034422, +034423, +034424, +034425, +034426, +03443, +034441, +034443, +034444, +034445, +034446, +03445, +034461, +034462, +034463, +034464, +034465, +034466, +034467, +03447, +03448, +034491, +034492, +034493, +034494, +034495, +034496, +034497, +034498, +0345, +034600, +034601, +034602, +034603, +034604, +034605, +034606, +034607, +034609, +03461, +03462, +034632, +034633, +034635, +034636, +034637, +034638, +034639, +03464, +034651, +034652, +034653, +034654, +034656, +034658, +034659, +03466, +034671, +034672, +034673, +034691, +034692, +03471, +034721, +034722, +03473, +034741, +034742, +034743, +034745, +034746, +03475, +03476, +034771, +034772, +034773, +034774, +034775, +034776, +034779, +034781, +034782, +034783, +034785, +034901, +034903, +034904, +034905, +034906, +034907, +034909, +03491, +034920, +034921, +034922, +034923, +034924, +034925, +034926, +034927, +034928, +034929, +03493, +03494, +034953, +034954, +034955, +034956, +03496, +034973, +034975, +034976, +034977, +034978, +034979, +03501, +035020, +035021, +035022, +035023, +035024, +035025, +035026, +035027, +035028, +035032, +035033, +03504, +035052, +035053, +035054, +035055, +035056, +035057, +035058, +0351, +035200, +035201, +035202, +035203, +035204, +035205, +035206, +035207, +035208, +035209, +03521, +03522, +03523, +035240, +035241, +035242, +035243, +035244, +035245, +035246, +035247, +035248, +035249, +03525, +035263, +035264, +035265, +035266, +035267, +035268, +03528, +03529, +03531, +035322, +035323, +035324, +035325, +035326, +035327, +035329, +03533, +035341, +035342, +035343, +03535, +035361, +035362, +035363, +035364, +035365, +03537, +035383, +035384, +035385, +035386, +035387, +035388, +035389, +03541, +03542, +035433, +035434, +035435, +035436, +035439, +03544, +035451, +035452, +035453, +035454, +035455, +035456, +03546, +035471, +035472, +035473, +035474, +035475, +035476, +035477, +035478, +0355, +035600, +035601, +035602, +035603, +035604, +035605, +035606, +035607, +035608, +035609, +03561, +03562, +03563, +03564, +035691, +035692, +035693, +035694, +035695, +035696, +035697, +035698, +03571, +035722, +035723, +035724, +035725, +035726, +035727, +035728, +03573, +03574, +035751, +035752, +035753, +035754, +035755, +035756, +03576, +035771, +035772, +035773, +035774, +035775, +03578, +035792, +035793, +035795, +035796, +035797, +03581, +035820, +035822, +035823, +035825, +035826, +035827, +035828, +035829, +03583, +035841, +035842, +035843, +035844, +03585, +03586, +035872, +035873, +035874, +035875, +035876, +035877, +03588, +035891, +035892, +035893, +035894, +035895, +03591, +03592, +035930, +035931, +035932, +035933, +035934, +035935, +035936, +035937, +035938, +035939, +03594, +035951, +035952, +035953, +035954, +035955, +03596, +035971, +035973, +035974, +035975, +03601, +036020, +036021, +036022, +036023, +036024, +036025, +036026, +036027, +036028, +036029, +03603, +036041, +036042, +036043, +03605, +03606, +036071, +036072, +036074, +036075, +036076, +036077, +036081, +036082, +036083, +036084, +036085, +036087, +0361, +036200, +036201, +036202, +036203, +036204, +036205, +036206, +036207, +036208, +036209, +03621, +03622, +03623, +03624, +036252, +036253, +036254, +036255, +036256, +036257, +036258, +036259, +03628, +03629, +03631, +03632, +036330, +036331, +036332, +036333, +036334, +036335, +036336, +036337, +036338, +03634, +03635, +03636, +036370, +036371, +036372, +036373, +036374, +036375, +036376, +036377, +036378, +036379, +03641, +036421, +036422, +036423, +036424, +036425, +036426, +036427, +036428, +03643, +03644, +036450, +036451, +036452, +036453, +036454, +036458, +036459, +036461, +036462, +036463, +036464, +036465, +03647, +036481, +036482, +036483, +036484, +0365, +036601, +036602, +036603, +036604, +036605, +036606, +036607, +036608, +03661, +036621, +036622, +036623, +036624, +036625, +036626, +036628, +03663, +036640, +036642, +036643, +036644, +036645, +036646, +036647, +036648, +036649, +036651, +036652, +036653, +036691, +036692, +036693, +036694, +036695, +036701, +036702, +036703, +036704, +036705, +03671, +03672, +036730, +036731, +036732, +036733, +036734, +036735, +036736, +036737, +036738, +036739, +036741, +036742, +036743, +036744, +03675, +036761, +036762, +036764, +036766, +03677, +036781, +036782, +036783, +036784, +036785, +03679, +03681, +03682, +03683, +036840, +036841, +036842, +036843, +036844, +036845, +036846, +036847, +036848, +036849, +03685, +03686, +036870, +036871, +036873, +036874, +036875, +036878, +03691, +036920, +036921, +036922, +036923, +036924, +036925, +036926, +036927, +036928, +036929, +03693, +036940, +036941, +036943, +036944, +036945, +036946, +036947, +036948, +036949, +03695, +036961, +036962, +036963, +036964, +036965, +036966, +036967, +036968, +036969, +0371, +037200, +037202, +037203, +037204, +037206, +037207, +037208, +037209, +03721, +03722, +03723, +03724, +03725, +03726, +03727, +037291, +037292, +037293, +037294, +037295, +037296, +037297, +037298, +03731, +037320, +037321, +037322, +037323, +037324, +037325, +037326, +037327, +037328, +037329, +03733, +037341, +037342, +037343, +037344, +037346, +037347, +037348, +037349, +03735, +037360, +037361, +037362, +037363, +037364, +037365, +037366, +037367, +037368, +037369, +03737, +037381, +037382, +037383, +037384, +03741, +037421, +037422, +037423, +037430, +037431, +037432, +037433, +037434, +037435, +037436, +037437, +037438, +037439, +03744, +03745, +037462, +037463, +037464, +037465, +037467, +037468, +0375, +037600, +037601, +037602, +037603, +037604, +037605, +037606, +037607, +037608, +037609, +03761, +03762, +03763, +03764, +03765, +03771, +03772, +03773, +03774, +037752, +037754, +037755, +037756, +037757, +0381, +038201, +038202, +038203, +038204, +038205, +038206, +038207, +038208, +038209, +03821, +038220, +038221, +038222, +038223, +038224, +038225, +038226, +038227, +038228, +038229, +038231, +038232, +038233, +038234, +038292, +038293, +038294, +038295, +038296, +038297, +038300, +038301, +038302, +038303, +038304, +038305, +038306, +038307, +038308, +038309, +03831, +038320, +038321, +038322, +038323, +038324, +038325, +038326, +038327, +038328, +038331, +038332, +038333, +038334, +03834, +038351, +038352, +038353, +038354, +038355, +038356, +03836, +038370, +038371, +038372, +038373, +038374, +038375, +038376, +038377, +038378, +038379, +03838, +038391, +038392, +038393, +03841, +038422, +038423, +038424, +038425, +038426, +038427, +038428, +038429, +03843, +03844, +038450, +038451, +038452, +038453, +038454, +038455, +038456, +038457, +038458, +038459, +038461, +038462, +038464, +038466, +03847, +038481, +038482, +038483, +038484, +038485, +038486, +038488, +0385, +03860, +03861, +03863, +03865, +03866, +03867, +03868, +03869, +03871, +038720, +038721, +038722, +038723, +038724, +038725, +038726, +038727, +038728, +038729, +038731, +038732, +038733, +038735, +038736, +038737, +038738, +03874, +038750, +038751, +038752, +038753, +038754, +038755, +038756, +038757, +038758, +038759, +03876, +03877, +038780, +038781, +038782, +038783, +038784, +038785, +038787, +038788, +038789, +038791, +038792, +038793, +038794, +038796, +038797, +03881, +038821, +038822, +038823, +038824, +038825, +038826, +038827, +038828, +03883, +038841, +038842, +038843, +038844, +038845, +038847, +038848, +038850, +038851, +038852, +038853, +038854, +038855, +038856, +038858, +038859, +03886, +038871, +038872, +038873, +038874, +038875, +038876, +039000, +039001, +039002, +039003, +039004, +039005, +039006, +039007, +039008, +039009, +03901, +03902, +039030, +039031, +039032, +039033, +039034, +039035, +039036, +039037, +039038, +039039, +03904, +039050, +039051, +039052, +039053, +039054, +039055, +039056, +039057, +039058, +039059, +039061, +039062, +03907, +039080, +039081, +039082, +039083, +039084, +039085, +039086, +039087, +039088, +039089, +03909, +0391, +039200, +039201, +039202, +039203, +039204, +039205, +039206, +039207, +039208, +039209, +03921, +039221, +039222, +039223, +039224, +039225, +039226, +03923, +039241, +039242, +039243, +039244, +039245, +039246, +039247, +039248, +03925, +039262, +039263, +039264, +039265, +039266, +039267, +039268, +03928, +039291, +039292, +039293, +039294, +039295, +039296, +039297, +039298, +03931, +039320, +039321, +039322, +039323, +039324, +039325, +039327, +039328, +039329, +03933, +039341, +039342, +039343, +039344, +039345, +039346, +039347, +039348, +039349, +03935, +039361, +039362, +039363, +039364, +039365, +039366, +03937, +039382, +039383, +039384, +039386, +039387, +039388, +039389, +039390, +039391, +039392, +039393, +039394, +039395, +039396, +039397, +039398, +039399, +039400, +039401, +039402, +039403, +039404, +039405, +039406, +039407, +039408, +039409, +03941, +039421, +039422, +039423, +039424, +039425, +039426, +039427, +039428, +03943, +03944, +039451, +039452, +039453, +039454, +039455, +039456, +039457, +039458, +039459, +03946, +03947, +039481, +039482, +039483, +039484, +039485, +039487, +039488, +039489, +03949, +0395, +039600, +039601, +039602, +039603, +039604, +039605, +039606, +039607, +039608, +03961, +03962, +03963, +03964, +03965, +03966, +03967, +03968, +03969, +03971, +039721, +039722, +039723, +039724, +039726, +039727, +039728, +03973, +039740, +039741, +039742, +039743, +039744, +039745, +039746, +039747, +039748, +039749, +039751, +039752, +039753, +039754, +03976, +039771, +039772, +039773, +039774, +039775, +039776, +039777, +039778, +039779, +03981, +039820, +039821, +039822, +039823, +039824, +039825, +039826, +039827, +039828, +039829, +039831, +039832, +039833, +03984, +039851, +039852, +039853, +039854, +039855, +039856, +039857, +039858, +039859, +039861, +039862, +039863, +03987, +039881, +039882, +039883, +039884, +039885, +039886, +039887, +039888, +039889, +03991, +039921, +039922, +039923, +039924, +039925, +039926, +039927, +039928, +039929, +039931, +039932, +039933, +039934, +03994, +039951, +039952, +039953, +039954, +039955, +039956, +039957, +039959, +03996, +039971, +039972, +039973, +039975, +039976, +039977, +039978, +03998, +039991, +039992, +039993, +039994, +039995, +039996, +039997, +039998, +039999, +040, +04101, +04102, +04103, +04104, +04105, +04106, +04107, +04108, +04109, +04120, +04121, +04122, +04123, +04124, +04125, +04126, +04127, +04128, +04129, +04131, +04132, +04133, +04134, +04135, +04136, +04137, +04138, +04139, +04140, +04141, +04142, +04143, +04144, +04146, +04148, +04149, +04151, +04152, +04153, +04154, +04155, +04156, +04158, +04159, +04161, +04162, +04163, +04164, +04165, +04166, +04167, +04168, +04169, +04171, +04172, +04173, +04174, +04175, +04176, +04177, +04178, +04179, +04180, +04181, +04182, +04183, +04184, +04185, +04186, +04187, +04188, +04189, +04191, +04192, +04193, +04194, +04195, +04202, +04203, +04204, +04205, +04206, +04207, +04208, +04209, +0421, +04221, +04222, +04223, +04224, +04230, +04231, +04232, +04233, +04234, +04235, +04236, +04237, +04238, +04239, +04240, +04241, +04242, +04243, +04244, +04245, +04246, +04247, +04248, +04249, +04251, +04252, +04253, +04254, +04255, +04256, +04257, +04258, +04260, +04261, +04262, +04263, +04264, +04265, +04266, +04267, +04268, +04269, +04271, +04272, +04273, +04274, +04275, +04276, +04277, +04281, +04282, +04283, +04284, +04285, +04286, +04287, +04288, +04289, +04292, +04293, +04294, +04295, +04296, +04297, +04298, +04302, +04303, +04305, +04307, +04308, +0431, +04320, +04321, +04322, +04323, +04324, +04326, +04327, +04328, +04329, +04330, +04331, +04332, +04333, +04334, +04335, +04336, +04337, +04338, +04339, +04340, +04342, +04343, +04344, +04346, +04347, +04348, +04349, +04351, +04352, +04353, +04354, +04355, +04356, +04357, +04358, +04361, +04362, +04363, +04364, +04365, +04366, +04367, +04371, +04372, +04381, +04382, +04383, +04384, +04385, +04392, +04393, +04394, +04401, +04402, +04403, +04404, +04405, +04406, +04407, +04408, +04409, +0441, +04421, +04422, +04423, +04425, +04426, +04431, +04432, +04433, +04434, +04435, +04441, +04442, +04443, +04444, +04445, +04446, +04447, +04451, +04452, +04453, +04454, +04455, +04456, +04458, +04461, +04462, +04463, +04464, +04465, +04466, +04467, +04468, +04469, +04471, +04472, +04473, +04474, +04475, +04477, +04478, +04479, +04480, +04481, +04482, +04483, +04484, +04485, +04486, +04487, +04488, +04489, +04491, +04492, +04493, +04494, +04495, +04496, +04497, +04498, +04499, +04501, +04502, +04503, +04504, +04505, +04506, +04508, +04509, +0451, +04521, +04522, +04523, +04524, +04525, +04526, +04527, +04528, +04529, +04531, +04532, +04533, +04534, +04535, +04536, +04537, +04539, +04541, +04542, +04543, +04544, +04545, +04546, +04547, +04550, +04551, +04552, +04553, +04554, +04555, +04556, +04557, +04558, +04559, +04561, +04562, +04563, +04564, +04602, +04603, +04604, +04605, +04606, +04607, +04608, +04609, +0461, +04621, +04622, +04623, +04624, +04625, +04626, +04627, +04630, +04631, +04632, +04633, +04634, +04635, +04636, +04637, +04638, +04639, +04641, +04642, +04643, +04644, +04646, +04651, +04661, +04662, +04663, +04664, +04665, +04666, +04667, +04668, +04671, +04672, +04673, +04674, +04681, +04682, +04683, +04684, +04702, +04703, +04704, +04705, +04706, +04707, +04708, +0471, +04721, +04722, +04723, +04724, +04725, +04731, +04732, +04733, +04734, +04735, +04736, +04737, +04740, +04741, +04742, +04743, +04744, +04745, +04746, +04747, +04748, +04749, +04751, +04752, +04753, +04754, +04755, +04756, +04757, +04758, +04761, +04762, +04763, +04764, +04765, +04766, +04767, +04768, +04769, +04770, +04771, +04772, +04773, +04774, +04775, +04776, +04777, +04778, +04779, +04791, +04792, +04793, +04794, +04795, +04796, +04802, +04803, +04804, +04805, +04806, +0481, +04821, +04822, +04823, +04824, +04825, +04826, +04827, +04828, +04829, +04830, +04832, +04833, +04834, +04835, +04836, +04837, +04838, +04839, +04841, +04842, +04843, +04844, +04845, +04846, +04847, +04848, +04849, +04851, +04852, +04853, +04854, +04855, +04856, +04857, +04858, +04859, +04861, +04862, +04863, +04864, +04865, +04871, +04872, +04873, +04874, +04875, +04876, +04877, +04881, +04882, +04883, +04884, +04885, +04892, +04893, +04902, +04903, +0491, +04920, +04921, +04922, +04923, +04924, +04925, +04926, +04927, +04928, +04929, +04931, +04932, +04933, +04934, +04935, +04936, +04938, +04939, +04941, +04942, +04943, +04944, +04945, +04946, +04947, +04948, +04950, +04951, +04952, +04953, +04954, +04955, +04956, +04957, +04958, +04959, +04961, +04962, +04963, +04964, +04965, +04966, +04967, +04968, +04971, +04972, +04973, +04974, +04975, +04976, +04977, +05021, +05022, +05023, +05024, +05025, +05026, +05027, +05028, +05031, +05032, +05033, +05034, +05035, +05036, +05037, +05041, +05042, +05043, +05044, +05045, +05051, +05052, +05053, +05054, +05055, +05056, +05060, +05062, +05063, +05064, +05065, +05066, +05067, +05068, +05069, +05071, +05072, +05073, +05074, +05082, +05083, +05084, +05085, +05086, +05101, +05102, +05103, +05105, +05108, +05109, +0511, +05121, +05123, +05126, +05127, +05128, +05129, +05130, +05131, +05132, +05135, +05136, +05137, +05138, +05139, +05141, +05142, +05143, +05144, +05145, +05146, +05147, +05148, +05149, +05151, +05152, +05153, +05154, +05155, +05156, +05157, +05158, +05159, +05161, +05162, +05163, +05164, +05165, +05166, +05167, +05168, +05171, +05172, +05173, +05174, +05175, +05176, +05177, +05181, +05182, +05183, +05184, +05185, +05186, +05187, +05190, +05191, +05192, +05193, +05194, +05195, +05196, +05197, +05198, +05199, +05201, +05202, +05203, +05204, +05205, +05206, +05207, +05208, +05209, +0521, +05221, +05222, +05223, +05224, +05225, +05226, +05228, +05231, +05232, +05233, +05234, +05235, +05236, +05237, +05238, +05241, +05242, +05244, +05245, +05246, +05247, +05248, +05250, +05251, +05252, +05253, +05254, +05255, +05257, +05258, +05259, +05261, +05262, +05263, +05264, +05265, +05266, +05271, +05272, +05273, +05274, +05275, +05276, +05277, +05278, +05281, +05282, +05283, +05284, +05285, +05286, +05292, +05293, +05294, +05295, +05300, +05301, +05302, +05303, +05304, +05305, +05306, +05307, +05308, +05309, +0531, +05320, +05321, +05322, +05323, +05324, +05325, +05326, +05327, +05328, +05329, +05331, +05332, +05333, +05334, +05335, +05336, +05337, +05339, +05341, +05344, +05345, +05346, +05347, +05351, +05352, +05353, +05354, +05355, +05356, +05357, +05358, +05361, +05362, +05363, +05364, +05365, +05366, +05367, +05368, +05371, +05372, +05373, +05374, +05375, +05376, +05377, +05378, +05379, +05381, +05382, +05383, +05384, +05401, +05402, +05403, +05404, +05405, +05406, +05407, +05409, +0541, +05421, +05422, +05423, +05424, +05425, +05426, +05427, +05428, +05429, +05431, +05432, +05433, +05434, +05435, +05436, +05437, +05438, +05439, +05441, +05442, +05443, +05444, +05445, +05446, +05447, +05448, +05451, +05452, +05453, +05454, +05455, +05456, +05457, +05458, +05459, +05461, +05462, +05464, +05465, +05466, +05467, +05468, +05471, +05472, +05473, +05474, +05475, +05476, +05481, +05482, +05483, +05484, +05485, +05491, +05492, +05493, +05494, +05495, +05502, +05503, +05504, +05505, +05506, +05507, +05508, +05509, +0551, +05520, +05521, +05522, +05523, +05524, +05525, +05527, +05528, +05529, +05531, +05532, +05533, +05534, +05535, +05536, +05541, +05542, +05543, +05544, +05545, +05546, +05551, +05552, +05553, +05554, +05555, +05556, +05561, +05562, +05563, +05564, +05565, +05571, +05572, +05573, +05574, +05582, +05583, +05584, +05585, +05586, +05592, +05593, +05594, +05601, +05602, +05603, +05604, +05605, +05606, +05607, +05608, +05609, +0561, +05621, +05622, +05623, +05624, +05625, +05626, +05631, +05632, +05633, +05634, +05635, +05636, +05641, +05642, +05643, +05644, +05645, +05646, +05647, +05648, +05650, +05651, +05652, +05653, +05654, +05655, +05656, +05657, +05658, +05659, +05661, +05662, +05663, +05664, +05665, +05671, +05672, +05673, +05674, +05675, +05676, +05677, +05681, +05682, +05683, +05684, +05685, +05686, +05691, +05692, +05693, +05694, +05695, +05696, +05702, +05703, +05704, +05705, +05706, +05707, +0571, +05721, +05722, +05723, +05724, +05725, +05726, +05731, +05732, +05733, +05734, +05741, +05742, +05743, +05744, +05745, +05746, +05751, +05752, +05753, +05754, +05755, +05761, +05763, +05764, +05765, +05766, +05767, +05768, +05769, +05771, +05772, +05773, +05774, +05775, +05776, +05777, +05802, +05803, +05804, +05805, +05806, +05807, +05808, +0581, +05820, +05821, +05822, +05823, +05824, +05825, +05826, +05827, +05828, +05829, +05831, +05832, +05833, +05834, +05835, +05836, +05837, +05838, +05839, +05840, +05841, +05842, +05843, +05844, +05845, +05846, +05848, +05849, +05850, +05851, +05852, +05853, +05854, +05855, +05857, +05858, +05859, +05861, +05862, +05863, +05864, +05865, +05872, +05873, +05874, +05875, +05882, +05883, +05901, +05902, +05903, +05904, +05905, +05906, +05907, +05908, +05909, +0591, +05921, +05922, +05923, +05924, +05925, +05926, +05931, +05932, +05933, +05934, +05935, +05936, +05937, +05939, +05941, +05942, +05943, +05944, +05945, +05946, +05947, +05948, +05951, +05952, +05953, +05954, +05955, +05956, +05957, +05961, +05962, +05963, +05964, +05965, +05966, +05971, +05973, +05975, +05976, +05977, +05978, +06002, +06003, +06004, +06007, +06008, +06020, +06021, +06022, +06023, +06024, +06026, +06027, +06028, +06029, +06031, +06032, +06033, +06034, +06035, +06036, +06039, +06041, +06042, +06043, +06044, +06045, +06046, +06047, +06048, +06049, +06050, +06051, +06052, +06053, +06054, +06055, +06056, +06057, +06058, +06059, +06061, +06062, +06063, +06066, +06068, +06071, +06073, +06074, +06078, +06081, +06082, +06083, +06084, +06085, +06086, +06087, +06092, +06093, +06094, +06095, +06096, +06101, +06102, +06103, +06104, +06105, +06106, +06107, +06108, +06109, +0611, +06120, +06122, +06123, +06124, +06126, +06127, +06128, +06129, +06130, +06131, +06132, +06133, +06134, +06135, +06136, +06138, +06139, +06142, +06144, +06145, +06146, +06147, +06150, +06151, +06152, +06154, +06155, +06157, +06158, +06159, +06161, +06162, +06163, +06164, +06165, +06166, +06167, +06171, +06172, +06173, +06174, +06175, +06181, +06182, +06183, +06184, +06185, +06186, +06187, +06188, +06190, +06192, +06195, +06196, +06198, +06201, +06202, +06203, +06204, +06205, +06206, +06207, +06209, +0621, +06220, +06221, +06222, +06223, +06224, +06226, +06227, +06228, +06229, +06231, +06232, +06233, +06234, +06235, +06236, +06237, +06238, +06239, +06241, +06242, +06243, +06244, +06245, +06246, +06247, +06249, +06251, +06252, +06253, +06254, +06255, +06256, +06257, +06258, +06261, +06262, +06263, +06264, +06265, +06266, +06267, +06268, +06269, +06271, +06272, +06274, +06275, +06276, +06281, +06282, +06283, +06284, +06285, +06286, +06287, +06291, +06292, +06293, +06294, +06295, +06296, +06297, +06298, +06301, +06302, +06303, +06304, +06305, +06306, +06307, +06308, +0631, +06321, +06322, +06323, +06324, +06325, +06326, +06327, +06328, +06329, +06331, +06332, +06333, +06334, +06335, +06336, +06337, +06338, +06339, +06340, +06341, +06342, +06343, +06344, +06345, +06346, +06347, +06348, +06349, +06351, +06352, +06353, +06355, +06356, +06357, +06358, +06359, +06361, +06362, +06363, +06364, +06371, +06372, +06373, +06374, +06375, +06381, +06382, +06383, +06384, +06385, +06386, +06387, +06391, +06392, +06393, +06394, +06395, +06396, +06397, +06398, +06400, +06401, +06402, +06403, +06404, +06405, +06406, +06407, +06408, +06409, +0641, +06420, +06421, +06422, +06423, +06424, +06425, +06426, +06427, +06428, +06429, +06430, +06431, +06432, +06433, +06434, +06435, +06436, +06438, +06439, +06440, +06441, +06442, +06443, +06444, +06445, +06446, +06447, +06449, +06451, +06452, +06453, +06454, +06455, +06456, +06457, +06458, +06461, +06462, +06464, +06465, +06466, +06467, +06468, +06471, +06472, +06473, +06474, +06475, +06476, +06477, +06478, +06479, +06482, +06483, +06484, +06485, +06486, +06500, +06501, +06502, +06503, +06504, +06505, +06506, +06507, +06508, +06509, +0651, +06522, +06523, +06524, +06525, +06526, +06527, +06531, +06532, +06533, +06534, +06535, +06536, +06541, +06542, +06543, +06544, +06545, +06550, +06551, +06552, +06553, +06554, +06555, +06556, +06557, +06558, +06559, +06561, +06562, +06563, +06564, +06565, +06566, +06567, +06568, +06569, +06571, +06572, +06573, +06574, +06575, +06578, +06580, +06581, +06582, +06583, +06584, +06585, +06586, +06587, +06588, +06589, +06591, +06592, +06593, +06594, +06595, +06596, +06597, +06599, +0661, +06620, +06621, +06622, +06623, +06624, +06625, +06626, +06627, +06628, +06629, +06630, +06631, +06633, +06634, +06635, +06636, +06637, +06638, +06639, +06641, +06642, +06643, +06644, +06645, +06646, +06647, +06648, +06650, +06651, +06652, +06653, +06654, +06655, +06656, +06657, +06658, +06659, +06660, +06661, +06663, +06664, +06665, +06666, +06667, +06668, +06669, +06670, +06672, +06673, +06674, +06675, +06676, +06677, +06678, +06681, +06682, +06683, +06684, +06691, +06692, +06693, +06694, +06695, +06696, +06697, +06698, +06701, +06703, +06704, +06706, +06707, +06708, +06709, +0671, +06721, +06722, +06723, +06724, +06725, +06726, +06727, +06728, +06731, +06732, +06733, +06734, +06735, +06736, +06737, +06741, +06742, +06743, +06744, +06745, +06746, +06747, +06751, +06752, +06753, +06754, +06755, +06756, +06757, +06758, +06761, +06762, +06763, +06764, +06765, +06766, +06771, +06772, +06773, +06774, +06775, +06776, +06781, +06782, +06783, +06784, +06785, +06786, +06787, +06788, +06789, +06802, +06803, +06804, +06805, +06806, +06809, +0681, +06821, +06824, +06825, +06826, +06827, +06831, +06832, +06833, +06834, +06835, +06836, +06837, +06838, +06841, +06842, +06843, +06844, +06848, +06849, +06851, +06852, +06853, +06854, +06855, +06856, +06857, +06858, +06861, +06864, +06865, +06866, +06867, +06868, +06869, +06871, +06872, +06873, +06874, +06875, +06876, +06881, +06887, +06888, +06893, +06894, +06897, +06898, +069, +07021, +07022, +07023, +07024, +07025, +07026, +07031, +07032, +07033, +07034, +07041, +07042, +07043, +07044, +07045, +07046, +07051, +07052, +07053, +07054, +07055, +07056, +07062, +07063, +07066, +07071, +07072, +07073, +07081, +07082, +07083, +07084, +07085, +0711, +07121, +07122, +07123, +07124, +07125, +07126, +07127, +07128, +07129, +07130, +07131, +07132, +07133, +07134, +07135, +07136, +07138, +07139, +07141, +07142, +07143, +07144, +07145, +07146, +07147, +07148, +07150, +07151, +07152, +07153, +07154, +07156, +07157, +07158, +07159, +07161, +07162, +07163, +07164, +07165, +07166, +07171, +07172, +07173, +07174, +07175, +07176, +07181, +07182, +07183, +07184, +07191, +07192, +07193, +07194, +07195, +07202, +07203, +07204, +0721, +07220, +07221, +07222, +07223, +07224, +07225, +07226, +07227, +07228, +07229, +07231, +07232, +07233, +07234, +07235, +07236, +07237, +07240, +07242, +07243, +07244, +07245, +07246, +07247, +07248, +07249, +07250, +07251, +07252, +07253, +07254, +07255, +07256, +07257, +07258, +07259, +07260, +07261, +07262, +07263, +07264, +07265, +07266, +07267, +07268, +07269, +07271, +07272, +07273, +07274, +07275, +07276, +07277, +07300, +07302, +07303, +07304, +07305, +07306, +07307, +07308, +07309, +0731, +07321, +07322, +07323, +07324, +07325, +07326, +07327, +07328, +07329, +07331, +07332, +07333, +07334, +07335, +07336, +07337, +07340, +07343, +07344, +07345, +07346, +07347, +07348, +07351, +07352, +07353, +07354, +07355, +07356, +07357, +07358, +07361, +07362, +07363, +07364, +07365, +07366, +07367, +07371, +07373, +07374, +07375, +07376, +07381, +07382, +07383, +07384, +07385, +07386, +07387, +07388, +07389, +07391, +07392, +07393, +07394, +07395, +07402, +07403, +07404, +0741, +07420, +07422, +07423, +07424, +07425, +07426, +07427, +07428, +07429, +07431, +07432, +07433, +07434, +07435, +07436, +07440, +07441, +07442, +07443, +07444, +07445, +07446, +07447, +07448, +07449, +07451, +07452, +07453, +07454, +07455, +07456, +07457, +07458, +07459, +07461, +07462, +07463, +07464, +07465, +07466, +07467, +07471, +07472, +07473, +07474, +07475, +07476, +07477, +07478, +07482, +07483, +07484, +07485, +07486, +07502, +07503, +07504, +07505, +07506, +0751, +07520, +07522, +07524, +07525, +07527, +07528, +07529, +07531, +07532, +07533, +07534, +07541, +07542, +07543, +07544, +07545, +07546, +07551, +07552, +07553, +07554, +07555, +07556, +07557, +07558, +07561, +07562, +07563, +07564, +07565, +07566, +07567, +07568, +07569, +07570, +07571, +07572, +07573, +07574, +07575, +07576, +07577, +07578, +07579, +07581, +07582, +07583, +07584, +07585, +07586, +07587, +07602, +0761, +07620, +07621, +07622, +07623, +07624, +07625, +07626, +07627, +07628, +07629, +07631, +07632, +07633, +07634, +07635, +07636, +07641, +07642, +07643, +07644, +07645, +07646, +07651, +07652, +07653, +07654, +07655, +07656, +07657, +07660, +07661, +07662, +07663, +07664, +07665, +07666, +07667, +07668, +07669, +07671, +07672, +07673, +07674, +07675, +07676, +07681, +07682, +07683, +07684, +07685, +07702, +07703, +07704, +07705, +07706, +07707, +07708, +07709, +0771, +07720, +07721, +07722, +07723, +07724, +07725, +07726, +07727, +07728, +07729, +07731, +07732, +07733, +07734, +07735, +07736, +07738, +07739, +07741, +07742, +07743, +07744, +07745, +07746, +07747, +07748, +07751, +07753, +07754, +07755, +07761, +07762, +07763, +07764, +07765, +07771, +07773, +07774, +07775, +07777, +07802, +07803, +07804, +07805, +07806, +07807, +07808, +0781, +07821, +07822, +07823, +07824, +07825, +07826, +07831, +07832, +07833, +07834, +07835, +07836, +07837, +07838, +07839, +07841, +07842, +07843, +07844, +07851, +07852, +07853, +07854, +07903, +07904, +07905, +07906, +07907, +0791, +07930, +07931, +07932, +07933, +07934, +07935, +07936, +07937, +07938, +07939, +07940, +07941, +07942, +07943, +07944, +07945, +07946, +07947, +07948, +07949, +07950, +07951, +07952, +07953, +07954, +07955, +07957, +07958, +07959, +07961, +07962, +07963, +07964, +07965, +07966, +07967, +07971, +07972, +07973, +07974, +07975, +07976, +07977, +08020, +08021, +08022, +08023, +08024, +08025, +08026, +08027, +08028, +08029, +08031, +08032, +08033, +08034, +08035, +08036, +08038, +08039, +08041, +08042, +08043, +08045, +08046, +08051, +08052, +08053, +08054, +08055, +08056, +08057, +08061, +08062, +08063, +08064, +08065, +08066, +08067, +08071, +08072, +08073, +08074, +08075, +08076, +08081, +08082, +08083, +08084, +08085, +08086, +08091, +08092, +08093, +08094, +08095, +08102, +08104, +08105, +08106, +0811, +08121, +08122, +08123, +08124, +08131, +08133, +08134, +08135, +08136, +08137, +08138, +08139, +08141, +08142, +08143, +08144, +08145, +08146, +08151, +08152, +08153, +08157, +08158, +08161, +08165, +08166, +08167, +08168, +08170, +08171, +08176, +08177, +08178, +08179, +08191, +08192, +08193, +08194, +08195, +08196, +08202, +08203, +08204, +08205, +08206, +08207, +08208, +0821, +08221, +08222, +08223, +08224, +08225, +08226, +08230, +08231, +08232, +08233, +08234, +08236, +08237, +08238, +08239, +08241, +08243, +08245, +08246, +08247, +08248, +08249, +08250, +08251, +08252, +08253, +08254, +08257, +08258, +08259, +08261, +08262, +08263, +08265, +08266, +08267, +08268, +08269, +08271, +08272, +08273, +08274, +08276, +08281, +08282, +08283, +08284, +08285, +08291, +08292, +08293, +08294, +08295, +08296, +08302, +08303, +08304, +08306, +0831, +08320, +08321, +08322, +08323, +08324, +08325, +08326, +08327, +08328, +08330, +08331, +08332, +08333, +08334, +08335, +08336, +08337, +08338, +08340, +08341, +08342, +08343, +08344, +08345, +08346, +08347, +08348, +08349, +08361, +08362, +08363, +08364, +08365, +08366, +08367, +08368, +08369, +08370, +08372, +08373, +08374, +08375, +08376, +08377, +08378, +08379, +08380, +08381, +08382, +08383, +08384, +08385, +08386, +08387, +08388, +08389, +08392, +08393, +08394, +08395, +08402, +08403, +08404, +08405, +08406, +08407, +0841, +08421, +08422, +08423, +08424, +08426, +08427, +08431, +08432, +08433, +08434, +08435, +08441, +08442, +08443, +08444, +08445, +08446, +08450, +08452, +08453, +08454, +08456, +08457, +08458, +08459, +08460, +08461, +08462, +08463, +08464, +08465, +08466, +08467, +08468, +08469, +08501, +08502, +08503, +08504, +08505, +08506, +08507, +08509, +0851, +08531, +08532, +08533, +08534, +08535, +08536, +08537, +08538, +08541, +08542, +08543, +08544, +08545, +08546, +08547, +08548, +08549, +08550, +08551, +08552, +08553, +08554, +08555, +08556, +08557, +08558, +08561, +08562, +08563, +08564, +08565, +08571, +08572, +08573, +08574, +08581, +08582, +08583, +08584, +08585, +08586, +08591, +08592, +08593, +0861, +08621, +08622, +08623, +08624, +08628, +08629, +08630, +08631, +08633, +08634, +08635, +08636, +08637, +08638, +08639, +08640, +08641, +08642, +08649, +08650, +08651, +08652, +08654, +08656, +08657, +08661, +08662, +08663, +08664, +08665, +08666, +08667, +08669, +08670, +08671, +08677, +08678, +08679, +08681, +08682, +08683, +08684, +08685, +08686, +08687, +08702, +08703, +08704, +08705, +08706, +08707, +08708, +08709, +0871, +08721, +08722, +08723, +08724, +08725, +08726, +08727, +08728, +08731, +08732, +08733, +08734, +08735, +08741, +08742, +08743, +08744, +08745, +08751, +08752, +08753, +08754, +08756, +08761, +08762, +08764, +08765, +08766, +08771, +08772, +08773, +08774, +08781, +08782, +08783, +08784, +08785, +08801, +08802, +08803, +08805, +08806, +08807, +08808, +08809, +0881, +08821, +08822, +08823, +08824, +08825, +08841, +08845, +08846, +08847, +08851, +08856, +08857, +08858, +08860, +08861, +08862, +08867, +08868, +08869, +089, +0906, +09070, +09071, +09072, +09073, +09074, +09075, +09076, +09077, +09078, +09080, +09081, +09082, +09083, +09084, +09085, +09086, +09087, +09088, +09089, +09090, +09091, +09092, +09093, +09094, +09097, +09099, +09101, +09102, +09103, +09104, +09105, +09106, +09107, +0911, +09120, +09122, +09123, +09126, +09127, +09128, +09129, +09131, +09132, +09133, +09134, +09135, +09141, +09142, +09143, +09144, +09145, +09146, +09147, +09148, +09149, +09151, +09152, +09153, +09154, +09155, +09156, +09157, +09158, +09161, +09162, +09163, +09164, +09165, +09166, +09167, +09170, +09171, +09172, +09173, +09174, +09175, +09176, +09177, +09178, +09179, +09180, +09181, +09182, +09183, +09184, +09185, +09186, +09187, +09188, +09189, +09190, +09191, +09192, +09193, +09194, +09195, +09196, +09197, +09198, +09199, +09201, +09202, +09203, +09204, +09205, +09206, +09207, +09208, +09209, +0921, +09220, +09221, +09222, +09223, +09225, +09227, +09228, +09229, +09231, +09232, +09233, +09234, +09235, +09236, +09238, +09241, +09242, +09243, +09244, +09245, +09246, +09251, +09252, +09253, +09254, +09255, +09256, +09257, +09260, +09261, +09262, +09263, +09264, +09265, +09266, +09267, +09268, +09269, +09270, +09271, +09272, +09273, +09274, +09275, +09276, +09277, +09278, +09279, +09280, +09281, +09282, +09283, +09284, +09285, +09286, +09287, +09288, +09289, +09292, +09293, +09294, +09295, +09302, +09303, +09305, +09306, +09307, +0931, +09321, +09323, +09324, +09325, +09326, +09331, +09332, +09333, +09334, +09335, +09336, +09337, +09338, +09339, +09340, +09341, +09342, +09343, +09344, +09345, +09346, +09347, +09348, +09349, +09350, +09351, +09352, +09353, +09354, +09355, +09356, +09357, +09358, +09359, +09360, +09363, +09364, +09365, +09366, +09367, +09369, +09371, +09372, +09373, +09374, +09375, +09376, +09377, +09378, +09381, +09382, +09383, +09384, +09385, +09386, +09391, +09392, +09393, +09394, +09395, +09396, +09397, +09398, +09401, +09402, +09403, +09404, +09405, +09406, +09407, +09408, +09409, +0941, +09420, +09421, +09422, +09423, +09424, +09426, +09427, +09428, +09429, +09431, +09433, +09434, +09435, +09436, +09438, +09439, +09441, +09442, +09443, +09444, +09445, +09446, +09447, +09448, +09451, +09452, +09453, +09454, +09461, +09462, +09463, +09464, +09465, +09466, +09467, +09468, +09469, +09471, +09472, +09473, +09474, +09480, +09481, +09482, +09484, +09491, +09492, +09493, +09495, +09497, +09498, +09499, +09502, +09503, +09504, +09505, +0951, +09521, +09522, +09523, +09524, +09525, +09526, +09527, +09528, +09529, +09531, +09532, +09533, +09534, +09535, +09536, +09542, +09543, +09544, +09545, +09546, +09547, +09548, +09549, +09551, +09552, +09553, +09554, +09555, +09556, +09560, +09561, +09562, +09563, +09564, +09565, +09566, +09567, +09568, +09569, +09571, +09572, +09573, +09574, +09575, +09576, +09602, +09603, +09604, +09605, +09606, +09607, +09608, +0961, +09621, +09622, +09624, +09625, +09626, +09627, +09628, +09631, +09632, +09633, +09634, +09635, +09636, +09637, +09638, +09639, +09641, +09642, +09643, +09644, +09645, +09646, +09647, +09648, +09651, +09652, +09653, +09654, +09655, +09656, +09657, +09658, +09659, +09661, +09662, +09663, +09664, +09665, +09666, +09671, +09672, +09673, +09674, +09675, +09676, +09677, +09681, +09682, +09683, +09701, +09704, +09708, +0971, +09720, +09721, +09722, +09723, +09724, +09725, +09726, +09727, +09728, +09729, +09732, +09733, +09734, +09735, +09736, +09737, +09738, +09741, +09742, +09744, +09745, +09746, +09747, +09748, +09749, +09761, +09762, +09763, +09764, +09765, +09766, +09771, +09772, +09773, +09774, +09775, +09776, +09777, +09778, +09779, +09802, +09803, +09804, +09805, +0981, +09820, +09822, +09823, +09824, +09825, +09826, +09827, +09828, +09829, +09831, +09832, +09833, +09834, +09835, +09836, +09837, +09841, +09842, +09843, +09844, +09845, +09846, +09847, +09848, +09851, +09852, +09853, +09854, +09855, +09856, +09857, +09861, +09865, +09867, +09868, +09869, +09871, +09872, +09873, +09874, +09875, +09876, +09901, +09903, +09904, +09905, +09906, +09907, +09908, +0991, +09920, +09921, +09922, +09923, +09924, +09925, +09926, +09927, +09928, +09929, +09931, +09932, +09933, +09935, +09936, +09937, +09938, +09941, +09942, +09943, +09944, +09945, +09946, +09947, +09948, +09951, +09952, +09953, +09954, +09955, +09956, +09961, +09962, +09963, +09964, +09965, +09966, +09971, +09972, +09973, +09974, +09975, +09976, +09977, +09978} +\clist_const:Nn \c_phone_DE_sondervorwahlen_clist {01371, +01372, +01373, +01374, +01375, +01376, +01377, +01378, +01379, +015019, +01511, +01512, +01514, +01515, +01516, +01517, +015180, +015181, +015310, +01520, +01521, +01522, +01523, +01525, +01526, +01529, +015510, +015511, +015566, +015630, +015678, +01570, +01573, +01575, +01577, +01578, +01579, +015888, +01590, +0160, +0162, +0163, +0164, +0168, +0169, +0170, +0171, +0172, +0173, +0174, +0175, +0176, +0177, +0178, +0179, +01801, +01802, +01803, +01804, +01805, +01806, +01807, +0181, +0182, +0183, +0184, +0185, +0186, +0187, +0188, +0189, +0191, +0192, +0193, +0194, +032, +0700, +0800, +09001, +09003, +09005, +09009} \tl_const:cn {c_phone_DE_ortsname_0201_tl} {Essen} \tl_const:cn {c_phone_DE_ortsname_0202_tl} {Wuppertal} \tl_const:cn {c_phone_DE_ortsname_0203_tl} {Duisburg} @@ -5216,6 +10501,9 @@ \tl_const:cn {c_phone_DE_ortsname_01515_tl} {Mobilfunk} \tl_const:cn {c_phone_DE_ortsname_01516_tl} {Mobilfunk} \tl_const:cn {c_phone_DE_ortsname_01517_tl} {Mobilfunk} +\tl_const:cn {c_phone_DE_ortsname_015180_tl} {Mobilfunk} +\tl_const:cn {c_phone_DE_ortsname_015181_tl} {Mobilfunk} +\tl_const:cn {c_phone_DE_ortsname_015310_tl} {Mobilfunk} \tl_const:cn {c_phone_DE_ortsname_01520_tl} {Mobilfunk} \tl_const:cn {c_phone_DE_ortsname_01521_tl} {Mobilfunk} \tl_const:cn {c_phone_DE_ortsname_01522_tl} {Mobilfunk} @@ -5223,6 +10511,8 @@ \tl_const:cn {c_phone_DE_ortsname_01525_tl} {Mobilfunk} \tl_const:cn {c_phone_DE_ortsname_01526_tl} {Mobilfunk} \tl_const:cn {c_phone_DE_ortsname_01529_tl} {Mobilfunk} +\tl_const:cn {c_phone_DE_ortsname_015510_tl} {Mobilfunk} +\tl_const:cn {c_phone_DE_ortsname_015511_tl} {Mobilfunk} \tl_const:cn {c_phone_DE_ortsname_015566_tl} {Mobilfunk} \tl_const:cn {c_phone_DE_ortsname_015630_tl} {Mobilfunk} \tl_const:cn {c_phone_DE_ortsname_015678_tl} {Mobilfunk} @@ -5277,3 +10567,443 @@ \tl_const:cn {c_phone_DE_ortsname_09003_tl} {Premium-Dienst} \tl_const:cn {c_phone_DE_ortsname_09005_tl} {Premium-Dienst} \tl_const:cn {c_phone_DE_ortsname_09009_tl} {Dialer} + +\tl_const:Nn \c_phone_DE_landesadjektiv_tl {German} +\bool_const:Nn \c_phone_DE_erlaubt_durchwahl_bool {\c_true_bool} + +\clist_new:N \c_phone_DE_vorwahlen_clist +\clist_concat:NNN \c_phone_DE_vorwahlen_clist \c_phone_DE_ortsvorwahlen_clist \c_phone_DE_sondervorwahlen_clist + +% Prüfe, ob eine Vorwahl als Heimatvorwahl zulässig ist. +% #1: Heimatvorwahl +\prg_new_protected_conditional:Npnn \phone_DE_heimatvorwahl_erlaubt:n #1 {T} + { + \clist_if_in:NnTF \c_phone_DE_ortsvorwahlen_clist {#1} + { + % Alle deutschen Ortsvorwahlen können Heimatvorwahl sein. + \prg_return_true: + } + { + \msg_warning:nnn {phonenumbers} {invalid home area code} {#1} + \prg_return_false: + } + } + +% Prüfe, ob eine Vorwahl eine Tarifkennung enthält. +% #1: Vorwahl +\prg_new_protected_conditional:Npnn \phone_DE_enthaelt_tarifkennung:n #1 {TF} + { + \bool_if:nTF { \int_compare_p:nNn { \str_count:n {#1} } = {5} } + { + % fünfstellige Vorwahl + \str_set:Nx \l_tmpa_str { \str_range:nnn {#1} {1} {4} } + + \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_tmpa_str {0137} } { \str_if_eq_p:Vn \l_tmpa_str {0180} } + { + \prg_return_true: + } + { + \prg_return_false: + } + } + { + % nicht fünfstellige Vorwahl + \prg_return_false: + } + } + +% #1: Vorwahl, #2: Soll die führende Null ausgegeben werden? +\cs_new_protected:Npn \phone_DE_ziffernvorwahl_schreiben:nN #1#2 + { + \phone_DE_enthaelt_tarifkennung:nTF {#1} + { + % fünfstellige Vorwahl mit Tarifkennung: letzte Ziffer steht allein + \bool_if:NTF #2 + { + \phone_von_vorne_gruppiert_schreiben:n {#1} + } + { + \phone_versetzt_gruppiert_schreiben:x { \str_tail:n {#1} } + } + } + { + % Vorwahl ohne Tarifkennung + \bool_if:NTF #2 + { + \phone_von_hinten_gruppiert_schreiben:n {#1} + } + { + \phone_von_hinten_gruppiert_schreiben:x { \str_tail:n {#1} } + } + } + } + +% #1: Vorwahl, #2: Folgt eine Rufnummer? +\cs_new_protected:Npn \phone_DE_vorwahl_schreiben:nn #1 #2 + { + \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {DE} } + { + \clist_if_in:NnT \c_phone_DE_sondervorwahlen_clist {#1} + { + \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place} + { + \str_set:Nn \l_phone_vorwahldarstellung_str {number} + } + } + + \bool_lazy_and:nnF { \str_if_eq_p:Vn \l_phone_heimatland_str {DE} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} } + { + \str_case:Vn \l_phone_vorwahldarstellung_str + { + {number} + { + \bool_if:nTF {#2} + { + \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets} + { + \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + { + \phone_DE_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + + \tl_put_right:Nx \l_phone_ausgabetext_tl + { + \str_case:VnF \l_phone_vorwahltrennung_str + { + {space} {\c_space_tl} + {hyphen} {\c_phone_bindestrich_tl} + } + { + \c_phone_schraegstrich_tl + } + } + } + } + { + \phone_DE_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + } + } + {place} + { + \bool_if:nTF {#2} + { + \str_if_eq:VnT \l_phone_vorwahltrennung_str {brackets} + { + \tl_put_right:Nn \l_phone_ausgabetext_tl {(} + } + + \tl_if_exist:cTF {c_phone_DE_ortsname_ #1 _tl} + { + \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_DE_ortsname_ #1 _tl} + } + { + \phone_DE_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + } + + \tl_put_right:Nx \l_phone_ausgabetext_tl + { + \str_case:VnF \l_phone_vorwahltrennung_str + { + {brackets} {) \c_space_tl} + {space} {\c_space_tl} + {hyphen} {\c_phone_bindestrich_tl} + } + { + \c_phone_schraegstrich_tl + } + } + } + { + \tl_if_exist:cTF {c_phone_DE_ortsname_ #1 _tl} + { + \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_DE_ortsname_ #1 _tl} + } + { + \phone_DE_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + } + } + } + {place-and-number} + { + \tl_if_exist:cT {c_phone_DE_ortsname_ #1 _tl} + { + \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_DE_ortsname_ #1 _tl} + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + + \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets} + { + \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + + \bool_if:nT {#2} + { + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + } + { + \phone_DE_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + + \bool_if:nT {#2} + { + \tl_put_right:Nx \l_phone_ausgabetext_tl + { + \str_case:VnF \l_phone_vorwahltrennung_str + { + {space} {\c_space_tl} + {hyphen} {\c_phone_bindestrich_tl} + } + { + \c_phone_schraegstrich_tl + } + } + } + } + } + } + } + } + { + \phone_gruppierte_auslandsvorwahl_schreiben:n {49} + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + + \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {brackets} + { + \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_false_bool + } + { + \phone_DE_ziffernvorwahl_schreiben:nN {#1} \c_false_bool + } + + \bool_if:nT {#2} + { + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + } + + % Linktext schreiben, falls eine Rufnummer folgt + \bool_if:nT {#2} + { + \str_put_right:Nx \l_phone_linktext_str {+49} + \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} } + } + } + +\cs_generate_variant:Nn \phone_DE_vorwahl_schreiben:nn {Vx} + +% #1: Vorwahl, #2: Teilnehmerrufnummer +\cs_new_protected:Npn \phone_DE_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1#2 + { + \int_set:Nn \l_tmpa_int { \str_count:N #1 } + \int_add:Nn \l_tmpa_int { \str_count:n {#2} } + \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str } + + \int_compare:nNnTF {\l_tmpa_int} > {13} + { + % Gesamtnummer hat mehr als 13 Stellen + \msg_warning:nnnn {phonenumbers} {number too long} {landline} {13} + } + { + \int_set:Nn \l_tmpa_int { \str_count:n {#2} } + \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str } + + \int_compare:nNnTF {\l_tmpa_int} < {3} + { + % Teilnehmerrufnummer hat weniger als 3 Stellen + \msg_warning:nnn {phonenumbers} {subscriber number too short} {3} + } + { + \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool + } + } + } + +% #1: Nummer +\cs_new_protected:Npn \phone_DE_MABEZnummernlaenge_ueberpruefen:N #1 + { + \int_set:Nn \l_tmpa_int { \str_count:N #1 } + \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str } + + \int_compare:nNnTF {\l_tmpa_int} > {11} + { + % Gesamtnummer hat mehr als 11 Stellen + \msg_warning:nnnn {phonenumbers} {number too long} {0137~(MABEZ)} {11} + } + { + \int_compare:nNnTF {\l_tmpa_int} < {11} + { + % Gesamtnummer hat weniger als 11 Stellen + \msg_warning:nnnn {phonenumbers} {number too short} {0137~(MABEZ)} {11} + } + { + \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool + } + } + } + +% #1: Vorwahl, #2: Teilnehmerrufnummer +\cs_new_protected:Npn \phone_DE_teilnehmerrufnummer_schreiben:Nn #1 #2 + { + % Überprüfen der Nummernlänge + \str_if_empty:NTF #1 + { + % Festnetznummer ohne Vorwahl + \bool_if:NF \l_phone_eingabe_leer_bool + { + \phone_DE_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1 {#2} + } + } + { + \clist_if_in:NVTF \c_phone_DE_ortsvorwahlen_clist #1 + { + % Festnetznummer + \str_if_eq:xnTF { \str_head:n {#2} } {0} + { + \msg_warning:nnn {phonenumbers} {illegal start of subscriber number} {0} + } + { + \phone_DE_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1 {#2} + } + } + { + % Mobilfunk-/Sondernummer + \str_set_eq:NN \l_tmpa_str #1 + \str_put_right:Nn \l_tmpa_str {#2} + + \str_if_eq:xnTF { \str_range:Nnn #1 {1} {5} } {09009} + { + \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {09009} + } + { + \str_case:xnF { \str_range:Nnn #1 {1} {4} } + { + {0137} { \phone_DE_MABEZnummernlaenge_ueberpruefen:N \l_tmpa_str } + {0160} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} } + {0162} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} } + {0163} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} } + {0164} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0164} } % Funkruf + {0168} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {15} {0168} } % Funkruf + {0169} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {15} {0169} } % Funkruf + {0180} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {11} {0180} } + {0181} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {8} {15} {0181} } + {0191} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0191} } + {0192} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0192} } + {0193} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0193} } + {0194} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {7} {14} {0194} } + {0700} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {0700} } + {0800} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {14} {freephone} } + {0900} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {11} {premium~service} } + } + { + \str_case:xn {\str_range:Nnn #1 {1} {3}} + { + {015} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {mobile~phone} } + {017} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} } + {018} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {018} } + {032} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {032} } + } + } + } + + \str_if_empty:NF \l_phone_bereinigte_durchwahl_str + { + % Mobilfunk- und Sondernummern dürfen keine Durchwahl enthalten (ausgenommen MABEZ-Nummern) + \str_if_eq:xnF { \str_range:Nnn #1 {1} {4} } {0137} + { + \msg_warning:nn {phonenumbers} {odd extension} + } + } + } + + \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool + { + % Für gültige Nummern mit Vorwahl Linktext schreiben: + \str_put_right:Nn \l_phone_linktext_str {#2} + \str_put_right:NV \l_phone_linktext_str \l_phone_bereinigte_durchwahl_str + } + { + % Für ungültige Nummern mit Vorwahl Linktext löschen: + \str_clear:N \l_phone_linktext_str + } + } + + \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool + { + \phone_von_hinten_gruppiert_schreiben:n {#2} + } + { + \str_put_right:Nn \l_phone_ausgabetext_tl {#2} + } + + \str_if_empty:NF \l_phone_bereinigte_durchwahl_str + { + \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl + \phone_von_hinten_gruppiert_schreiben:V \l_phone_bereinigte_durchwahl_str + } + } + +\cs_generate_variant:Nn \phone_DE_teilnehmerrufnummer_schreiben:Nn {Nx,NV} + +\cs_new_protected:Npn \phone_DE_nummer_schreiben: + { + \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0} + { + \phone_enthaelt_vorwahl:NTF \l_phone_bereinigte_nummer_str + { + \int_set:Nn \l_phone_hauptnummernlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str } + \int_set:Nn \l_phone_vorwahllaenge_int { \str_count:N \l_phone_vorwahl_str } + + \phone_DE_vorwahl_schreiben:Vx \l_phone_vorwahl_str + { + \int_compare_p:nNn {\l_phone_vorwahllaenge_int} < {\l_phone_hauptnummernlaenge_int} + } + + \int_compare:nNnTF {\l_phone_vorwahllaenge_int} = {\l_phone_hauptnummernlaenge_int} + { + \msg_warning:nn {phonenumbers} {missing subscriber number} + } + { + \phone_DE_teilnehmerrufnummer_schreiben:Nx \l_phone_vorwahl_str + { + \str_range:Nnn \l_phone_bereinigte_nummer_str { \l_phone_vorwahllaenge_int + 1 } {-1} + } + } + } + { + \msg_warning:nn {phonenumbers} {invalid area code} + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_durchwahl_str + } + } + { + \phone_DE_teilnehmerrufnummer_schreiben:NV \c_empty_tl \l_phone_bereinigte_nummer_str + } + } + +\cs_new_protected:Npn \phone_DE_vorwahlliste_ausgeben:n #1 + { + \begin{tabbing} + \hspace {4,5em} \= \kill + + \bool_set_false:N \l_phone_zeilenumbruch_bool + + \clist_map_inline:cn {c_phone_DE_ #1 _clist} + { + \bool_if:NTF \l_phone_zeilenumbruch_bool + { + \\ + } + { + \bool_gset_true:N \l_phone_zeilenumbruch_bool + } + + \phone_DE_ziffernvorwahl_schreiben:nN {##1} \c_true_bool + \tl_use:N \l_phone_ausgabetext_tl + \> + \tl_if_exist:cT {c_phone_DE_ortsname_ ##1 _tl} + { + \tl_use:c {c_phone_DE_ortsname_ ##1 _tl} + } + } + \end{tabbing} + } diff --git a/macros/latex/contrib/phonenumbers/tex/phonenumbers-FR.def b/macros/latex/contrib/phonenumbers/tex/phonenumbers-FR.def new file mode 100644 index 0000000000..9b2a7bb244 --- /dev/null +++ b/macros/latex/contrib/phonenumbers/tex/phonenumbers-FR.def @@ -0,0 +1,396 @@ +% phonenumbers package: phonenumbers-FR.def +% Module for French telephone numbers +% Author: K. Wehr +% Version: 2.5 +% Date: 2022-07-01 +\clist_const:Nn \c_phone_FR_ortsvorwahlen_clist {01, +02, +0262, +026200, +0263, +0269, +03, +04, +05, +0508, +0590, +0594, +0596} +\clist_const:Nn \c_phone_FR_sondervorwahlen_clist {06, +0639, +0690, +0691, +0692, +0693, +0694, +0696, +0697, +07, +0700, +07005, +07006, +07007, +07008, +07009, +08, +09, +09475, +09476, +09477, +09478, +09479, +09760, +09761, +09762, +09763, +09764, +09765, +09766, +09767, +09768, +09769} +\tl_const:cn {c_phone_FR_ortsname_01_tl} {\^{I}le-de-France} +\tl_const:cn {c_phone_FR_ortsname_02_tl} {Nord-ouest} +\tl_const:cn {c_phone_FR_ortsname_0262_tl} {La~R\a'{e}union} +\tl_const:cn {c_phone_FR_ortsname_026200_tl} {Terres~australes~et~antarctiques~fran\c{c}aises} +\tl_const:cn {c_phone_FR_ortsname_0263_tl} {La~R\a'{e}union} +\tl_const:cn {c_phone_FR_ortsname_0269_tl} {Mayotte} +\tl_const:cn {c_phone_FR_ortsname_03_tl} {Nord-est} +\tl_const:cn {c_phone_FR_ortsname_04_tl} {Sud-est} +\tl_const:cn {c_phone_FR_ortsname_05_tl} {Sud-ouest} +\tl_const:cn {c_phone_FR_ortsname_0508_tl} {Saint-Pierre-et-Miquelon} +\tl_const:cn {c_phone_FR_ortsname_0590_tl} {Guadeloupe,~Saint-Barth\a'{e}lemy,~Saint-Martin} +\tl_const:cn {c_phone_FR_ortsname_0594_tl} {Guyane} +\tl_const:cn {c_phone_FR_ortsname_0596_tl} {Martinique} +\tl_const:cn {c_phone_FR_ortsname_06_tl} {T\a'{e}l\a'{e}phone~mobile} +\tl_const:cn {c_phone_FR_ortsname_0639_tl} {T\a'{e}l\a'{e}phone~mobile~(Mayotte)} +\tl_const:cn {c_phone_FR_ortsname_0690_tl} {T\a'{e}l\a'{e}phone~mobile~(Guadeloupe)} +\tl_const:cn {c_phone_FR_ortsname_0691_tl} {T\a'{e}l\a'{e}phone~mobile~(Guadeloupe)} +\tl_const:cn {c_phone_FR_ortsname_0692_tl} {T\a'{e}l\a'{e}phone~mobile~(La~R\a'{e}union)} +\tl_const:cn {c_phone_FR_ortsname_0693_tl} {T\a'{e}l\a'{e}phone~mobile~(La~R\a'{e}union)} +\tl_const:cn {c_phone_FR_ortsname_0694_tl} {T\a'{e}l\a'{e}phone~mobile~(Guyane)} +\tl_const:cn {c_phone_FR_ortsname_0696_tl} {T\a'{e}l\a'{e}phone~mobile~(Martinique)} +\tl_const:cn {c_phone_FR_ortsname_0697_tl} {T\a'{e}l\a'{e}phone~mobile~(Martinique)} +\tl_const:cn {c_phone_FR_ortsname_07_tl} {T\a'{e}l\a'{e}phone~mobile} +\tl_const:cn {c_phone_FR_ortsname_0700_tl} {Communication~machine~\a`{a}~machine} +\tl_const:cn {c_phone_FR_ortsname_07005_tl} {Communication~machine~\a`{a}~machine~(Guadeloupe)} +\tl_const:cn {c_phone_FR_ortsname_07006_tl} {Communication~machine~\a`{a}~machine~(Guyane)} +\tl_const:cn {c_phone_FR_ortsname_07007_tl} {Communication~machine~\a`{a}~machine~(Martinique)} +\tl_const:cn {c_phone_FR_ortsname_07008_tl} {Communication~machine~\a`{a}~machine~(Mayotte)} +\tl_const:cn {c_phone_FR_ortsname_07009_tl} {Communication~machine~\a`{a}~machine~(La~R\a'{e}union)} +\tl_const:cn {c_phone_FR_ortsname_08_tl} {Service~\a`{a}~valeur~ajout\a'{e}e} +\tl_const:cn {c_phone_FR_ortsname_09_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP} +\tl_const:cn {c_phone_FR_ortsname_09475_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)} +\tl_const:cn {c_phone_FR_ortsname_09476_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)} +\tl_const:cn {c_phone_FR_ortsname_09477_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)} +\tl_const:cn {c_phone_FR_ortsname_09478_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Mayotte)} +\tl_const:cn {c_phone_FR_ortsname_09479_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)} +\tl_const:cn {c_phone_FR_ortsname_09760_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)} +\tl_const:cn {c_phone_FR_ortsname_09761_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)} +\tl_const:cn {c_phone_FR_ortsname_09762_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)} +\tl_const:cn {c_phone_FR_ortsname_09763_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)} +\tl_const:cn {c_phone_FR_ortsname_09764_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)} +\tl_const:cn {c_phone_FR_ortsname_09765_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)} +\tl_const:cn {c_phone_FR_ortsname_09766_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)} +\tl_const:cn {c_phone_FR_ortsname_09767_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)} +\tl_const:cn {c_phone_FR_ortsname_09768_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)} +\tl_const:cn {c_phone_FR_ortsname_09769_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)} + +\tl_const:Nn \c_phone_FR_landesadjektiv_tl {French} +\bool_const:Nn \c_phone_FR_erlaubt_durchwahl_bool {\c_false_bool} + +\clist_new:N \c_phone_FR_vorwahlen_clist +\clist_concat:NNN \c_phone_FR_vorwahlen_clist \c_phone_FR_ortsvorwahlen_clist \c_phone_FR_sondervorwahlen_clist + +\msg_new:nnn {phonenumbers} {FR/illegal home area code} + { + The~only~legal~home~area~code~in~France~is~0508~(Saint-Pierre-et-Miquelon).~#1~cannot~be~set~as~home~area~code~\msg_line_context:. + } + +\msg_new:nnn {phonenumbers} {FR/missing zero} + { + French~phone~number~has~no~zero~in~the~beginning~\msg_line_context: + } + +% Prüfe, ob eine Vorwahl als Heimatvorwahl zulässig ist. +% #1: Heimatvorwahl +\prg_new_protected_conditional:Npnn \phone_FR_heimatvorwahl_erlaubt:n #1 {T} + { + \clist_if_in:NnTF \c_phone_FR_ortsvorwahlen_clist {#1} + { + % In Frankreich kann nur 0508 Heimatvorwahl sein. + \str_if_eq:nnTF {#1} {0508} { \prg_return_true: } + { + \msg_warning:nnn {phonenumbers} {FR/illegal home area code} {#1} + \prg_return_false: + } + } + { + \msg_warning:nnn {phonenumbers} {invalid home area code} {#1} + \prg_return_false: + } + } + +% #1: Vorwahl +\cs_new:Npn \phone_FR_ermittle_landeskennzahl:n #1 + { + \str_case:nnF {#1} + { + {0262} {262} + {026200} {262} + {0263} {262} + {0269} {262} + {0508} {508} + {0590} {590} + {0594} {594} + {0596} {596} + {0639} {262} + {0690} {590} + {0691} {590} + {0692} {262} + {0693} {262} + {0694} {594} + {0696} {596} + {0697} {596} + {07005} {590} + {07006} {594} + {07007} {596} + {07008} {262} + {07009} {262} + {09475} {590} + {09476} {594} + {09477} {596} + {09478} {262} + {09479} {262} + {09760} {590} + {09761} {590} + {09762} {262} + {09763} {262} + {09764} {594} + {09765} {594} + {09766} {596} + {09767} {596} + {09768} {590} + {09769} {262} + } + { + 33 + } + } + +% #1: Vorwahl, #2: Rufnummer +\cs_new_protected:Npn \phone_FR_vorwahl_und_rufnummer_schreiben:nn #1#2 + { + \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {FR} } + { + \clist_if_in:NnT \c_phone_FR_sondervorwahlen_clist {#1} + { + \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place} + { + \str_set:Nn \l_phone_vorwahldarstellung_str {number} + } + } + + \bool_lazy_and:nnTF { \str_if_eq_p:Vn \l_phone_heimatland_str {FR} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} } + { + \phone_von_hinten_gruppiert_schreiben:n {#2} % reine Teilnehmerrufnummer in Saint-Pierre-et-Miquelon + } + { + \str_case:Vn \l_phone_vorwahldarstellung_str + { + {number} + { + \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str + } + {place} + { + \tl_if_exist:cTF {c_phone_FR_ortsname_#1_tl} + { + \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_FR_ortsname_#1_tl} + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + \phone_von_vorne_gruppiert_schreiben:n {#2} + } + { + \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str + } + } + {place-and-number} + { + \tl_if_exist:cT {c_phone_FR_ortsname_#1_tl} + { + \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_FR_ortsname_#1_tl} + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + + \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str + } + } + } + } + { + \phone_gruppierte_auslandsvorwahl_schreiben:x { \phone_FR_ermittle_landeskennzahl:n {#1} } + + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + + \str_if_eq:nnTF {#1} {0508} % in Saint-Pierre-et-Miquelon entfällt die Ortsvorwahl + { + \phone_von_hinten_gruppiert_schreiben:n {#2} + } + { + \phone_von_hinten_gruppiert_schreiben:x { \str_tail:N \l_phone_bereinigte_nummer_str } + } + } + + % Linktext schreiben: + \str_put_right:Nx \l_phone_linktext_str { + \phone_FR_ermittle_landeskennzahl:n {#1} } + \str_if_eq:nnF {#1} {0508} % in Saint-Pierre-et-Miquelon entfällt die Ortsvorwahl + { + \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} } + } + \str_put_right:Nn \l_phone_linktext_str {#2} + } + +\cs_generate_variant:Nn \phone_FR_vorwahl_und_rufnummer_schreiben:nn {Vx,xx} + +\cs_new_protected:Npn \phone_FR_nummer_schreiben: + { + \int_set:Nn \l_phone_nummernlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str } + + \int_compare:nNnTF {\l_phone_nummernlaenge_int} < {10} + { + \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {3} + { + \int_compare:nNnTF {\l_phone_nummernlaenge_int} < {4} + { + \msg_warning:nnnn {phonenumbers} {number too short} {short} {4} + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str + } + { + \int_compare:nNnTF {\l_phone_nummernlaenge_int} > {4} + { + \msg_warning:nnnn {phonenumbers} {number too long} {short} {4} + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str + } + { + \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str + \str_put_right:NV \l_phone_linktext_str \l_phone_bereinigte_nummer_str + } + } + } + { + \msg_warning:nnnn {phonenumbers} {number too short} {phone} {10} + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str + } + } + { + \str_if_eq:xnTF { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {4} } {0700} + { + \int_compare:nNnTF { \str_item:Nn \l_phone_bereinigte_nummer_str {5} } < {5} + { + % überlange Mobilfunknummer (machine to machine) im Mutterland (14 Stellen) + \phone_nummernlaenge_ueberpruefen:Vnnn \l_phone_bereinigte_nummer_str {14} {14} {machine~to~machine} + \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool + { + \phone_FR_vorwahl_und_rufnummer_schreiben:xx + { + \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {4} + } + { + \str_range:Nnn \l_phone_bereinigte_nummer_str {5} {-1} + } + } + { + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str + } + } + { + % überlange Mobilfunknummer (machine to machine) in den Überseegebieten (13 Stellen) + \phone_nummernlaenge_ueberpruefen:Vnnn \l_phone_bereinigte_nummer_str {13} {13} {machine~to~machine} + \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool + { + \phone_FR_vorwahl_und_rufnummer_schreiben:xx + { + \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {5} + } + { + \str_range:Nnn \l_phone_bereinigte_nummer_str {6} {-1} + } + } + { + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str + } + } + } + { + \int_compare:nNnTF {\l_phone_nummernlaenge_int} > {10} + { + \msg_warning:nnnn {phonenumbers} {number too long} {phone} {10} + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str + } + { + \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0} + { + \bool_set_false:N \l_phone_vorwahl_gefunden_bool + + \int_step_inline:nnnn {6} {-1} {2} + { + \bool_if:NF \l_phone_vorwahl_gefunden_bool + { + \int_compare:nT { \l_phone_nummernlaenge_int >= ##1 } + { + \str_set:Nx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {##1} } + + \clist_if_in:NVT \c_phone_FR_vorwahlen_clist \l_tmpa_str + { + \bool_set_true:N \l_phone_vorwahl_gefunden_bool + \phone_FR_vorwahl_und_rufnummer_schreiben:Vx \l_tmpa_str + { + \str_range:Nnn \l_phone_bereinigte_nummer_str {##1 + 1} {-1} + } + } + } + } + } + + \bool_if:NF \l_phone_vorwahl_gefunden_bool + { + \msg_warning:nn {phonenumbers} {invalid area code} + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str + } + } + { + \msg_warning:nn {phonenumbers} {FR/missing zero} + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str + } + } + } + } + } + +\cs_new_protected:Npn \phone_FR_vorwahlliste_ausgeben:n #1 + { + \begin{tabbing} + \hspace {4em} \= \kill + + \bool_set_false:N \l_phone_zeilenumbruch_bool + + \clist_map_inline:cn {c_phone_FR_ #1 _clist} + { + \bool_if:NTF \l_phone_zeilenumbruch_bool + { + \\ + } + { + \bool_gset_true:N \l_phone_zeilenumbruch_bool + } + + \phone_von_vorne_gruppiert_schreiben:n {##1} + \tl_use:N \l_phone_ausgabetext_tl + \> + \tl_if_exist:cT {c_phone_FR_ortsname_ ##1 _tl} + { + \tl_use:c {c_phone_FR_ortsname_ ##1 _tl} + } + } + \end{tabbing} + } diff --git a/macros/latex/contrib/phonenumbers/tex/phn-UK_Ortsnamen.tex b/macros/latex/contrib/phonenumbers/tex/phonenumbers-UK.def index 29c8c2d138..ab52a899d5 100644 --- a/macros/latex/contrib/phonenumbers/tex/phn-UK_Ortsnamen.tex +++ b/macros/latex/contrib/phonenumbers/tex/phonenumbers-UK.def @@ -1,5 +1,1326 @@ -% phonenumbers package: British place names -% Datum: 20. August 2021 +% phonenumbers package: phonenumbers-UK.def +% Module for British telephone numbers +% Author: K. Wehr +% Version: 2.5 +% Date: 2022-07-01 +\clist_const:Nn \c_phone_UK_ortsvorwahlen_clist {0113, +0114, +0115, +0116, +0117, +0118, +01200, +01202, +01204, +01205, +01206, +01207, +01208, +01209, +0121, +01223, +01224, +01225, +01226, +01227, +01228, +01229, +01233, +01234, +01235, +01236, +01237, +01239, +01241, +01242, +01243, +01244, +01245, +01246, +01248, +01249, +01250, +01252, +01253, +01254, +01255, +01256, +01257, +01258, +01259, +01260, +01261, +01262, +01263, +01264, +01267, +01268, +01269, +01270, +01271, +01273, +01274, +01275, +01276, +01277, +01278, +01279, +01280, +01282, +01283, +01284, +01285, +01286, +01287, +01288, +01289, +01290, +01291, +01292, +01293, +01294, +01295, +01296, +01297, +01298, +01299, +01300, +01301, +01302, +01303, +01304, +01305, +01306, +01307, +01308, +01309, +0131, +01320, +01322, +01323, +01324, +01325, +01326, +01327, +01328, +01329, +01330, +01332, +01333, +01334, +01335, +01337, +01339, +01340, +01341, +01342, +01343, +01344, +01346, +01347, +01348, +01349, +01350, +01352, +01353, +01354, +01355, +01356, +01357, +01358, +01359, +01360, +01361, +01362, +01363, +01364, +01366, +01367, +01368, +01369, +01371, +01372, +01373, +01375, +01376, +01377, +01379, +01380, +01381, +01382, +01383, +01384, +01386, +01387, +013873, +01388, +01389, +01392, +01394, +01395, +01397, +01398, +01400, +01403, +01404, +01405, +01406, +01407, +01408, +01409, +0141, +01420, +01422, +01423, +01424, +01425, +01427, +01428, +01429, +01430, +01431, +01432, +01433, +01434, +01435, +01436, +01437, +01438, +01439, +01440, +01442, +01443, +01444, +01445, +01446, +01449, +01450, +01451, +01452, +01453, +01454, +01455, +01456, +01457, +01458, +01460, +01461, +01462, +01463, +01464, +01465, +01466, +01467, +01469, +01470, +01471, +01472, +01473, +01474, +01475, +01476, +01477, +01478, +01479, +01480, +01481, +01482, +01483, +01484, +01485, +01487, +01488, +01489, +01490, +01491, +01492, +01493, +01494, +01495, +01496, +01497, +01499, +01501, +01502, +01503, +01505, +01506, +01507, +01508, +01509, +0151, +01520, +01522, +01524, +015242, +01525, +01526, +01527, +01528, +01529, +01530, +01531, +01534, +01535, +01536, +01538, +01539, +015394, +015395, +015396, +01540, +01542, +01543, +01544, +01545, +01546, +01547, +01548, +01549, +01550, +01553, +01554, +01555, +01556, +01557, +01558, +01559, +01560, +01561, +01562, +01563, +01564, +01565, +01566, +01567, +01568, +01569, +01570, +01571, +01572, +01573, +01575, +01576, +01577, +01578, +01579, +01580, +01581, +01582, +01583, +01584, +01586, +01588, +01590, +01591, +01592, +01593, +01594, +01595, +01597, +01598, +01599, +01600, +01603, +01604, +01606, +01608, +01609, +0161, +01620, +01621, +01622, +01623, +01624, +01625, +01626, +01628, +01629, +01630, +01631, +01633, +01634, +01635, +01636, +01637, +01638, +01639, +01641, +01642, +01643, +01644, +01646, +01647, +01650, +01651, +01652, +01653, +01654, +01655, +01656, +01659, +01661, +01663, +01664, +01665, +01666, +01667, +01668, +01669, +01670, +01671, +01672, +01673, +01674, +01675, +01676, +01677, +01678, +01680, +01681, +01683, +01684, +01685, +01686, +01687, +01688, +01689, +01690, +01691, +01692, +01694, +01695, +01697, +016973, +016974, +016977, +01698, +01700, +01702, +01704, +01706, +01707, +01708, +01709, +01720, +01721, +01722, +01723, +01724, +01725, +01726, +01727, +01728, +01729, +01730, +01732, +01733, +01736, +01737, +01738, +01740, +01743, +01744, +01745, +01746, +01747, +01748, +01749, +01750, +01751, +01752, +01753, +01754, +01756, +01757, +01758, +01759, +01760, +01761, +01763, +01764, +01765, +01766, +01767, +01768, +017683, +017684, +017687, +01769, +01770, +01771, +01772, +01773, +01775, +01776, +01777, +01778, +01779, +01780, +01782, +01784, +01785, +01786, +01787, +01788, +01789, +01790, +01792, +01793, +01794, +01795, +01796, +01797, +01798, +01799, +01803, +01805, +01806, +01807, +01808, +01809, +01821, +01822, +01823, +01824, +01825, +01827, +01828, +01829, +01830, +01832, +01833, +01834, +01835, +01837, +01838, +01840, +01841, +01842, +01843, +01844, +01845, +01847, +01848, +01851, +01852, +01854, +01855, +01856, +01857, +01858, +01859, +01862, +01863, +01864, +01865, +01866, +01869, +01870, +01871, +01872, +01873, +01874, +01875, +01876, +01877, +01878, +01879, +01880, +01882, +01883, +01884, +01885, +01886, +01887, +01888, +01889, +01890, +01892, +01895, +01896, +01899, +01900, +01902, +01903, +01904, +01905, +01908, +01909, +0191, +01920, +01922, +01923, +01924, +01925, +01926, +01928, +01929, +01931, +01932, +01933, +01934, +01935, +01937, +01938, +01939, +01942, +01943, +01944, +01945, +01946, +019467, +01947, +01948, +01949, +01950, +01951, +01952, +01953, +01954, +01955, +01957, +01959, +01962, +01963, +01964, +01967, +01968, +01969, +01970, +01971, +01972, +01974, +01975, +01977, +01978, +01980, +01981, +01982, +01983, +01984, +01985, +01986, +01987, +01988, +01989, +01992, +01993, +01994, +01995, +01997, +020, +023, +024, +028, +029} +\clist_const:Nn \c_phone_UK_obligatorische_ortsvorwahlen_clist {01202, +01224, +01273, +01274, +01642, +01908} +\clist_const:Nn \c_phone_UK_sondervorwahlen_clist {0300, +0303, +0306, +0330, +0331, +0333, +0343, +0344, +0345, +0370, +0371, +0372, +05511, +05516, +05555, +05588, +05600, +05601, +05602, +05603, +05604, +07000, +07002, +07003, +07004, +07005, +07006, +07008, +07009, +07010, +07011, +07012, +07013, +07014, +07015, +07016, +07017, +07018, +07019, +07021, +07022, +07023, +07024, +07026, +07027, +07028, +07029, +07030, +07031, +07032, +07033, +07034, +07035, +07036, +07037, +07038, +07039, +07040, +07041, +07042, +07043, +07044, +07045, +07046, +07047, +07048, +07049, +07052, +07053, +07054, +07055, +07056, +07057, +07058, +07059, +07060, +07061, +07062, +07063, +07064, +07065, +07066, +07067, +07068, +07069, +07070, +07071, +07072, +07073, +07074, +07076, +07077, +07078, +07079, +07080, +07081, +07082, +07083, +07084, +07085, +07086, +07087, +07088, +07089, +07090, +07091, +07093, +07094, +07096, +07098, +07099, +07106, +07107, +07300, +07301, +07302, +07303, +07304, +07305, +07306, +07307, +07308, +07309, +07310, +07311, +07312, +07340, +07341, +07342, +07354, +07355, +07356, +07357, +07358, +07359, +07360, +07361, +07362, +07363, +07364, +07365, +07366, +07367, +07368, +07369, +07375, +07376, +07377, +07378, +07379, +07380, +07381, +07382, +07383, +07384, +07385, +07386, +07387, +07388, +07389, +07390, +07391, +07392, +07393, +07394, +07395, +07396, +07397, +07398, +07399, +07400, +07401, +07402, +07403, +07404, +07405, +07406, +07407, +07408, +07409, +07410, +07411, +07412, +07413, +07414, +07415, +07416, +07417, +07418, +07419, +07420, +07421, +07422, +07423, +07424, +07425, +07426, +07427, +07428, +07429, +07430, +07431, +07432, +07433, +07434, +07435, +07436, +07437, +07438, +07440, +07441, +07442, +07443, +07444, +07445, +07446, +07447, +07448, +07449, +07450, +07451, +07452, +07453, +07454, +07455, +07456, +07457, +07458, +07459, +07460, +07461, +07462, +07463, +07464, +07465, +07466, +07467, +07468, +07469, +07470, +07471, +07472, +07473, +07474, +07475, +07476, +07477, +07478, +07479, +07480, +07481, +07482, +07483, +07484, +07485, +07486, +07487, +07488, +07489, +07490, +07491, +07492, +07493, +07494, +07495, +07496, +07497, +07498, +07499, +07500, +07501, +07502, +07503, +07504, +07505, +07506, +07507, +07508, +07509, +07510, +07511, +07512, +07513, +07514, +07515, +07516, +07517, +07518, +07519, +07520, +07521, +07522, +07523, +07525, +07526, +07527, +07528, +07529, +07530, +07531, +07532, +07533, +07534, +07535, +07536, +07537, +07538, +07539, +07540, +07541, +07542, +07543, +07544, +07545, +07546, +07547, +07548, +07549, +07550, +07551, +07552, +07553, +07554, +07555, +07556, +07557, +07558, +07559, +07560, +07561, +07562, +07563, +07564, +07565, +07566, +07567, +07568, +07569, +07570, +07572, +07573, +07574, +07575, +07576, +07577, +07578, +07579, +07580, +07581, +07582, +07583, +07584, +07585, +07586, +07587, +07588, +07589, +07590, +07591, +07592, +07593, +07594, +07595, +07596, +07597, +07598, +07599, +07600, +07602, +07623, +07624, +07625, +07626, +07640, +07641, +07644, +07654, +07659, +07660, +07661, +07663, +07666, +07669, +07677, +07681, +07693, +07699, +07700, +07701, +07702, +07703, +07704, +07705, +07706, +07707, +07708, +07709, +07710, +07711, +07712, +07713, +07714, +07715, +07716, +07717, +07718, +07719, +07720, +07721, +07722, +07723, +07724, +07725, +07726, +07727, +07728, +07729, +07730, +07731, +07732, +07733, +07734, +07735, +07736, +07737, +07738, +07739, +07740, +07741, +07742, +07743, +07744, +07745, +07746, +07747, +07748, +07749, +07750, +07751, +07752, +07753, +07754, +07755, +07756, +07757, +07758, +07759, +07760, +07761, +07762, +07763, +07764, +07765, +07766, +07767, +07768, +07769, +07770, +07771, +07772, +07773, +07774, +07775, +07776, +07777, +07778, +07779, +07780, +07781, +07782, +07783, +07784, +07785, +07786, +07787, +07788, +07789, +07790, +07791, +07792, +07793, +07794, +07795, +07796, +07797, +07798, +07799, +07800, +07801, +07802, +07803, +07804, +07805, +07806, +07807, +07808, +07809, +07810, +07811, +07812, +07813, +07814, +07815, +07816, +07817, +07818, +07819, +07820, +07821, +07822, +07823, +07824, +07825, +07826, +07827, +07828, +07829, +07830, +07831, +07832, +07833, +07834, +07835, +07836, +07837, +07838, +07839, +07840, +07841, +07842, +07843, +07844, +07845, +07846, +07847, +07848, +07849, +07850, +07851, +07852, +07853, +07854, +07855, +07856, +07857, +07858, +07859, +07860, +07861, +07862, +07863, +07864, +07865, +07866, +07867, +07868, +07869, +07870, +07871, +07872, +07873, +07874, +07875, +07876, +07877, +07878, +07879, +07880, +07881, +07882, +07883, +07884, +07885, +07886, +07887, +07888, +07889, +07890, +07891, +07892, +07893, +07894, +07895, +07896, +07897, +07898, +07899, +07900, +07901, +07902, +07903, +07904, +07905, +07906, +07907, +07908, +07909, +07910, +07911, +07912, +07913, +07914, +07915, +07916, +07917, +07918, +07919, +07920, +07921, +07922, +07923, +07924, +07925, +07926, +07927, +07928, +07929, +07930, +07931, +07932, +07933, +07934, +07935, +07936, +07937, +07938, +07939, +07940, +07941, +07942, +07943, +07944, +07945, +07946, +07947, +07948, +07949, +07950, +07951, +07952, +07953, +07954, +07955, +07956, +07957, +07958, +07959, +07960, +07961, +07962, +07963, +07964, +07965, +07966, +07967, +07968, +07969, +07970, +07971, +07972, +07973, +07974, +07975, +07976, +07977, +07978, +07979, +07980, +07981, +07982, +07983, +07984, +07985, +07986, +07987, +07988, +07989, +07990, +07999, +0800, +0808, +0820, +0843, +0844, +0845, +0870, +0871, +0872, +0897, +0899, +0900, +0901, +0902, +0903, +0904, +0905, +0906, +0907, +0911, +0912, +0913} \tl_const:cn {c_phone_UK_ortsname_0113_tl} {Leeds} \tl_const:cn {c_phone_UK_ortsname_0114_tl} {Sheffield} \tl_const:cn {c_phone_UK_ortsname_0115_tl} {Nottingham} @@ -650,7 +1971,6 @@ \tl_const:cn {c_phone_UK_ortsname_07017_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07018_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07019_tl} {Personal~number} -\tl_const:cn {c_phone_UK_ortsname_07020_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07021_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07022_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07023_tl} {Personal~number} @@ -679,7 +1999,6 @@ \tl_const:cn {c_phone_UK_ortsname_07047_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07048_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07049_tl} {Personal~number} -\tl_const:cn {c_phone_UK_ortsname_07050_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07052_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07053_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07054_tl} {Personal~number} @@ -719,7 +2038,6 @@ \tl_const:cn {c_phone_UK_ortsname_07089_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07090_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07091_tl} {Personal~number} -\tl_const:cn {c_phone_UK_ortsname_07092_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07093_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07094_tl} {Personal~number} \tl_const:cn {c_phone_UK_ortsname_07096_tl} {Personal~number} @@ -745,7 +2063,9 @@ \tl_const:cn {c_phone_UK_ortsname_07342_tl} {Mobile~phone} \tl_const:cn {c_phone_UK_ortsname_07354_tl} {Mobile~phone} \tl_const:cn {c_phone_UK_ortsname_07355_tl} {Mobile~phone} +\tl_const:cn {c_phone_UK_ortsname_07356_tl} {Mobile~phone} \tl_const:cn {c_phone_UK_ortsname_07357_tl} {Mobile~phone} +\tl_const:cn {c_phone_UK_ortsname_07358_tl} {Mobile~phone} \tl_const:cn {c_phone_UK_ortsname_07359_tl} {Mobile~phone} \tl_const:cn {c_phone_UK_ortsname_07360_tl} {Mobile~phone} \tl_const:cn {c_phone_UK_ortsname_07361_tl} {Mobile~phone} @@ -1223,7 +2543,7 @@ \tl_const:cn {c_phone_UK_ortsname_07921_tl} {Mobile~phone} \tl_const:cn {c_phone_UK_ortsname_07922_tl} {Mobile~phone} \tl_const:cn {c_phone_UK_ortsname_07923_tl} {Mobile~phone} -\tl_const:cn {c_phone_UK_ortsname_07924_tl} {Mobile~phone} +\tl_const:cn {c_phone_UK_ortsname_07924_tl} {Mobile~phone~(Isle~of~Man)} \tl_const:cn {c_phone_UK_ortsname_07925_tl} {Mobile~phone} \tl_const:cn {c_phone_UK_ortsname_07926_tl} {Mobile~phone} \tl_const:cn {c_phone_UK_ortsname_07927_tl} {Mobile~phone} @@ -1313,3 +2633,360 @@ \tl_const:cn {c_phone_UK_ortsname_0911_tl} {Special~service~premium~rate} \tl_const:cn {c_phone_UK_ortsname_0912_tl} {Special~service~premium~rate} \tl_const:cn {c_phone_UK_ortsname_0913_tl} {Special~service~premium~rate} + +\tl_const:Nn \c_phone_UK_landesadjektiv_tl {British} +\bool_const:Nn \c_phone_UK_erlaubt_durchwahl_bool {\c_false_bool} + +\clist_new:N \c_phone_UK_vorwahlen_clist +\clist_concat:NNN \c_phone_UK_vorwahlen_clist \c_phone_UK_ortsvorwahlen_clist \c_phone_UK_sondervorwahlen_clist + +\msg_new:nnn {phonenumbers} {UK/illegal home area code} + { + National~dialling~is~required~in~\tl_use:c {c_phone_UK_ortsname_ #1 _tl}.~#1~cannot~be~set~as~home~area~code~\msg_line_context:. + } + +\msg_new:nnn {phonenumbers} {UK/national dialling required} + { + British~subscriber~number~starting~with~0~or~1~requires~an~area~code~\msg_line_context: + } + +% Prüfe, ob eine Vorwahl als Heimatvorwahl zulässig ist. +% #1: Heimatvorwahl +\prg_new_protected_conditional:Npnn \phone_UK_heimatvorwahl_erlaubt:n #1 {T} + { + \clist_if_in:NnTF \c_phone_UK_ortsvorwahlen_clist {#1} + { + % In Großbritannien können nur nicht obligatorische Ortsvorwahlen Heimatvorwahl sein. + \clist_if_in:NnTF \c_phone_UK_obligatorische_ortsvorwahlen_clist {#1} + { + \msg_warning:onn {phonenumbers} {UK/illegal home area code} {#1} + \prg_return_false: + } + { + \prg_return_true: + } + } + { + \msg_warning:nnn {phonenumbers} {invalid home area code} {#1} + \prg_return_false: + } + } + +% #1: Vorwahl, #2: Soll die führende null ausgegeben werden? +\cs_new_protected:Npn \phone_UK_ziffernvorwahl_schreiben:nN #1#2 + { + \int_compare:nNnTF { \str_count:n {#1} } = {6} + { + % sechsstellige Vorwahl: Gliederung vor der zweitletzten Ziffer + \bool_if:NTF #2 + { + \int_compare:nNnTF {\l_phone_gruppierungsminimum_int} > {6} + { + \tl_put_right:Nn \l_phone_ausgabetext_tl {#1} + } + { + \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {1} {4} } + \tl_put_right:Nn \l_phone_ausgabetext_tl {\,} + \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {5} {6} } + } + } + { + \int_compare:nNnTF {\l_phone_gruppierungsminimum_int} > {5} + { + \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_tail:n {#1} } + } + { + \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {2} {4} } + \tl_put_right:Nn \l_phone_ausgabetext_tl {\,} + \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {5} {6} } + } + } + } + { + % nicht sechsstellige Vorwahl + \bool_if:NTF #2 + { + \tl_put_right:Nn \l_phone_ausgabetext_tl {#1} + } + { + \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_tail:n {#1} } + } + } + } + +% #1: Vorwahl, #2: Folgt eine Rufnummer? +\cs_new_protected:Npn \phone_UK_vorwahl_schreiben:nn #1 #2 + { + \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {UK} } + { + \clist_if_in:NnT \c_phone_UK_sondervorwahlen_clist {#1} + { + \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place} + { + \str_set:Nn \l_phone_vorwahldarstellung_str {number} + } + } + + \bool_lazy_and:nnF { \str_if_eq_p:Vn \l_phone_heimatland_str {UK} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} } + { + \str_case:Vn \l_phone_vorwahldarstellung_str + { + {number} + { + \bool_if:nTF {#2} + { + \str_if_eq:VnTF \l_phone_vorwahltrennung_str {space} + { + \phone_UK_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + } + { + \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + } + + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + { + \phone_UK_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + } + } + {place} + { + \bool_if:nTF {#2} + { + \str_if_eq:VnF \l_phone_vorwahltrennung_str {space} + { + \tl_put_right:Nn \l_phone_ausgabetext_tl {(} + } + + \tl_if_exist:cTF {c_phone_UK_ortsname_ #1 _tl} + { + \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_UK_ortsname_ #1 _tl} + } + { + \phone_UK_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + } + + \str_if_eq:VnF \l_phone_vorwahltrennung_str {space} + { + \tl_put_right:Nn \l_phone_ausgabetext_tl {)} + } + + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + { + \tl_if_exist:cTF {c_phone_UK_ortsname_ #1 _tl} + { + \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_UK_ortsname_ #1 _tl} + } + { + \phone_UK_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + } + } + } + {place-and-number} + { + \tl_if_exist:cT {c_phone_UK_ortsname_ #1 _tl} + { + \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_UK_ortsname_ #1 _tl} + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + + \str_if_eq:VnTF \l_phone_vorwahltrennung_str {space} + { + \phone_UK_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + } + { + \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_true_bool + } + + \bool_if:nT {#2} + { + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + } + } + } + } + { + \phone_ungruppierte_auslandsvorwahl_schreiben:n {44} + + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + + \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {space} + { + \phone_UK_ziffernvorwahl_schreiben:nN {#1} \c_false_bool + } + { + \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_false_bool + } + + \bool_if:nT {#2} + { + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + } + + % Linktext schreiben, falls eine Rufnummer folgt + \bool_if:nT {#2} + { + \str_put_right:Nn \l_phone_linktext_str {+44} + \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} } + } + } + +\cs_generate_variant:Nn \phone_UK_vorwahl_schreiben:nn {Vx} + +% #1: Vorwahl, #2: Teilnehmerrufnummer +\cs_new_protected:Npn \phone_UK_teilnehmerrufnummer_schreiben:Nn #1 #2 + { + % Überprüfen der Nummernlänge + \str_if_empty:NTF #1 + { + % Festnetznummer ohne Vorwahl (kann zwischen 4 und 8 Ziffern haben) + \phone_nummernlaenge_ueberpruefen:nnnn {#2} {4} {8} {landline} + + % Nummern, die mit 0 oder 1 beginnen, erfordern das Wählen der Vorwahl + \str_case:xnT { \str_head:n {#2} } + { + {0} { } + {1} { } + } + { + \msg_warning:nn {phonenumbers} {UK/national dialling required} + } + } + { + \clist_if_in:NVTF \c_phone_UK_ortsvorwahlen_clist #1 + { + % Festnetznummer, muss in der Regel 11 Ziffern umfassen + % Ausnahme: Bei den Vorwahlen 01XXX und 016977 sind auch 10 Ziffern möglich. + \bool_lazy_or:nnTF { \str_if_eq_p:Vn #1 {016977} } { \int_compare_p:nNn { \str_count:N #1 } = {5} } + { + \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {10} {11} {landline} + } + { + \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {11} {11} {landline} + } + } + { + % Mobilfunk-/Sondernummer + \str_if_eq:xnTF { \str_range:Nnn #1 {1} {4} } {0800} + { + % 0800er-Nummern haben 10 oder 11 Ziffern; Ausnahme: 0800 1111 + \str_if_eq:nnTF {#2} {1111} + { + \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool + } + { + \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {10} {11} {freephone} + } + } + { + % alle anderen Sondernummern haben 11 Ziffern + \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {11} {11} {non-geographic} + } + } + + \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool + { + % Für gültige Nummern mit Vorwahl Linktext schreiben: + \str_put_right:Nn \l_phone_linktext_str {#2} + } + { + % Für ungültige Nummern mit Vorwahl Linktext löschen: + \str_clear:N \l_phone_linktext_str + } + } + + \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool + { + \int_compare:nNnTF { \str_count:n {#2} } > {6} + { + % Nummern mit mehr als 6 Ziffern werden in Vierergruppen gegliedert + \str_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#2} {1} {-5} } + \tl_put_right:Nn \l_phone_ausgabetext_tl {\,} + \str_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#2} {-4} {-1} } + } + { + \str_put_right:Nn \l_phone_ausgabetext_tl {#2} + } + } + { + \str_put_right:Nn \l_phone_ausgabetext_tl {#2} + } + } + +\cs_generate_variant:Nn \phone_UK_teilnehmerrufnummer_schreiben:Nn {Nx,NV} + +\cs_new_protected:Npn \phone_UK_nummer_schreiben: + { + \int_set:Nn \l_phone_nummernlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str } + + \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0} + { + \bool_set_false:N \l_phone_vorwahl_gefunden_bool + + \int_step_inline:nnnn {6} {-1} {3} + { + \bool_if:NF \l_phone_vorwahl_gefunden_bool + { + \int_compare:nT { \l_phone_nummernlaenge_int >= ##1 } + { + \str_set:Nx \l_phone_vorwahl_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {##1} } + + \clist_if_in:NVT \c_phone_UK_vorwahlen_clist \l_phone_vorwahl_str + { + \bool_set_true:N \l_phone_vorwahl_gefunden_bool + + \phone_UK_vorwahl_schreiben:Vx \l_phone_vorwahl_str { \int_compare_p:nNn {##1} < {\l_phone_nummernlaenge_int} } + + \int_compare:nNnTF {##1} = {\l_phone_nummernlaenge_int} + { + \msg_warning:nn {phonenumbers} {missing subscriber number} + } + { + \phone_UK_teilnehmerrufnummer_schreiben:Nx \l_phone_vorwahl_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {##1 + 1} {-1} } + } + } + } + } + } + + \bool_if:NF \l_phone_vorwahl_gefunden_bool + { + \msg_warning:nn {phonenumbers} {invalid area code} + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str + } + } + { + \phone_UK_teilnehmerrufnummer_schreiben:NV \c_empty_tl \l_phone_bereinigte_nummer_str + } + } + +\cs_new_protected:Npn \phone_UK_vorwahlliste_ausgeben:n #1 + { + \begin{tabbing} + \hspace {4em} \= \kill + + \bool_set_false:N \l_phone_zeilenumbruch_bool + + \clist_map_inline:cn {c_phone_UK_ #1 _clist} + { + \bool_if:NTF \l_phone_zeilenumbruch_bool + { + \\ + } + { + \bool_gset_true:N \l_phone_zeilenumbruch_bool + } + + \phone_UK_ziffernvorwahl_schreiben:nN {##1} \c_true_bool + \tl_use:N \l_phone_ausgabetext_tl + \> + \tl_if_exist:cT {c_phone_UK_ortsname_ ##1 _tl} + { + \tl_use:c {c_phone_UK_ortsname_ ##1 _tl} + } + } + \end{tabbing} + } diff --git a/macros/latex/contrib/phonenumbers/tex/phn-US_Ortsnamen.tex b/macros/latex/contrib/phonenumbers/tex/phonenumbers-US.def index a53bf4dec7..dfd3ca721e 100644 --- a/macros/latex/contrib/phonenumbers/tex/phn-US_Ortsnamen.tex +++ b/macros/latex/contrib/phonenumbers/tex/phonenumbers-US.def @@ -1,5 +1,811 @@ -% phonenumbers package: place names of the North American Numbering Plan -% Datum: 20. August 2021 +% phonenumbers package: phonenumbers-US.def +% Module for North American telephone numbers +% Author: K. Wehr +% Version: 2.5 +% Date: 2022-07-01 +\clist_const:Nn \c_phone_US_ortsvorwahlen_clist {201, +202, +203, +204, +205, +206, +207, +208, +209, +210, +212, +213, +214, +215, +216, +217, +218, +219, +220, +223, +224, +225, +226, +227, +228, +229, +231, +234, +235, +236, +239, +240, +242, +246, +248, +249, +250, +251, +252, +253, +254, +256, +260, +262, +263, +264, +267, +268, +269, +270, +272, +274, +276, +279, +281, +283, +284, +289, +301, +302, +303, +304, +305, +306, +307, +308, +309, +310, +312, +313, +314, +315, +316, +317, +318, +319, +320, +321, +323, +324, +325, +326, +327, +329, +330, +331, +332, +334, +336, +337, +339, +340, +341, +343, +345, +346, +347, +350, +351, +352, +354, +360, +361, +363, +364, +365, +367, +368, +380, +382, +385, +386, +401, +402, +403, +404, +405, +406, +407, +408, +409, +410, +412, +413, +414, +415, +416, +417, +418, +419, +423, +424, +425, +428, +430, +431, +432, +434, +435, +437, +438, +440, +441, +442, +443, +445, +447, +448, +450, +458, +463, +464, +468, +469, +470, +472, +473, +474, +475, +478, +479, +480, +484, +501, +502, +503, +504, +505, +506, +507, +508, +509, +510, +512, +513, +514, +515, +516, +517, +518, +519, +520, +530, +531, +534, +539, +540, +541, +548, +551, +557, +559, +561, +562, +563, +564, +567, +570, +571, +572, +573, +574, +575, +579, +580, +581, +582, +584, +585, +586, +587, +601, +602, +603, +604, +605, +606, +607, +608, +609, +610, +612, +613, +614, +615, +616, +617, +618, +619, +620, +623, +626, +628, +629, +630, +631, +636, +639, +640, +641, +645, +646, +647, +649, +650, +651, +656, +657, +658, +659, +660, +661, +662, +664, +667, +669, +670, +671, +672, +678, +680, +681, +682, +683, +684, +689, +701, +702, +703, +704, +705, +706, +707, +708, +709, +712, +713, +714, +715, +716, +717, +718, +719, +720, +721, +724, +725, +726, +727, +728, +730, +731, +732, +734, +737, +740, +742, +743, +747, +753, +754, +757, +758, +760, +762, +763, +765, +767, +769, +770, +771, +772, +773, +774, +775, +778, +779, +780, +781, +782, +784, +785, +786, +787, +801, +802, +803, +804, +805, +806, +807, +808, +809, +810, +812, +813, +814, +815, +816, +817, +818, +819, +820, +825, +826, +828, +829, +830, +831, +832, +835, +838, +839, +840, +843, +845, +847, +848, +849, +850, +854, +856, +857, +858, +859, +860, +861, +862, +863, +864, +865, +867, +868, +869, +870, +872, +873, +876, +878, +901, +902, +903, +904, +905, +906, +907, +908, +909, +910, +912, +913, +914, +915, +916, +917, +918, +919, +920, +925, +928, +929, +930, +931, +934, +936, +937, +938, +939, +940, +941, +943, +945, +947, +948, +949, +951, +952, +954, +956, +959, +970, +971, +972, +973, +975, +978, +979, +980, +983, +984, +985, +986, +989} +\clist_const:Nn \c_phone_US_obligatorische_ortsvorwahlen_clist {201, +202, +203, +204, +205, +206, +208, +209, +210, +212, +213, +214, +215, +217, +218, +219, +220, +223, +224, +226, +227, +234, +235, +236, +240, +248, +249, +250, +251, +253, +254, +256, +262, +267, +270, +272, +274, +276, +279, +281, +283, +289, +301, +302, +303, +304, +305, +309, +310, +312, +314, +315, +317, +319, +321, +323, +324, +326, +327, +329, +330, +331, +332, +336, +337, +339, +341, +343, +346, +347, +350, +351, +352, +354, +360, +361, +363, +364, +365, +367, +368, +380, +382, +385, +402, +403, +404, +405, +406, +407, +408, +409, +410, +412, +414, +415, +416, +417, +418, +419, +424, +425, +428, +430, +431, +437, +438, +440, +442, +443, +445, +447, +448, +450, +458, +463, +464, +468, +469, +470, +472, +474, +475, +478, +480, +484, +501, +503, +504, +505, +508, +509, +510, +512, +513, +514, +515, +516, +518, +519, +520, +530, +531, +534, +539, +540, +541, +548, +551, +557, +561, +562, +564, +567, +570, +571, +572, +574, +575, +579, +581, +582, +584, +587, +601, +603, +604, +605, +607, +608, +609, +610, +613, +614, +615, +616, +617, +618, +619, +620, +626, +628, +629, +630, +631, +639, +640, +645, +646, +647, +650, +656, +657, +658, +659, +660, +662, +667, +669, +671, +672, +678, +680, +681, +682, +683, +689, +702, +703, +704, +705, +706, +707, +708, +713, +714, +715, +716, +717, +718, +719, +720, +724, +725, +726, +728, +730, +731, +732, +737, +740, +742, +743, +747, +753, +754, +757, +760, +762, +769, +770, +771, +773, +774, +775, +778, +779, +780, +781, +782, +785, +786, +787, +801, +802, +803, +804, +805, +806, +808, +809, +810, +812, +813, +814, +815, +816, +817, +818, +819, +820, +825, +826, +829, +830, +832, +835, +838, +839, +840, +843, +845, +847, +848, +849, +850, +854, +856, +857, +858, +859, +860, +861, +862, +865, +872, +873, +878, +902, +903, +905, +906, +907, +908, +909, +910, +912, +914, +915, +916, +917, +918, +919, +920, +925, +928, +929, +930, +934, +937, +938, +939, +940, +941, +943, +945, +947, +948, +949, +951, +952, +954, +959, +970, +971, +972, +973, +975, +978, +980, +983, +984, +986, +989} +\clist_const:Nn \c_phone_US_sondervorwahlen_clist {500, +521, +522, +523, +524, +525, +526, +527, +528, +533, +544, +566, +577, +588, +600, +622, +700, +710, +800, +833, +844, +855, +866, +877, +888, +900} \tl_const:cn {c_phone_US_ortsname_201_tl} {New~Jersey} \tl_const:cn {c_phone_US_ortsname_202_tl} {Washington,~D.\,C.} \tl_const:cn {c_phone_US_ortsname_203_tl} {Connecticut} @@ -28,6 +834,7 @@ \tl_const:cn {c_phone_US_ortsname_229_tl} {Georgia} \tl_const:cn {c_phone_US_ortsname_231_tl} {Michigan} \tl_const:cn {c_phone_US_ortsname_234_tl} {Ohio} +\tl_const:cn {c_phone_US_ortsname_235_tl} {Missouri} \tl_const:cn {c_phone_US_ortsname_236_tl} {British~Columbia} \tl_const:cn {c_phone_US_ortsname_239_tl} {Florida} \tl_const:cn {c_phone_US_ortsname_240_tl} {Maryland} @@ -43,6 +850,7 @@ \tl_const:cn {c_phone_US_ortsname_256_tl} {Alabama} \tl_const:cn {c_phone_US_ortsname_260_tl} {Indiana} \tl_const:cn {c_phone_US_ortsname_262_tl} {Wisconsin} +\tl_const:cn {c_phone_US_ortsname_263_tl} {Quebec} \tl_const:cn {c_phone_US_ortsname_264_tl} {Anguilla} \tl_const:cn {c_phone_US_ortsname_267_tl} {Pennsylvania} \tl_const:cn {c_phone_US_ortsname_268_tl} {Antigua~and~Barbuda} @@ -53,6 +861,7 @@ \tl_const:cn {c_phone_US_ortsname_276_tl} {Virginia} \tl_const:cn {c_phone_US_ortsname_279_tl} {California} \tl_const:cn {c_phone_US_ortsname_281_tl} {Texas} +\tl_const:cn {c_phone_US_ortsname_283_tl} {Ohio} \tl_const:cn {c_phone_US_ortsname_284_tl} {British~Virgin~Islands} \tl_const:cn {c_phone_US_ortsname_289_tl} {Ontario} \tl_const:cn {c_phone_US_ortsname_301_tl} {Maryland} @@ -76,8 +885,11 @@ \tl_const:cn {c_phone_US_ortsname_320_tl} {Minnesota} \tl_const:cn {c_phone_US_ortsname_321_tl} {Florida} \tl_const:cn {c_phone_US_ortsname_323_tl} {California} +\tl_const:cn {c_phone_US_ortsname_324_tl} {Florida} \tl_const:cn {c_phone_US_ortsname_325_tl} {Texas} \tl_const:cn {c_phone_US_ortsname_326_tl} {Ohio} +\tl_const:cn {c_phone_US_ortsname_327_tl} {Arkansas} +\tl_const:cn {c_phone_US_ortsname_329_tl} {New~York} \tl_const:cn {c_phone_US_ortsname_330_tl} {Ohio} \tl_const:cn {c_phone_US_ortsname_331_tl} {Illinois} \tl_const:cn {c_phone_US_ortsname_332_tl} {New~York} @@ -91,15 +903,19 @@ \tl_const:cn {c_phone_US_ortsname_345_tl} {Cayman~Islands} \tl_const:cn {c_phone_US_ortsname_346_tl} {Texas} \tl_const:cn {c_phone_US_ortsname_347_tl} {New~York} +\tl_const:cn {c_phone_US_ortsname_350_tl} {California} \tl_const:cn {c_phone_US_ortsname_351_tl} {Massachusetts} \tl_const:cn {c_phone_US_ortsname_352_tl} {Florida} +\tl_const:cn {c_phone_US_ortsname_354_tl} {Quebec} \tl_const:cn {c_phone_US_ortsname_360_tl} {Washington} \tl_const:cn {c_phone_US_ortsname_361_tl} {Texas} +\tl_const:cn {c_phone_US_ortsname_363_tl} {New~York} \tl_const:cn {c_phone_US_ortsname_364_tl} {Kentucky} \tl_const:cn {c_phone_US_ortsname_365_tl} {Ontario} \tl_const:cn {c_phone_US_ortsname_367_tl} {Quebec} \tl_const:cn {c_phone_US_ortsname_368_tl} {Alberta} \tl_const:cn {c_phone_US_ortsname_380_tl} {Ohio} +\tl_const:cn {c_phone_US_ortsname_382_tl} {Ontario} \tl_const:cn {c_phone_US_ortsname_385_tl} {Utah} \tl_const:cn {c_phone_US_ortsname_386_tl} {Florida} \tl_const:cn {c_phone_US_ortsname_401_tl} {Rhode~Island} @@ -142,8 +958,10 @@ \tl_const:cn {c_phone_US_ortsname_458_tl} {Oregon} \tl_const:cn {c_phone_US_ortsname_463_tl} {Indiana} \tl_const:cn {c_phone_US_ortsname_464_tl} {Illinois} +\tl_const:cn {c_phone_US_ortsname_468_tl} {Quebec} \tl_const:cn {c_phone_US_ortsname_469_tl} {Texas} \tl_const:cn {c_phone_US_ortsname_470_tl} {Georgia} +\tl_const:cn {c_phone_US_ortsname_472_tl} {North~Carolina} \tl_const:cn {c_phone_US_ortsname_473_tl} {Grenada} \tl_const:cn {c_phone_US_ortsname_474_tl} {Saskatchewan} \tl_const:cn {c_phone_US_ortsname_475_tl} {Connecticut} @@ -178,6 +996,7 @@ \tl_const:cn {c_phone_US_ortsname_541_tl} {Oregon} \tl_const:cn {c_phone_US_ortsname_548_tl} {Ontario} \tl_const:cn {c_phone_US_ortsname_551_tl} {New~Jersey} +\tl_const:cn {c_phone_US_ortsname_557_tl} {Missouri} \tl_const:cn {c_phone_US_ortsname_559_tl} {California} \tl_const:cn {c_phone_US_ortsname_561_tl} {Florida} \tl_const:cn {c_phone_US_ortsname_562_tl} {California} @@ -194,6 +1013,7 @@ \tl_const:cn {c_phone_US_ortsname_580_tl} {Oklahoma} \tl_const:cn {c_phone_US_ortsname_581_tl} {Quebec} \tl_const:cn {c_phone_US_ortsname_582_tl} {Pennsylvania} +\tl_const:cn {c_phone_US_ortsname_584_tl} {Manitoba} \tl_const:cn {c_phone_US_ortsname_585_tl} {New~York} \tl_const:cn {c_phone_US_ortsname_586_tl} {Michigan} \tl_const:cn {c_phone_US_ortsname_587_tl} {Alberta} @@ -226,6 +1046,7 @@ \tl_const:cn {c_phone_US_ortsname_639_tl} {Saskatchewan} \tl_const:cn {c_phone_US_ortsname_640_tl} {New~Jersey} \tl_const:cn {c_phone_US_ortsname_641_tl} {Iowa} +\tl_const:cn {c_phone_US_ortsname_645_tl} {Florida} \tl_const:cn {c_phone_US_ortsname_646_tl} {New~York} \tl_const:cn {c_phone_US_ortsname_647_tl} {Ontario} \tl_const:cn {c_phone_US_ortsname_649_tl} {Turks~and~Caicos~Islands} @@ -248,6 +1069,7 @@ \tl_const:cn {c_phone_US_ortsname_680_tl} {New~York} \tl_const:cn {c_phone_US_ortsname_681_tl} {West~Virginia} \tl_const:cn {c_phone_US_ortsname_682_tl} {Texas} +\tl_const:cn {c_phone_US_ortsname_683_tl} {Ontario} \tl_const:cn {c_phone_US_ortsname_684_tl} {American~Samoa} \tl_const:cn {c_phone_US_ortsname_689_tl} {Florida} \tl_const:cn {c_phone_US_ortsname_701_tl} {North~Dakota} @@ -273,6 +1095,7 @@ \tl_const:cn {c_phone_US_ortsname_725_tl} {Nevada} \tl_const:cn {c_phone_US_ortsname_726_tl} {Texas} \tl_const:cn {c_phone_US_ortsname_727_tl} {Florida} +\tl_const:cn {c_phone_US_ortsname_728_tl} {Florida} \tl_const:cn {c_phone_US_ortsname_730_tl} {Illinois} \tl_const:cn {c_phone_US_ortsname_731_tl} {Tennessee} \tl_const:cn {c_phone_US_ortsname_732_tl} {New~Jersey} @@ -282,6 +1105,7 @@ \tl_const:cn {c_phone_US_ortsname_742_tl} {Ontario} \tl_const:cn {c_phone_US_ortsname_743_tl} {North~Carolina} \tl_const:cn {c_phone_US_ortsname_747_tl} {California} +\tl_const:cn {c_phone_US_ortsname_753_tl} {Ontario} \tl_const:cn {c_phone_US_ortsname_754_tl} {Florida} \tl_const:cn {c_phone_US_ortsname_757_tl} {Virginia} \tl_const:cn {c_phone_US_ortsname_758_tl} {Saint~Lucia} @@ -332,6 +1156,7 @@ \tl_const:cn {c_phone_US_ortsname_830_tl} {Texas} \tl_const:cn {c_phone_US_ortsname_831_tl} {California} \tl_const:cn {c_phone_US_ortsname_832_tl} {Texas} +\tl_const:cn {c_phone_US_ortsname_835_tl} {Pennsylvania} \tl_const:cn {c_phone_US_ortsname_838_tl} {New~York} \tl_const:cn {c_phone_US_ortsname_839_tl} {South~Carolina} \tl_const:cn {c_phone_US_ortsname_840_tl} {California} @@ -347,6 +1172,7 @@ \tl_const:cn {c_phone_US_ortsname_858_tl} {California} \tl_const:cn {c_phone_US_ortsname_859_tl} {Kentucky} \tl_const:cn {c_phone_US_ortsname_860_tl} {Connecticut} +\tl_const:cn {c_phone_US_ortsname_861_tl} {Illinois} \tl_const:cn {c_phone_US_ortsname_862_tl} {New~Jersey} \tl_const:cn {c_phone_US_ortsname_863_tl} {Florida} \tl_const:cn {c_phone_US_ortsname_864_tl} {South~Carolina} @@ -359,7 +1185,6 @@ \tl_const:cn {c_phone_US_ortsname_873_tl} {Quebec} \tl_const:cn {c_phone_US_ortsname_876_tl} {Jamaica} \tl_const:cn {c_phone_US_ortsname_878_tl} {Pennsylvania} -\tl_const:cn {c_phone_US_ortsname_879_tl} {Newfoundland~and~Labrador} \tl_const:cn {c_phone_US_ortsname_901_tl} {Tennessee} \tl_const:cn {c_phone_US_ortsname_902_tl} {Nova~Scotia,~Prince~Edward~Island} \tl_const:cn {c_phone_US_ortsname_903_tl} {Texas} @@ -405,9 +1230,11 @@ \tl_const:cn {c_phone_US_ortsname_971_tl} {Oregon} \tl_const:cn {c_phone_US_ortsname_972_tl} {Texas} \tl_const:cn {c_phone_US_ortsname_973_tl} {New~Jersey} +\tl_const:cn {c_phone_US_ortsname_975_tl} {Missouri} \tl_const:cn {c_phone_US_ortsname_978_tl} {Massachusetts} \tl_const:cn {c_phone_US_ortsname_979_tl} {Texas} \tl_const:cn {c_phone_US_ortsname_980_tl} {North~Carolina} +\tl_const:cn {c_phone_US_ortsname_983_tl} {Colorado} \tl_const:cn {c_phone_US_ortsname_984_tl} {North~Carolina} \tl_const:cn {c_phone_US_ortsname_985_tl} {Louisiana} \tl_const:cn {c_phone_US_ortsname_986_tl} {Idaho} @@ -419,6 +1246,8 @@ \tl_const:cn {c_phone_US_ortsname_524_tl} {Non-Geographic~Service} \tl_const:cn {c_phone_US_ortsname_525_tl} {Non-Geographic~Service} \tl_const:cn {c_phone_US_ortsname_526_tl} {Non-Geographic~Service} +\tl_const:cn {c_phone_US_ortsname_527_tl} {Non-Geographic~Service} +\tl_const:cn {c_phone_US_ortsname_528_tl} {Non-Geographic~Service} \tl_const:cn {c_phone_US_ortsname_533_tl} {Non-Geographic~Service} \tl_const:cn {c_phone_US_ortsname_544_tl} {Non-Geographic~Service} \tl_const:cn {c_phone_US_ortsname_566_tl} {Non-Geographic~Service} @@ -436,3 +1265,384 @@ \tl_const:cn {c_phone_US_ortsname_877_tl} {Toll-Free} \tl_const:cn {c_phone_US_ortsname_888_tl} {Toll-Free} \tl_const:cn {c_phone_US_ortsname_900_tl} {Premium~Service} + +\tl_const:Nn \c_phone_US_landesadjektiv_tl {North~American} +\bool_const:Nn \c_phone_US_erlaubt_durchwahl_bool {\c_false_bool} + +\clist_new:N \c_phone_US_vorwahlen_clist +\clist_concat:NNN \c_phone_US_vorwahlen_clist \c_phone_US_ortsvorwahlen_clist \c_phone_US_sondervorwahlen_clist + +\msg_new:nnn {phonenumbers} {US/illegal home area code} + { + 10-digit~dialling~is~required~in~\tl_use:c {c_phone_US_ortsname_#1_tl}.~#1~cannot~be~set~as~home~area~code~\msg_line_context:. + } + +\msg_new:nnn {phonenumbers} {US/invalid area code} + { + unknown~area~code~#1~in~North~American~phone~number~\msg_line_context: + } + +\msg_new:nnn {phonenumbers} {US/invalid central office code} + { + invalid~central~office~code~#1~in~North~American~phone~number~\msg_line_context: + } + +\bool_new:N \l_phone_US_ferngespraechspraefix_bool + +\keys_define:nn {phonenumbers} + { + trunk-prefix .choices:nn = {on,off} + { + \str_if_eq:VnTF \l_keys_choice_tl {on} + { + \bool_set_true:N \l_phone_US_ferngespraechspraefix_bool + } + { + \bool_set_false:N \l_phone_US_ferngespraechspraefix_bool + } + }, + trunk-prefix .initial:n = off, + trunk-prefix .default:n = on + } + +% Prüfe, ob eine Vorwahl als Heimatvorwahl zulässig ist. +% #1: Heimatvorwahl +\prg_new_protected_conditional:Npnn \phone_US_heimatvorwahl_erlaubt:n #1 {T} + { + \clist_if_in:NnTF \c_phone_US_ortsvorwahlen_clist {#1} + { + % In Nordamerika können nur nicht obligatorische Ortsvorwahlen Heimatvorwahl sein. + \clist_if_in:NnTF \c_phone_US_obligatorische_ortsvorwahlen_clist {#1} + { + \msg_warning:onn {phonenumbers} {US/illegal home area code} {#1} + \prg_return_false: + } + { + \prg_return_true: + } + } + { + \msg_warning:nnn {phonenumbers} {invalid home area code} {#1} + \prg_return_false: + } + } + +% #1: Vorwahl, #2: Folgt eine Rufnummer? +\cs_new_protected:Npn \phone_US_vorwahl_schreiben:nN #1 #2 + { + \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {US} } + { + \bool_lazy_and:nnF { \str_if_eq_p:Vn \l_phone_heimatland_str {US} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} } + { + \bool_if:NTF \l_phone_US_ferngespraechspraefix_bool + { + \tl_put_right:Nx \l_phone_ausgabetext_tl + { + \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place-and-number} + { + \tl_if_exist:cT {c_phone_US_ortsname_#1_tl} + { + \tl_use:c {c_phone_US_ortsname_#1_tl} + \c_space_tl + } + } + + \bool_if:NTF #2 + { + \str_case:VnF \l_phone_vorwahltrennung_str + { + {brackets} {1 \c_space_tl (#1) \c_space_tl} + {space} {1 \c_space_tl #1 \c_space_tl} + } + { + 1 \c_phone_bindestrich_tl #1 \c_phone_bindestrich_tl + } + } + { + \str_case:VnF \l_phone_vorwahltrennung_str + { + {brackets} {1 \c_space_tl (#1)} + {space} {1 \c_space_tl #1} + } + { + 1 \c_phone_bindestrich_tl #1 + } + } + } + } + { + \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place} + { + \clist_if_in:NnT \c_phone_US_sondervorwahlen_clist {#1} + { + \str_set:Nn \l_phone_vorwahldarstellung_str {number} + } + } + + \tl_put_right:Nx \l_phone_ausgabetext_tl + { + \str_case:Vn \l_phone_vorwahldarstellung_str + { + {number} + { + \bool_if:NTF #2 + { + \str_case:VnF \l_phone_vorwahltrennung_str + { + {brackets} {(#1) \c_space_tl} + {space} {#1 \c_space_tl} + } + { + #1 \c_phone_bindestrich_tl + } + } + { + #1 + } + } + {place} + { + \bool_if:NTF #2 + { + \str_case:VnF \l_phone_vorwahltrennung_str + { + {brackets} + { + ( + \tl_if_exist:cTF {c_phone_US_ortsname_#1_tl} + { + \tl_use:c {c_phone_US_ortsname_#1_tl} + } + { + #1 + } + ) + \c_space_tl + } + } + { + \tl_if_exist:cTF {c_phone_US_ortsname_#1_tl} + { + \tl_use:c {c_phone_US_ortsname_#1_tl} + \c_space_tl + } + { + #1 \c_phone_bindestrich_tl + } + } + } + { + \tl_if_exist:cTF {c_phone_US_ortsname_#1_tl} + { + \tl_use:c {c_phone_US_ortsname_#1_tl} + } + { + #1 + } + } + } + {place-and-number} + { + \tl_if_exist:cT {c_phone_US_ortsname_#1_tl} + { + \tl_use:c {c_phone_US_ortsname_#1_tl} + \c_space_tl + } + + \bool_if:NTF #2 + { + \str_case:VnF \l_phone_vorwahltrennung_str + { + {brackets} {(#1) \c_space_tl} + {space} {#1 \c_space_tl} + } + { + #1 \c_phone_bindestrich_tl + } + } + { + \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets} + { + (#1) + } + { + #1 + } + } + } + } + } + } + } + } + { + \phone_ungruppierte_auslandsvorwahl_schreiben:n {1} + + \tl_put_right:Nn \l_phone_ausgabetext_tl {\c_space_tl} + + \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {brackets} + { + \tl_put_right:Nn \l_phone_ausgabetext_tl {(#1)} + } + { + \tl_put_right:Nn \l_phone_ausgabetext_tl {#1} + } + + \bool_if:NT #2 + { + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + } + + % Linktext schreiben, falls eine Rufnummer folgt + \bool_if:NT #2 + { + \str_put_right:Nn \l_phone_linktext_str {+1 #1} + } + } + +\cs_generate_variant:Nn \phone_US_vorwahl_schreiben:nN {VN} + +% #1: Ortsvorwahl, #2: Vermittlungsstellennummer +\cs_new_protected:Npn \phone_US_vermittlungsstellennummer_schreiben:nn #1 #2 + { + \str_case:xnTF { \str_head:n {#2} } + { + {0} { } + {1} { } + } + { + \msg_warning:nnn {phonenumbers} {US/invalid central office code} {#2} + } + { + \bool_set_false:N \l_tmpa_bool % Regionalnummer? + + \tl_if_empty:nTF {#1} + { + \bool_set_true:N \l_tmpa_bool + } + { + \clist_if_in:NnT \c_phone_US_ortsvorwahlen_clist {#1} + { + \bool_set_true:N \l_tmpa_bool + } + } + + \bool_if:NTF \l_tmpa_bool + { + \str_if_eq:xnT { \str_range:nnn {#2} {2} {3} } {11} + { + \msg_warning:nnn {phonenumbers} {US/invalid central office code} {#2} + } + } + { + \str_if_eq:nnT {#2} {911} + { + \msg_warning:nnn {phonenumbers} {US/invalid central office code} {#2} + } + } + } + + \tl_put_right:Nn \l_phone_ausgabetext_tl {#2} + + \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {US} } + { + \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl + } + { + \tl_if_empty:nTF {#1} + { + \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl + } + { + \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl + } + } + + % Linktext schreiben, falls eine Vorwahl vorangeht + \tl_if_empty:nF {#1} + { + \str_put_right:Nn \l_phone_linktext_str {#2} + } + } + +\cs_generate_variant:Nn \phone_US_vermittlungsstellennummer_schreiben:nn {Vx} + +\cs_new_protected:Npn \phone_US_nummer_schreiben: + { + \int_case:nnF { \str_count:N \l_phone_bereinigte_nummer_str } + { + {3} + { + \clist_if_in:NVTF \c_phone_US_vorwahlen_clist \l_phone_bereinigte_nummer_str + { + \msg_warning:nn {phonenumbers} {missing subscriber number} + } + { + \msg_warning:nnV {phonenumbers} {US/invalid area code} \l_phone_bereinigte_nummer_str + } + + \phone_US_vorwahl_schreiben:VN \l_phone_bereinigte_nummer_str \c_false_bool + } + {7} + { + \phone_US_vermittlungsstellennummer_schreiben:Vx \c_empty_tl { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {3} } + + \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:Nnn \l_phone_bereinigte_nummer_str {4} {7} } + } + {10} + { + \str_set:Nx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {3} } + + \clist_if_in:NVF \c_phone_US_vorwahlen_clist \l_tmpa_str + { + \msg_warning:nnx {phonenumbers} {US/invalid area code} {\l_tmpa_str} + } + + \phone_US_vorwahl_schreiben:VN \l_tmpa_str \c_true_bool + + \phone_US_vermittlungsstellennummer_schreiben:Vx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {4} {6} } + + \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:Nnn \l_phone_bereinigte_nummer_str {7} {10} } + \str_put_right:Nx \l_phone_linktext_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {7} {10} } + } + } + { + \int_compare:nNnTF { \str_count:N \l_phone_bereinigte_nummer_str } < {10} + { + \msg_warning:nnnn {phonenumbers} {number too short} {phone} {10} + } + { + \msg_warning:nnnn {phonenumbers} {number too long} {phone} {10} + } + + \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str + } + } + +\cs_new_protected:Npn \phone_US_vorwahlliste_ausgeben:n #1 + { + \begin{tabbing} + \hspace {3em} \= \kill + + \bool_set_false:N \l_phone_zeilenumbruch_bool + + \clist_map_inline:cn {c_phone_US_ #1 _clist} + { + \bool_if:NTF \l_phone_zeilenumbruch_bool + { + \\ + } + { + \bool_gset_true:N \l_phone_zeilenumbruch_bool + } + + ##1 + \> + \tl_if_exist:cT {c_phone_US_ortsname_ ##1 _tl} + { + \tl_use:c {c_phone_US_ortsname_ ##1 _tl} + } + } + \end{tabbing} + } diff --git a/macros/latex/contrib/phonenumbers/tex/phonenumbers.sty b/macros/latex/contrib/phonenumbers/tex/phonenumbers.sty index b1a24faf76..658aaa3b50 100644 --- a/macros/latex/contrib/phonenumbers/tex/phonenumbers.sty +++ b/macros/latex/contrib/phonenumbers/tex/phonenumbers.sty @@ -1,10 +1,8 @@ -% phonenumbers.sty -% LaTeX-Paket zur Formatierung von Telefonnummern +% phonenumbers package: phonenumbers.sty % LaTeX package for formatting telephone numbers -% Autor: K. Wehr -% Version: 2.4 -% Datum: 13. Mai 2022 - +% Author: K. Wehr +% Version: 2.5 +% Date: 2022-07-01 % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. @@ -12,15 +10,230 @@ % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. +\NeedsTeXFormat{LaTeX2e}[2021-11-15] +\ProvidesExplPackage {phonenumbers} {2022-07-01} {2.5} {Telephone number package} - -\ProvidesExplPackage {phonenumbers} {2022-05-13} {2.4} {Telephone number package} - -\RequirePackage{l3keys2e} -\RequirePackage{ltxcmds} +\RequirePackage {l3keys2e} \clist_const:Nn \c_phone_ziffern_clist {0,1,2,3,4,5,6,7,8,9} \clist_const:Nn \c_phone_gliederungszeichen_clist {(,),[,],/} +\clist_const:Nn \c_phone_landeskennzahlen_clist {1, +20, +211, +212, +213, +216, +218, +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, +260, +261, +262, +263, +264, +265, +266, +267, +268, +269, +27, +290, +291, +297, +298, +299, +30, +31, +32, +33, +34, +350, +351, +352, +353, +354, +355, +356, +357, +358, +359, +36, +370, +371, +372, +373, +374, +375, +376, +377, +378, +379, +380, +381, +382, +383, +385, +386, +387, +388, +389, +39, +40, +41, +420, +421, +423, +43, +44, +45, +46, +47, +48, +49, +500, +501, +502, +503, +504, +505, +506, +507, +508, +509, +51, +52, +53, +54, +55, +56, +57, +58, +590, +591, +592, +593, +594, +595, +596, +597, +598, +599, +60, +61, +62, +63, +64, +65, +66, +670, +672, +673, +674, +675, +676, +677, +678, +679, +680, +681, +682, +683, +685, +686, +687, +688, +689, +690, +691, +692, +7, +800, +808, +81, +82, +84, +850, +852, +853, +855, +856, +86, +870, +878, +880, +881, +882, +883, +886, +888, +90, +91, +92, +93, +94, +95, +960, +961, +962, +963, +964, +965, +966, +967, +968, +971, +972, +973, +974, +975, +976, +977, +979, +98, +991, +992, +993, +994, +995, +996, +998} \tl_const:Nn \c_phone_bindestrich_tl { \kern 1pt - \kern 1pt } \tl_const:Nn \c_phone_schraegstrich_tl { \kern 1pt \slash \kern 1pt } @@ -39,8 +252,11 @@ \str_new:N \l_phone_linktext_str \int_new:N \l_phone_ziffernzahl_int -\int_new:N \l_phone_nummerlaenge_int +\int_new:N \l_phone_nummernlaenge_int \int_new:N \l_phone_gruppierungsminimum_int +\int_new:N \l_phone_hauptnummernlaenge_int % Nummernlänge im nationalen Format ohne Durchwahl +\int_new:N \l_phone_vorwahllaenge_int +\int_new:N \l_phone_bindestrichposition_int \tl_new:N \l_phone_ausgabetext_tl \tl_new:N \l_phone_formatierte_nummer_tl @@ -51,6 +267,10 @@ \bool_new:N \l_phone_durchwahl_leer_bool \bool_new:N \l_phone_nummer_verlinken_bool \bool_new:N \l_phone_teilnehmerrufnummer_gueltig_bool +\bool_new:N \l_phone_erstes_zeichen_bool +\bool_new:N \l_phone_zweites_zeichen_bool +\bool_new:N \l_phone_auslandsnummer_bool +\bool_new:N \l_phone_null_am_anfang_bool \cs_generate_variant:Nn \str_if_eq:nnT {xnT} \cs_generate_variant:Nn \str_if_eq:nnF {xnF} @@ -64,7 +284,6 @@ \cs_generate_variant:Nn \msg_warning:nnn {onn} \cs_generate_variant:Nn \msg_warning:nnn {nnV} - \msg_new:nnn {phonenumbers} {illegal character} { illegal~character~'#1'~in~phone~number~ @@ -86,7 +305,13 @@ \msg_new:nnn {phonenumbers} {illegal extension} { extension~(Durchwahl)~of~ - \phone_landesadjektiv:V \l_phone_land_str + \str_if_empty:NTF \l_phone_land_str + { + unsupported + } + { + \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl } + } \c_space_tl phone~number~ignored~ \msg_line_context: @@ -94,7 +319,7 @@ \msg_new:nnn {phonenumbers} {odd extension} { - \phone_landesadjektiv:V \l_phone_land_str + \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl } \c_space_tl non-geographic~number~should~not~contain~an~extension~(Durchwahl)~ \msg_line_context: @@ -103,7 +328,7 @@ \msg_new:nnn {phonenumbers} {subscriber number too short} { subscriber~number~(Teilnehmerrufnummer)~has~less~than~#1~digits~in~ - \phone_landesadjektiv:V \l_phone_land_str + \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl } \c_space_tl phone~number~ \msg_line_context: @@ -112,7 +337,7 @@ \msg_new:nnn {phonenumbers} {subscriber number too long} { subscriber~number~(Teilnehmerrufnummer)~has~more~than~#1~digits~in~ - \phone_landesadjektiv:V \l_phone_land_str + \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl } \c_space_tl phone~number~ \msg_line_context: @@ -121,7 +346,7 @@ \msg_new:nnn {phonenumbers} {illegal start of subscriber number} { subscriber~number~(Teilnehmerrufnummer)~starts~with~#1~in~ - \phone_landesadjektiv:V \l_phone_land_str + \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl } \c_space_tl phone~number~ \msg_line_context: @@ -130,7 +355,7 @@ \msg_new:nnn {phonenumbers} {missing subscriber number} { no~subscriber~number~(Teilnehmerrufnummer)~given~in~ - \phone_landesadjektiv:V \l_phone_land_str + \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl } \c_space_tl phone~number~ \msg_line_context: @@ -139,7 +364,7 @@ \msg_new:nnn {phonenumbers} {invalid area code} { unknown~area~code~(Vorwahl)~in~ - \phone_landesadjektiv:V \l_phone_land_str + \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl } \c_space_tl phone~number~ \msg_line_context: @@ -147,7 +372,7 @@ \msg_new:nnn {phonenumbers} {number too short} { - \phone_landesadjektiv:V \l_phone_land_str + \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl } \c_space_tl #1~number~has~less~than~#2~digits~ \msg_line_context: @@ -155,7 +380,7 @@ \msg_new:nnn {phonenumbers} {number too long} { - \phone_landesadjektiv:V \l_phone_land_str + \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl } \c_space_tl #1~number~has~more~than~#2~digits~ \msg_line_context: @@ -181,7 +406,7 @@ \msg_new:nnn {phonenumbers} {home area code set} { Your~home~is~in~ - \tl_use:c {c_phone_\l_phone_heimatland_str _ortsname_#1_tl} + \tl_use:c { c_phone_ \l_phone_heimatland_str _ortsname_ #1 _tl } \c_space_tl (area~code~#1)~according~to~line~ \msg_line_number:. @@ -198,7 +423,7 @@ \msg_new:nnn {phonenumbers} {invalid home area code} { #1~unknown~as~ - \phone_landesadjektiv:V \l_phone_heimatland_str + \use:c { c_phone_ \l_phone_heimatland_str _landesadjektiv_tl } \c_space_tl geographic~area~code~(Ortsvorwahl)~ \msg_line_context: @@ -216,24 +441,6 @@ \msg_line_context: } -\cs_new:Npn \phone_landesadjektiv:n #1 - { - \str_case:nnF {#1} - { - {DE} {German} - {AT} {Austrian} - {FR} {French} - {UK} {British} - {US} {North~American} - } - { - unsupported - } - } - -\cs_generate_variant:Nn \phone_landesadjektiv:n {V} - - \keys_define:nn {phonenumbers} { country .choices:nn = {DE,AT,FR,UK,US} @@ -331,7 +538,7 @@ { home-area-code .code:n = { - \str_if_eq:nnTF {#1}{none} + \str_if_eq:nnTF {#1} {none} { \str_if_empty:NF \l_phone_heimatvorwahl_str { @@ -346,7 +553,7 @@ \msg_info:nn {phonenumbers} {home country set} } - \phone_heimatvorwahl_erlaubt:nT {#1} + \use:c { phone_ \l_phone_heimatland_str _heimatvorwahl_erlaubt:nT } {#1} { % Auslassen der Vorwahl möglich, Heimatvorwahl setzen: \str_set:Nn \l_phone_heimatvorwahl_str {#1} @@ -368,57 +575,6 @@ group-min .value_required:n = true } - -% Prüfe, ob eine Vorwahl als Heimatvorwahl zulässig ist. -% #1: Heimatvorwahl -\prg_new_protected_conditional:Npnn \phone_heimatvorwahl_erlaubt:n #1 {T} - { - \clist_if_in:cnTF {c_phone_\l_phone_heimatland_str _ortsvorwahlen_clist} {#1} - { - \str_case:VnF \l_phone_heimatland_str - { - % alle deutschen Ortsvorwahlen können Heimatvorwahl sein - {DE} { \prg_return_true: } - % alle österreichischen Ortsvorwahlen können Heimatvorwahl sein - {AT} { \prg_return_true: } - % in Frankreich kann nur 0508 Heimatvorwahl sein - {FR} - { - \str_if_eq:nnTF {#1} {0508} { \prg_return_true: } - { - \msg_warning:nnn {phonenumbers} {FR/illegal home area code} {#1} - \prg_return_false: - } - } - } - { - % Name der Liste mit den obligatorischen Ortsvorwahlen - \str_set:Nx \l_tmpa_str {c_phone_\l_phone_heimatland_str _obligatorische_ortsvorwahlen_clist} - - % in anderen Ländern können nur nicht obligatorische Ortsvorwahlen Heimatvorwahl sein - \clist_if_exist:cTF {\l_tmpa_str} - { - \clist_if_in:cnTF {\l_tmpa_str} {#1} - { - \msg_warning:onn {phonenumbers} {\l_phone_heimatland_str/illegal home area code} {#1} - \prg_return_false: - } - { - \prg_return_true: - } - } - { - \prg_return_true: - } - } - } - { - \msg_warning:nnn {phonenumbers} {invalid home area code} {#1} - \prg_return_false: - } - } - - % einen Nummernteil von vorne in Zweiergruppen gruppiert schreiben, sofern er nicht kürzer als das Gruppierungsminimum ist \cs_new_protected:Npn \phone_von_vorne_gruppiert_schreiben:n #1 { @@ -446,8 +602,7 @@ \cs_generate_variant:Nn \phone_von_vorne_gruppiert_schreiben:n {x,V} - -% einen Nummernteil von in Zweiergruppen gruppiert mit führender Einzelziffer schreiben, sofern er nicht kürzer als das Gruppierungsminimum ist +% einen Nummernteil in Zweiergruppen gruppiert mit führender Einzelziffer schreiben, sofern er nicht kürzer als das Gruppierungsminimum ist \cs_new_protected:Npn \phone_versetzt_gruppiert_schreiben:n #1 { \int_set:Nn \l_phone_ziffernzahl_int { \tl_count:n {#1} } @@ -474,7 +629,6 @@ \cs_generate_variant:Nn \phone_versetzt_gruppiert_schreiben:n {x} - % einen Nummernteil von hinten in Zweiergruppen gruppiert schreiben, sofern er nicht kürzer als das Gruppierungsminimum ist \cs_new_protected:Npn \phone_von_hinten_gruppiert_schreiben:n #1 { @@ -502,47 +656,51 @@ \cs_generate_variant:Nn \phone_von_hinten_gruppiert_schreiben:n {x,V} +% #1: Vorwahl, #2: Soll die führende Null ausgegeben werden? +\cs_new_protected:Npn \phone_geklammerte_ziffernvorwahl_schreiben:nN #1#2 + { + % Klammern werden nur bei Ortsvorwahlen gesetzt + \clist_if_in:cnTF { c_phone_ \l_phone_land_str _ortsvorwahlen_clist } {#1} + { + \tl_put_right:Nn \l_phone_ausgabetext_tl {(} + \use:c { phone_ \l_phone_land_str _ziffernvorwahl_schreiben:nN } {#1} #2 + \tl_put_right:Nn \l_phone_ausgabetext_tl {)} + } + { + \use:c { phone_ \l_phone_land_str _ziffernvorwahl_schreiben:nN } {#1} #2 + } + } % #1: Landeskennzahl -\cs_new_protected:Npn \phone_auslandsvorwahl_schreiben:n #1 +\cs_new_protected:Npn \phone_gruppierte_auslandsvorwahl_schreiben:n #1 { - \str_case:VnTF \l_phone_land_str + \str_case:Vn \l_phone_auslandsvorwahltyp_str { - {DE} { } - {AT} { } - {FR} { } + {international} { \tl_put_right:Nn \l_phone_ausgabetext_tl { \c_phone_pluszeichen_tl #1 } } + {european} { \phone_von_hinten_gruppiert_schreiben:n { 00 #1 } } + {american} { \phone_von_hinten_gruppiert_schreiben:n { 011 #1 } } } + } + +\cs_generate_variant:Nn \phone_gruppierte_auslandsvorwahl_schreiben:n {x} + +% #1: Landeskennzahl +\cs_new_protected:Npn \phone_ungruppierte_auslandsvorwahl_schreiben:n #1 + { + \tl_put_right:Nx \l_phone_ausgabetext_tl { - \str_case:Vn \l_phone_auslandsvorwahltyp_str + \str_case:VnF \l_phone_auslandsvorwahltyp_str { - {international} { \tl_put_right:Nn \l_phone_ausgabetext_tl { \c_phone_pluszeichen_tl #1 } } - {european} { \phone_von_hinten_gruppiert_schreiben:n {00#1} } - {american} { \phone_von_hinten_gruppiert_schreiben:n {011#1} } + {european} { 00 #1 } + {american} { 011 #1 } } - } - { - \tl_put_right:Nx \l_phone_ausgabetext_tl { - \str_case:VnF \l_phone_auslandsvorwahltyp_str - { - {european} {00 #1} - {american} {011 #1} - } - { - \c_phone_pluszeichen_tl #1 - } + \c_phone_pluszeichen_tl #1 } } } -\cs_generate_variant:Nn \phone_auslandsvorwahl_schreiben:n {x,V} - - -\bool_new:N \l_phone_erstes_zeichen_bool -\bool_new:N \l_phone_zweites_zeichen_bool -\bool_new:N \l_phone_auslandsnummer_bool -\bool_new:N \l_phone_null_am_anfang_bool -\int_new:N \l_phone_bindestrichposition_int +\cs_generate_variant:Nn \phone_ungruppierte_auslandsvorwahl_schreiben:n {V} % #1: eingebene Nummer \cs_new_protected:Npn \phone_nummer_ueberpruefen:n #1 @@ -662,7 +820,7 @@ } } { - \str_clear:N \l_phone_land_str % Länge 3, nicht mit 49 oder 33 beginnend + \str_clear:N \l_phone_land_str % Länge 3, nicht mit 33, 43, 44 oder 49 beginnend } } } @@ -676,15 +834,14 @@ } } - \bool_lazy_and:nnT + \bool_lazy_all:nT { - \bool_lazy_or_p:nn { \str_if_eq_p:Vn \l_phone_land_str {DE} } { \str_if_eq_p:Vn \l_phone_land_str {AT} } + { ! \str_if_empty_p:N \l_phone_land_str } + { \bool_if_p:c { c_phone_ \l_phone_land_str _erlaubt_durchwahl_bool } } + { \str_if_empty_p:N \l_phone_bereinigte_durchwahl_str } } { - \str_if_empty_p:N \l_phone_bereinigte_durchwahl_str - } - { - % deutsche oder österreichische Nummer ohne explizite Durchwahl + % Nummer ohne explizite Durchwahl in einem Land, das Durchwahlen erlaubt \int_set:Nn \l_phone_bindestrichposition_int {-1} \int_step_inline:nnnn { \str_count:N \l_phone_bereinigte_nummer_str } {-1} {1} @@ -733,7 +890,6 @@ \cs_generate_variant:Nn \phone_nummer_ueberpruefen:n {x} - % #1: eingebene Durchwahl \cs_new_protected:Npn \phone_durchwahl_ueberpruefen:n #1 { @@ -762,27 +918,22 @@ \cs_generate_variant:Nn \phone_durchwahl_ueberpruefen:n {x} - \cs_new_protected:Npn \phone_nummer_ausgeben: { \bool_if:NF \l_phone_eingabe_leer_bool { - \str_case:VnF \l_phone_land_str + \str_if_empty:NTF \l_phone_land_str { - {DE} {\phone_DE_AT_nummer_schreiben:} - {AT} {\phone_DE_AT_nummer_schreiben:} - {FR} {\phone_FR_nummer_schreiben:} - {UK} {\phone_UK_nummer_schreiben:} - {US} {\phone_US_nummer_schreiben:} + \phone_nicht_unterstuetzte_nummer_schreiben: } { - \phone_SONST_nummer_schreiben: + \use:c {phone_ \l_phone_land_str _nummer_schreiben:} } } \bool_lazy_and:nnTF {\l_phone_nummer_verlinken_bool} { ! \str_if_empty_p:N \l_phone_linktext_str } { - \ltx@ifpackageloaded {hyperref} + \IfPackageLoadedTF {hyperref} { \href { tel \c_colon_str \l_phone_linktext_str } {\l_phone_ausgabetext_tl} } @@ -795,63 +946,6 @@ } } -\cs_new_protected:Npn \phone_vorwahlliste_ausgeben:n #1 - { - \begin{tabbing} - \str_case:VnF \l_phone_land_str - { - {US} { \hspace {3em} } - } - { - \hspace {4em} - } - \= - \kill - - \bool_set_false:N \l_phone_zeilenumbruch_bool - - \clist_map_inline:cn {c_phone_\l_phone_land_str _#1_clist} - { - \bool_if:NTF \l_phone_zeilenumbruch_bool - { - \\ - } - { - \bool_gset_true:N \l_phone_zeilenumbruch_bool - } - - \str_case:VnTF \l_phone_land_str - { - {DE} { } - {AT} { } - {UK} { } - } - { - \phone_gruppierte_vorwahl_schreiben:nN {##1} \c_true_bool - \tl_use:N \l_phone_ausgabetext_tl - } - { - \bool_if:nTF { \str_if_eq_p:Vn \l_phone_land_str {FR} } - { - \phone_von_vorne_gruppiert_schreiben:n {##1} - \tl_use:N \l_phone_ausgabetext_tl - } - { - ##1 - } - } - \> - \tl_if_exist:cTF {c_phone_\l_phone_land_str _ortsname_##1_tl} - { - \tl_use:c {c_phone_\l_phone_land_str _ortsname_##1_tl} - } - { - UNKNOWN~PLACE - } - } - \end{tabbing} - } - \NewDocumentCommand \setphonenumbers {m} { \keys_set:no {phonenumbers} {#1} @@ -874,7 +968,9 @@ \IfValueT {#3} { - \bool_lazy_or:nnF { \str_if_eq_p:Vn \l_phone_land_str {DE} } { \str_if_eq_p:Vn \l_phone_land_str {AT} } + \bool_lazy_or:nnT + { \str_if_empty_p:N \l_phone_land_str } + { ! \bool_if_p:c { c_phone_ \l_phone_land_str _erlaubt_durchwahl_bool } } { \bool_if:NF \l_phone_durchwahl_leer_bool { @@ -895,7 +991,7 @@ \keys_set:no {phonenumbers} {#1} } - \phone_vorwahlliste_ausgeben:n {ortsvorwahlen} + \use:c { phone_ \l_phone_land_str _vorwahlliste_ausgeben:n } {ortsvorwahlen} \group_end: } @@ -907,12 +1003,10 @@ \keys_set:no {phonenumbers} {#1} } - \phone_vorwahlliste_ausgeben:n {sondervorwahlen} + \use:c { phone_ \l_phone_land_str _vorwahlliste_ausgeben:n } {sondervorwahlen} \group_end: } -\file_input:n {phn-Landeskennzahlen} - \NewDocumentCommand \CountryCodes { } { \bool_set_false:N \l_phone_zeilenumbruch_bool @@ -931,25 +1025,22 @@ } } - -\int_new:N \l_phone_pruefnummerlaenge_int - % #1: Nummer, die auf Enthaltensein einer Vorwahl überprüft wird \prg_new_protected_conditional:Npnn \phone_enthaelt_vorwahl:N #1 {TF,T} { \bool_set_false:N \l_phone_vorwahl_gefunden_bool - \int_set:Nn \l_phone_pruefnummerlaenge_int { \str_count:N #1 } + \int_set:Nn \l_phone_nummernlaenge_int { \str_count:N #1 } \int_step_inline:nnnn {6} {-1} {2} { \bool_if:NF \l_phone_vorwahl_gefunden_bool { - \int_compare:nT { \l_phone_pruefnummerlaenge_int >= ##1 } + \int_compare:nT { \l_phone_nummernlaenge_int >= ##1 } { \str_set:Nx \l_phone_vorwahl_str { \str_range:Nnn #1 {1} {##1} } - \clist_if_in:cVT {c_phone_\l_phone_land_str _vorwahlen_clist} \l_phone_vorwahl_str + \clist_if_in:cVT { c_phone_ \l_phone_land_str _vorwahlen_clist } \l_phone_vorwahl_str { \bool_set_true:N \l_phone_vorwahl_gefunden_bool } @@ -966,108 +1057,6 @@ } } - -% #1: Vorwahl, #2: Soll die führende null ausgegeben werden? -\cs_new_protected:Npn \phone_gruppierte_vorwahl_schreiben:nN #1#2 - { - \str_if_eq:VnTF \l_phone_land_str {UK} - { - % britische Vorwahl - \int_compare:nNnTF { \str_count:n {#1} } = {6} - { - % sechsstellige britische Vorwahl: Gliederung vor der zweitletzten Ziffer - \bool_if:NTF #2 - { - \int_compare:nNnTF {\l_phone_gruppierungsminimum_int} > {6} - { - \tl_put_right:Nn \l_phone_ausgabetext_tl {#1} - } - { - \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {1} {4} } - \tl_put_right:Nn \l_phone_ausgabetext_tl {\,} - \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {5} {6} } - } - } - { - \int_compare:nNnTF {\l_phone_gruppierungsminimum_int} > {5} - { - \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_tail:n {#1} } - } - { - \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {2} {4} } - \tl_put_right:Nn \l_phone_ausgabetext_tl {\,} - \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {5} {6} } - } - } - } - { - % nicht sechsstellige britische Vorwahl - \bool_if:NTF #2 - { - \tl_put_right:Nn \l_phone_ausgabetext_tl {#1} - } - { - \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_tail:n {#1} } - } - } - } - { - % nichtbritische Vorwahl - \bool_lazy_and:nnTF { \str_if_eq_p:Vn \l_phone_land_str {DE} } { \int_compare_p:nNn { \str_count:n {#1} } = {5} } - { - \str_set:Nx \l_tmpa_str { \str_range:nnn {#1} {1} {4} } - - % fünfstellige deutsche Vorwahl - \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_tmpa_str {0137} } { \str_if_eq_p:Vn \l_tmpa_str {0180} } - { - % fünfstellige deutsche Vorwahl mit Tarifkennung: letzte Ziffer steht allein - \bool_if:NTF #2 - { - \phone_von_vorne_gruppiert_schreiben:n {#1} - } - { - \phone_versetzt_gruppiert_schreiben:x { \str_tail:n {#1} } - } - } - { - % fünfstellige deutsche Vorwahl ohne Tarifkennung - \bool_if:NTF #2 - { - \phone_von_hinten_gruppiert_schreiben:n {#1} - } - { - \phone_von_hinten_gruppiert_schreiben:x { \str_tail:n {#1} } - } - } - } - { - % sonstige Vorwahl - \bool_if:NTF #2 - { - \phone_von_hinten_gruppiert_schreiben:n {#1} - } - { - \phone_von_hinten_gruppiert_schreiben:x { \str_tail:n {#1} } - } - } - } - } - -% #1: Vorwahl, #2: Soll die führende null ausgegeben werden? -\cs_new_protected:Npn \phone_geklammerte_vorwahl_schreiben:nN #1#2 - { - % Klammern werden nur bei Ortsvorwahlen gesetzt - \clist_if_in:cnTF {c_phone_\l_phone_land_str _ortsvorwahlen_clist} {#1} - { - \tl_put_right:Nn \l_phone_ausgabetext_tl {(} - \phone_gruppierte_vorwahl_schreiben:nN {#1} #2 - \tl_put_right:Nn \l_phone_ausgabetext_tl {)} - } - { - \phone_gruppierte_vorwahl_schreiben:nN {#1} #2 - } - } - % #1: Nummer, #2: Mindestlänge, #3: Höchstlänge, #4: Nummernart \cs_new_protected:Npn \phone_nummernlaenge_ueberpruefen:nnnn #1#2#3#4 { @@ -1090,1423 +1079,9 @@ \cs_generate_variant:Nn \phone_nummernlaenge_ueberpruefen:nnnn {V,o} - -%%%%%%%%%%%%%%%%%%%% DEUTSCHLAND %%%%%%%%%%%%%%%%%%%% - -\file_input:n {phn-DE_Vorwahlen} -\file_input:n {phn-DE_Ortsnamen} - -\clist_new:N \c_phone_DE_vorwahlen_clist -\clist_concat:NNN \c_phone_DE_vorwahlen_clist \c_phone_DE_ortsvorwahlen_clist \c_phone_DE_sondervorwahlen_clist - - -% #1: Vorwahl, #2: Folgt eine Rufnummer? -\cs_new_protected:Npn \phone_DE_AT_vorwahl_schreiben:nn #1 #2 - { - \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:NN \l_phone_heimatland_str \l_phone_land_str } - { - \clist_if_in:cnT {c_phone_\l_phone_land_str _sondervorwahlen_clist} {#1} - { - \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place} - { - \str_set:Nn \l_phone_vorwahldarstellung_str {number} - } - } - - \bool_lazy_and:nnF { \str_if_eq_p:NN \l_phone_heimatland_str \l_phone_land_str } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} } - { - \str_case:Vn \l_phone_vorwahldarstellung_str - { - {number} - { - \bool_if:nTF {#2} - { - \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets} - { - \phone_geklammerte_vorwahl_schreiben:nN {#1} \c_true_bool - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - } - { - \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool - - \tl_put_right:Nx \l_phone_ausgabetext_tl - { - \str_case:VnF \l_phone_vorwahltrennung_str - { - {space} {\c_space_tl} - {hyphen} {\c_phone_bindestrich_tl} - } - { - \c_phone_schraegstrich_tl - } - } - } - } - { - \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool - } - } - {place} - { - \bool_if:nTF {#2} - { - \str_if_eq:VnT \l_phone_vorwahltrennung_str {brackets} - { - \tl_put_right:Nn \l_phone_ausgabetext_tl {(} - } - - \tl_if_exist:cTF {c_phone_\l_phone_land_str _ortsname_#1_tl} - { - \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_\l_phone_land_str _ortsname_#1_tl} - } - { - \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool - } - - \tl_put_right:Nx \l_phone_ausgabetext_tl - { - \str_case:VnF \l_phone_vorwahltrennung_str - { - {brackets} {) \c_space_tl} - {space} {\c_space_tl} - {hyphen} {\c_phone_bindestrich_tl} - } - { - \c_phone_schraegstrich_tl - } - } - } - { - \tl_if_exist:cTF {c_phone_\l_phone_land_str _ortsname_#1_tl} - { - \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_\l_phone_land_str _ortsname_#1_tl} - } - { - \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool - } - } - } - {place-and-number} - { - \tl_if_exist:cT {c_phone_\l_phone_land_str _ortsname_#1_tl} - { - \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_\l_phone_land_str _ortsname_#1_tl} - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - } - - \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets} - { - \phone_geklammerte_vorwahl_schreiben:nN {#1} \c_true_bool - - \bool_if:nT {#2} - { - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - } - } - { - \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool - - \bool_if:nT {#2} - { - \tl_put_right:Nx \l_phone_ausgabetext_tl - { - \str_case:VnF \l_phone_vorwahltrennung_str - { - {space} {\c_space_tl} - {hyphen} {\c_phone_bindestrich_tl} - } - { - \c_phone_schraegstrich_tl - } - } - } - } - } - } - } - } - { - \str_if_eq:VnTF \l_phone_land_str {DE} - { - \phone_auslandsvorwahl_schreiben:n {49} - } - { - \phone_auslandsvorwahl_schreiben:n {43} - } - - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - - \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {brackets} - { - \phone_geklammerte_vorwahl_schreiben:nN {#1} \c_false_bool - } - { - \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_false_bool - } - - \bool_if:nT {#2} - { - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - } - } - - % Linktext schreiben, falls eine Rufnummer folgt - \bool_if:nT {#2} - { - \str_put_right:Nx \l_phone_linktext_str - { - \str_if_eq:VnTF \l_phone_land_str {DE} {+49} {+43} - } - \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} } - } - } - -\cs_generate_variant:Nn \phone_DE_AT_vorwahl_schreiben:nn {Vx} - - -% #1: Vorwahl, #2: Teilnehmerrufnummer -\cs_new_protected:Npn \phone_DE_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1#2 - { - \int_set:Nn \l_tmpa_int { \str_count:N #1 } - \int_add:Nn \l_tmpa_int { \str_count:n {#2} } - \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str } - - \int_compare:nNnTF {\l_tmpa_int} > {13} - { - % Gesamtnummer hat mehr als 13 Stellen - \msg_warning:nnnn {phonenumbers} {number too long} {landline} {13} - } - { - \int_set:Nn \l_tmpa_int { \str_count:n {#2} } - \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str } - - \int_compare:nNnTF {\l_tmpa_int} < {3} - { - % Teilnehmerrufnummer hat weniger als 3 Stellen - \msg_warning:nnn {phonenumbers} {subscriber number too short} {3} - } - { - \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool - } - } - } - -% #1: Nummer -\cs_new_protected:Npn \phone_DE_MABEZnummernlaenge_ueberpruefen:N #1 - { - \int_set:Nn \l_tmpa_int { \str_count:N #1 } - \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str } - - \int_compare:nNnTF {\l_tmpa_int} > {11} - { - % Gesamtnummer hat mehr als 11 Stellen - \msg_warning:nnnn {phonenumbers} {number too long} {0137~(MABEZ)} {11} - } - { - \int_compare:nNnTF {\l_tmpa_int} < {11} - { - % Gesamtnummer hat weniger als 11 Stellen - \msg_warning:nnnn {phonenumbers} {number too short} {0137~(MABEZ)} {11} - } - { - \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool - } - } - } - -% #1: Vorwahl, #2: Teilnehmerrufnummer -\cs_new_protected:Npn \phone_DE_teilnehmerrufnummer_schreiben:Nn #1 #2 - { - % Überprüfen der Nummernlänge - \str_if_empty:NTF #1 - { - % Festnetznummer ohne Vorwahl - \bool_if:NF \l_phone_eingabe_leer_bool - { - \phone_DE_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1 {#2} - } - } - { - \clist_if_in:NVTF \c_phone_DE_ortsvorwahlen_clist #1 - { - % Festnetznummer - \str_if_eq:xnTF { \str_head:n {#2} } {0} - { - \msg_warning:nnn {phonenumbers} {illegal start of subscriber number} {0} - } - { - \phone_DE_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1 {#2} - } - } - { - % Mobilfunk-/Sondernummer - \str_set_eq:NN \l_tmpa_str #1 - \str_put_right:Nn \l_tmpa_str {#2} - - \str_if_eq:xnTF { \str_range:Nnn #1 {1} {5} } {09009} - { - \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {09009} - } - { - \str_case:xnF { \str_range:Nnn #1 {1} {4} } - { - {0137} { \phone_DE_MABEZnummernlaenge_ueberpruefen:N \l_tmpa_str } - {0160} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} } - {0162} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} } - {0163} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} } - {0164} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0164} } % Funkruf - {0168} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {15} {0168} } % Funkruf - {0169} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {15} {0169} } % Funkruf - {0180} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {11} {0180} } - {0181} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {8} {15} {0181} } - {0191} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0191} } - {0192} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0192} } - {0193} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0193} } - {0194} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {7} {14} {0194} } - {0700} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {0700} } - {0800} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {14} {freephone} } - {0900} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {11} {premium~service} } - } - { - \str_case:xn {\str_range:Nnn #1 {1} {3}} - { - {015} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {mobile~phone} } - {017} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} } - {018} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {018} } - {032} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {032} } - } - } - } - - \str_if_empty:NF \l_phone_bereinigte_durchwahl_str - { - % Mobilfunk- und Sondernummern dürfen keine Durchwahl enthalten (ausgenommen MABEZ-Nummern) - \str_if_eq:xnF { \str_range:Nnn #1 {1} {4} } {0137} - { - \msg_warning:nn {phonenumbers} {odd extension} - } - } - } - - \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool - { - % Für gültige Nummern mit Vorwahl Linktext schreiben: - \str_put_right:Nn \l_phone_linktext_str {#2} - \str_put_right:NV \l_phone_linktext_str \l_phone_bereinigte_durchwahl_str - } - { - % Für ungültige Nummern mit Vorwahl Linktext löschen: - \str_clear:N \l_phone_linktext_str - } - } - - \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool - { - \phone_von_hinten_gruppiert_schreiben:n {#2} - } - { - \str_put_right:Nn \l_phone_ausgabetext_tl {#2} - } - - \str_if_empty:NF \l_phone_bereinigte_durchwahl_str - { - \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl - \phone_von_hinten_gruppiert_schreiben:V \l_phone_bereinigte_durchwahl_str - } - } - -\cs_generate_variant:Nn \phone_DE_teilnehmerrufnummer_schreiben:Nn {Nx,NV} - - -\int_new:N \l_phone_DE_AT_hauptnummerlaenge_int -\int_new:N \l_phone_DE_AT_vorwahllaenge_int - -\cs_new_protected:Npn \phone_DE_AT_nummer_schreiben: - { - \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0} - { - \phone_enthaelt_vorwahl:NTF \l_phone_bereinigte_nummer_str - { - \int_set:Nn \l_phone_DE_AT_hauptnummerlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str } - \int_set:Nn \l_phone_DE_AT_vorwahllaenge_int { \str_count:N \l_phone_vorwahl_str } - - \phone_DE_AT_vorwahl_schreiben:Vx \l_phone_vorwahl_str - { - \int_compare_p:nNn {\l_phone_DE_AT_vorwahllaenge_int} < {\l_phone_DE_AT_hauptnummerlaenge_int} - } - - \int_compare:nNnTF {\l_phone_DE_AT_vorwahllaenge_int} = {\l_phone_DE_AT_hauptnummerlaenge_int} - { - \msg_warning:nn {phonenumbers} {missing subscriber number} - } - { - \use:c {phone_\l_phone_land_str _teilnehmerrufnummer_schreiben:Nx} \l_phone_vorwahl_str - { - \str_range:Nnn \l_phone_bereinigte_nummer_str { \l_phone_DE_AT_vorwahllaenge_int + 1 } {-1} - } - } - } - { - \msg_warning:nn {phonenumbers} {invalid area code} - \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str - \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_durchwahl_str - } - } - { - \use:c {phone_\l_phone_land_str _teilnehmerrufnummer_schreiben:NV} \c_empty_tl \l_phone_bereinigte_nummer_str - } - } - - -%%%%%%%%%%%%%%%%%%%% ÖSTERREICH %%%%%%%%%%%%%%%%%%%% - -\file_input:n {phn-AT_Vorwahlen} -\file_input:n {phn-AT_Ortsnamen} - -\clist_new:N \c_phone_AT_vorwahlen_clist -\clist_concat:NNN \c_phone_AT_vorwahlen_clist \c_phone_AT_ortsvorwahlen_clist \c_phone_AT_sondervorwahlen_clist - - -% #1: Vorwahl, #2: Teilnehmerrufnummer -\cs_new_protected:Npn \phone_AT_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1#2 - { - \int_set:Nn \l_tmpa_int { \str_count:N #1 } - \int_add:Nn \l_tmpa_int { \str_count:n {#2} } - \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str } - - \int_compare:nNnTF {\l_tmpa_int} > {13} - { - % Gesamtnummer hat mehr als 13 Stellen - \msg_warning:nnnn {phonenumbers} {number too long} {landline} {13} - } - { - \int_set:Nn \l_tmpa_int { \str_count:n {#2} } - \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str } - - \int_compare:nNnTF {\l_tmpa_int} < {5} - { - % Teilnehmerrufnummer hat weniger als 5 Stellen - \msg_warning:nnn {phonenumbers} {subscriber number too short} {5} - } - { - \bool_lazy_and:nnTF { \str_if_eq_p:Vn #1 {01} } { \int_compare_p:nNn {\l_tmpa_int} < {7} } - { - % Wiener Teilnehmerrufnummer hat weniger als 7 Stellen - \msg_warning:nnn {phonenumbers} {subscriber number too short} {7} - } - { - \bool_lazy_and:nnTF - { - \bool_lazy_any_p:n - { - { \str_if_eq_p:Vn #1 {02236} } - { \str_if_eq_p:Vn #1 {02252} } - { \str_if_eq_p:Vn #1 {0316} } - { \str_if_eq_p:Vn #1 {0463} } - { \str_if_eq_p:Vn #1 {0512} } - { \str_if_eq_p:Vn #1 {05572} } - { \str_if_eq_p:Vn #1 {0662} } - { \str_if_eq_p:Vn #1 {07242} } - { \str_if_eq_p:Vn #1 {0732} } - } - } - { - \int_compare_p:nNn {\l_tmpa_int} < {6} - } - { - % Teilnehmerrufnummer in bestimmten Ortsnetzen hat weniger als 6 Stellen - \msg_warning:nnn {phonenumbers} {subscriber number too short} {6} - } - { - \int_compare:nNnTF {\l_tmpa_int} > {9} - { - % Teilnehmerrufnummer hat mehr als 9 Stellen - \msg_warning:nnn {phonenumbers} {subscriber number too long} {9} - } - { - \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool - } - } - } - } - } - } - -% #1: Vorwahl, #2: Teilnehmerrufnummer -\cs_new_protected:Npn \phone_AT_festnetzteilnehmerrufnummer_ueberpruefen:Nn #1#2 - { - \str_set:Nx \l_tmpa_str { \str_head:n {#2} } - - \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_tmpa_str {0} } { \str_if_eq_p:Vn \l_tmpa_str {1} } - { - \msg_warning:nnV {phonenumbers} {illegal start of subscriber number} \l_tmpa_str - } - { - \phone_AT_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1 {#2} - } - } - -% #1: Vorwahl, #2: Teilnehmerrufnummer -\cs_new_protected:Npn \phone_AT_teilnehmerrufnummer_schreiben:Nn #1 #2 - { - \str_if_empty:NTF #1 - { - % Festnetznummer ohne Vorwahl - \bool_if:NF \l_phone_eingabe_leer_bool - { - \phone_AT_festnetzteilnehmerrufnummer_ueberpruefen:Nn #1 {#2} - } - } - { - \clist_if_in:NVTF \c_phone_AT_ortsvorwahlen_clist #1 - { - % Festnetznummer mit Vorwahl - \phone_AT_festnetzteilnehmerrufnummer_ueberpruefen:Nn #1 {#2} - } - { - % Mobilfunk-/Sondernummer - \str_set_eq:NN \l_tmpa_str #1 - \str_put_right:Nn \l_tmpa_str {#2} - - \str_case:VnF #1 - { - {0517} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} } - {0718} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {dial~up} } - {0720} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {location~independant} } - {0780} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {convergent~service} } - {0800} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {freephone} } - {0804} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {dial~up} } - {0810} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} } - {0820} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} } - {0821} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} } - {0828} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} } - {0900} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} } - {0901} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} } - {0930} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} } - {0931} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} } - {0939} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} } - } - { - \str_case:xn { \str_range:Nnn #1 {1} {3} } - { - {050} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} } - {057} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} } - {059} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} } - {065} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} } - {066} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} } - {067} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} } - {068} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} } - {069} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} } - } - } - - \str_if_empty:NF \l_phone_bereinigte_durchwahl_str - { - \msg_warning:nn {phonenumbers} {odd extension} - } - } - - \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool - { - % Für gültige Nummern mit Vorwahl Linktext schreiben: - \str_put_right:Nn \l_phone_linktext_str {#2} - \str_put_right:NV \l_phone_linktext_str \l_phone_bereinigte_durchwahl_str - } - { - % Für ungültige Nummern mit Vorwahl Linktext löschen: - \str_clear:N \l_phone_linktext_str - } - } - - \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool - { - \phone_von_hinten_gruppiert_schreiben:n {#2} - } - { - \str_put_right:Nn \l_phone_ausgabetext_tl {#2} - } - - \str_if_empty:NF \l_phone_bereinigte_durchwahl_str - { - \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl - \phone_von_hinten_gruppiert_schreiben:V \l_phone_bereinigte_durchwahl_str - } - } - -\cs_generate_variant:Nn \phone_AT_teilnehmerrufnummer_schreiben:Nn {Nx,NV} - - -%%%%%%%%%%%%%%%%%%%% FRANKREICH %%%%%%%%%%%%%%%%%%%% - -\file_input:n {phn-FR_Vorwahlen} -\file_input:n {phn-FR_Ortsnamen} - -\clist_new:N \c_phone_FR_vorwahlen_clist -\clist_concat:NNN \c_phone_FR_vorwahlen_clist \c_phone_FR_ortsvorwahlen_clist \c_phone_FR_sondervorwahlen_clist - -\msg_new:nnn {phonenumbers} {FR/illegal home area code} - { - The~only~legal~home~area~code~in~France~is~0508~(Saint-Pierre-et-Miquelon).~#1~cannot~be~set~as~home~area~code~\msg_line_context:. - } - -\msg_new:nnn {phonenumbers} {FR/missing zero} - { - French~phone~number~has~no~zero~in~the~beginning~\msg_line_context: - } - - -% #1: Vorwahl -\cs_new:Npn \phone_FR_ermittle_landeskennzahl:n #1 - { - \str_case:nnF {#1} - { - {0262} {262} - {026200} {262} - {0263} {262} - {0269} {262} - {0508} {508} - {0590} {590} - {0594} {594} - {0596} {596} - {0639} {262} - {0690} {590} - {0691} {590} - {0692} {262} - {0693} {262} - {0694} {594} - {0696} {596} - {0697} {596} - {07005} {590} - {07006} {594} - {07007} {596} - {07008} {262} - {07009} {262} - {09475} {590} - {09476} {594} - {09477} {596} - {09478} {262} - {09479} {262} - {09760} {590} - {09761} {590} - {09762} {262} - {09763} {262} - {09764} {594} - {09765} {594} - {09766} {596} - {09767} {596} - {09768} {590} - {09769} {262} - } - { - 33 - } - } - -% #1: Vorwahl, #2: Rufnummer -\cs_new_protected:Npn \phone_FR_vorwahl_und_rufnummer_schreiben:nn #1#2 - { - \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {FR} } - { - \clist_if_in:NnT \c_phone_FR_sondervorwahlen_clist {#1} - { - \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place} - { - \str_set:Nn \l_phone_vorwahldarstellung_str {number} - } - } - - \bool_lazy_and:nnTF { \str_if_eq_p:Vn \l_phone_heimatland_str {FR} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} } - { - \phone_von_hinten_gruppiert_schreiben:n {#2} % reine Teilnehmerrufnummer in Saint-Pierre-et-Miquelon - } - { - \str_case:Vn \l_phone_vorwahldarstellung_str - { - {number} - { - \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str - } - {place} - { - \tl_if_exist:cTF {c_phone_FR_ortsname_#1_tl} - { - \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_FR_ortsname_#1_tl} - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - \phone_von_vorne_gruppiert_schreiben:n {#2} - } - { - \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str - } - } - {place-and-number} - { - \tl_if_exist:cT {c_phone_FR_ortsname_#1_tl} - { - \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_FR_ortsname_#1_tl} - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - } - - \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str - } - } - } - } - { - \phone_auslandsvorwahl_schreiben:x { \phone_FR_ermittle_landeskennzahl:n {#1} } - - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - - \str_if_eq:nnTF {#1} {0508} % in Saint-Pierre-et-Miquelon entfällt die Ortsvorwahl - { - \phone_von_hinten_gruppiert_schreiben:n {#2} - } - { - \phone_von_hinten_gruppiert_schreiben:x { \str_tail:N \l_phone_bereinigte_nummer_str } - } - } - - % Linktext schreiben: - \str_put_right:Nx \l_phone_linktext_str { + \phone_FR_ermittle_landeskennzahl:n {#1} } - \str_if_eq:nnF {#1} {0508} % in Saint-Pierre-et-Miquelon entfällt die Ortsvorwahl - { - \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} } - } - \str_put_right:Nn \l_phone_linktext_str {#2} - } - -\cs_generate_variant:Nn \phone_FR_vorwahl_und_rufnummer_schreiben:nn {Vx,xx} - - -\cs_new_protected:Npn \phone_FR_nummer_schreiben: - { - \int_set:Nn \l_phone_nummerlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str } - - \int_compare:nNnTF {\l_phone_nummerlaenge_int} < {10} - { - \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {3} - { - \int_compare:nNnTF {\l_phone_nummerlaenge_int} < {4} - { - \msg_warning:nnnn {phonenumbers} {number too short} {short} {4} - \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str - } - { - \int_compare:nNnTF {\l_phone_nummerlaenge_int} > {4} - { - \msg_warning:nnnn {phonenumbers} {number too long} {short} {4} - \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str - } - { - \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str - \str_put_right:NV \l_phone_linktext_str \l_phone_bereinigte_nummer_str - } - } - } - { - \msg_warning:nnnn {phonenumbers} {number too short} {phone} {10} - \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str - } - } - { - \int_compare:nNnTF {\l_phone_nummerlaenge_int} > {10} - { - \str_if_eq:xnTF { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {4} } {0700} - { - \int_compare:nNnTF { \str_item:Nn \l_phone_bereinigte_nummer_str {5} } < {5} - { - % überlange Mobilfunknummer (machine to machine) im Mutterland (14 Stellen) - \phone_nummernlaenge_ueberpruefen:Vnnn \l_phone_bereinigte_nummer_str {14} {14} {machine~to~machine} - \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool - { - \phone_FR_vorwahl_und_rufnummer_schreiben:xx - { - \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {4} - } - { - \str_range:Nnn \l_phone_bereinigte_nummer_str {5} {-1} - } - } - { - \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str - } - } - { - % überlange Mobilfunknummer (machine to machine) in den Überseegebieten (13 Stellen) - \phone_nummernlaenge_ueberpruefen:Vnnn \l_phone_bereinigte_nummer_str {13} {13} {machine~to~machine} - \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool - { - \phone_FR_vorwahl_und_rufnummer_schreiben:xx - { - \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {5} - } - { - \str_range:Nnn \l_phone_bereinigte_nummer_str {6} {-1} - } - } - { - \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str - } - } - } - { - \msg_warning:nnnn {phonenumbers} {number too long} {phone} {10} - \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str - } - } - { - \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0} - { - \bool_set_false:N \l_phone_vorwahl_gefunden_bool - - \int_step_inline:nnnn {6} {-1} {2} - { - \bool_if:NF \l_phone_vorwahl_gefunden_bool - { - \int_compare:nT { \l_phone_nummerlaenge_int >= ##1 } - { - \str_set:Nx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {##1} } - - \clist_if_in:NVT \c_phone_FR_vorwahlen_clist \l_tmpa_str - { - \bool_set_true:N \l_phone_vorwahl_gefunden_bool - \phone_FR_vorwahl_und_rufnummer_schreiben:Vx \l_tmpa_str - { - \str_range:Nnn \l_phone_bereinigte_nummer_str {##1 + 1} {-1} - } - } - } - } - } - - \bool_if:NF \l_phone_vorwahl_gefunden_bool - { - \msg_warning:nn {phonenumbers} {invalid area code} - \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str - } - } - { - \msg_warning:nn {phonenumbers} {FR/missing zero} - \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str - } - } - } - } - - -%%%%%%%%%%%%%%%%%%%% GROSSBRITANNIEN %%%%%%%%%%%%%%%%%%%% - -\file_input:n {phn-UK_Vorwahlen} -\file_input:n {phn-UK_Ortsnamen} - -\clist_new:N \c_phone_UK_vorwahlen_clist -\clist_concat:NNN \c_phone_UK_vorwahlen_clist \c_phone_UK_ortsvorwahlen_clist \c_phone_UK_sondervorwahlen_clist - -\msg_new:nnn {phonenumbers} {UK/illegal home area code} - { - National~dialling~is~required~in~\tl_use:c {c_phone_UK_ortsname_#1_tl}.~#1~cannot~be~set~as~home~area~code~\msg_line_context:. - } - -\msg_new:nnn {phonenumbers} {UK/national dialling required} - { - British~subscriber~number~starting~with~0~or~1~requires~an~area~code~\msg_line_context: - } - - -% #1: Vorwahl, #2: Folgt eine Rufnummer? -\cs_new_protected:Npn \phone_UK_vorwahl_schreiben:nn #1 #2 - { - \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {UK} } - { - \clist_if_in:NnT \c_phone_UK_sondervorwahlen_clist {#1} - { - \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place} - { - \str_set:Nn \l_phone_vorwahldarstellung_str {number} - } - } - - \bool_lazy_and:nnF { \str_if_eq_p:Vn \l_phone_heimatland_str {UK} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} } - { - \str_case:Vn \l_phone_vorwahldarstellung_str - { - {number} - { - \bool_if:nTF {#2} - { - \str_if_eq:VnTF \l_phone_vorwahltrennung_str {space} - { - \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool - } - { - \phone_geklammerte_vorwahl_schreiben:nN {#1} \c_true_bool - } - - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - } - { - \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool - } - } - {place} - { - \bool_if:nTF {#2} - { - \str_if_eq:VnF \l_phone_vorwahltrennung_str {space} - { - \tl_put_right:Nn \l_phone_ausgabetext_tl {(} - } - - \tl_if_exist:cTF {c_phone_UK_ortsname_#1_tl} - { - \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_UK_ortsname_#1_tl} - } - { - \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool - } - - \str_if_eq:VnF \l_phone_vorwahltrennung_str {space} - { - \tl_put_right:Nn \l_phone_ausgabetext_tl {)} - } - - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - } - { - \tl_if_exist:cTF {c_phone_UK_ortsname_#1_tl} - { - \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_UK_ortsname_#1_tl} - } - { - \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool - } - } - } - {place-and-number} - { - \tl_if_exist:cT {c_phone_UK_ortsname_#1_tl} - { - \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_UK_ortsname_#1_tl} - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - } - - \str_if_eq:VnTF \l_phone_vorwahltrennung_str {space} - { - \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool - } - { - \phone_geklammerte_vorwahl_schreiben:nN {#1} \c_true_bool - } - - \bool_if:nT {#2} - { - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - } - } - } - } - } - { - \phone_auslandsvorwahl_schreiben:n {44} - - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - - \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {space} - { - \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_false_bool - } - { - \phone_geklammerte_vorwahl_schreiben:nN {#1} \c_false_bool - } - - \bool_if:nT {#2} - { - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - } - } - - % Linktext schreiben, falls eine Rufnummer folgt - \bool_if:nT {#2} - { - \str_put_right:Nn \l_phone_linktext_str {+44} - \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} } - } - } - -\cs_generate_variant:Nn \phone_UK_vorwahl_schreiben:nn {Vx} - - -% #1: Vorwahl, #2: Teilnehmerrufnummer -\cs_new_protected:Npn \phone_UK_teilnehmerrufnummer_schreiben:Nn #1 #2 - { - % Überprüfen der Nummernlänge - \str_if_empty:NTF #1 - { - % Festnetznummer ohne Vorwahl (kann zwischen 4 und 8 Ziffern haben) - \phone_nummernlaenge_ueberpruefen:nnnn {#2} {4} {8} {landline} - - % Nummern, die mit 0 oder 1 beginnen, erfordern das Wählen der Vorwahl - \str_case:xnT { \str_head:n {#2} } - { - {0} { } - {1} { } - } - { - \msg_warning:nn {phonenumbers} {UK/national dialling required} - } - } - { - \clist_if_in:NVTF \c_phone_UK_ortsvorwahlen_clist #1 - { - % Festnetznummer, muss in der Regel 11 Ziffern umfassen - % Ausnahme: Bei den Vorwahlen 01XXX und 016977 sind auch 10 Ziffern möglich. - \bool_lazy_or:nnTF { \str_if_eq_p:Vn #1 {016977} } { \int_compare_p:nNn { \str_count:N #1 } = {5} } - { - \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {10} {11} {landline} - } - { - \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {11} {11} {landline} - } - } - { - % Mobilfunk-/Sondernummer - \str_if_eq:xnTF { \str_range:Nnn #1 {1} {4} } {0800} - { - % 0800er-Nummern haben 10 oder 11 Ziffern; Ausnahme: 0800 1111 - \str_if_eq:nnTF {#2} {1111} - { - \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool - } - { - \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {10} {11} {freephone} - } - } - { - % alle anderen Sondernummern haben 11 Ziffern - \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {11} {11} {non-geographic} - } - } - - \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool - { - % Für gültige Nummern mit Vorwahl Linktext schreiben: - \str_put_right:Nn \l_phone_linktext_str {#2} - } - { - % Für ungültige Nummern mit Vorwahl Linktext löschen: - \str_clear:N \l_phone_linktext_str - } - } - - \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool - { - \int_compare:nNnTF { \str_count:n {#2} } > {6} - { - % Nummern mit mehr als 6 Ziffern werden in Vierergruppen gegliedert - \str_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#2} {1} {-5} } - \tl_put_right:Nn \l_phone_ausgabetext_tl {\,} - \str_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#2} {-4} {-1} } - } - { - \str_put_right:Nn \l_phone_ausgabetext_tl {#2} - } - } - { - \str_put_right:Nn \l_phone_ausgabetext_tl {#2} - } - } - -\cs_generate_variant:Nn \phone_UK_teilnehmerrufnummer_schreiben:Nn {Nx,NV} - - -\cs_new_protected:Npn \phone_UK_nummer_schreiben: - { - \int_set:Nn \l_phone_nummerlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str } - - \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0} - { - \bool_set_false:N \l_phone_vorwahl_gefunden_bool - - \int_step_inline:nnnn {6} {-1} {3} - { - \bool_if:NF \l_phone_vorwahl_gefunden_bool - { - \int_compare:nT { \l_phone_nummerlaenge_int >= ##1 } - { - \str_set:Nx \l_phone_vorwahl_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {##1} } - - \clist_if_in:NVT \c_phone_UK_vorwahlen_clist \l_phone_vorwahl_str - { - \bool_set_true:N \l_phone_vorwahl_gefunden_bool - - \phone_UK_vorwahl_schreiben:Vx \l_phone_vorwahl_str { \int_compare_p:nNn {##1} < {\l_phone_nummerlaenge_int} } - - \int_compare:nNnTF {##1} = {\l_phone_nummerlaenge_int} - { - \msg_warning:nn {phonenumbers} {missing subscriber number} - } - { - \phone_UK_teilnehmerrufnummer_schreiben:Nx \l_phone_vorwahl_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {##1 + 1} {-1} } - } - } - } - } - } - - \bool_if:NF \l_phone_vorwahl_gefunden_bool - { - \msg_warning:nn {phonenumbers} {invalid area code} - \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str - } - } - { - \phone_UK_teilnehmerrufnummer_schreiben:NV \c_empty_tl \l_phone_bereinigte_nummer_str - } - } - - -%%%%%%%%%%%%%%%%%%%% NORDAMERIKA %%%%%%%%%%%%%%%%%%%% - -\file_input:n {phn-US_Vorwahlen} -\file_input:n {phn-US_Ortsnamen} - -\clist_new:N \c_phone_US_vorwahlen_clist -\clist_concat:NNN \c_phone_US_vorwahlen_clist \c_phone_US_ortsvorwahlen_clist \c_phone_US_sondervorwahlen_clist - -\msg_new:nnn {phonenumbers} {US/illegal home area code} - { - 10-digit~dialling~is~required~in~\tl_use:c {c_phone_US_ortsname_#1_tl}.~#1~cannot~be~set~as~home~area~code~\msg_line_context:. - } - -\msg_new:nnn {phonenumbers} {US/invalid area code} - { - unknown~area~code~#1~in~North~American~phone~number~\msg_line_context: - } - -\msg_new:nnn {phonenumbers} {US/invalid central office code} - { - invalid~central~office~code~#1~in~North~American~phone~number~\msg_line_context: - } - -\bool_new:N \l_phone_US_ferngespraechspraefix_bool - -\keys_define:nn {phonenumbers} - { - trunk-prefix .choices:nn = {on,off} - { - \str_if_eq:VnTF \l_keys_choice_tl {on} - { - \bool_set_true:N \l_phone_US_ferngespraechspraefix_bool - } - { - \bool_set_false:N \l_phone_US_ferngespraechspraefix_bool - } - }, - trunk-prefix .initial:n = off, - trunk-prefix .default:n = on - } - - -% #1: Vorwahl, #2: Folgt eine Rufnummer? -\cs_new_protected:Npn \phone_US_vorwahl_schreiben:nN #1 #2 - { - \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {US} } - { - \bool_lazy_and:nnF { \str_if_eq_p:Vn \l_phone_heimatland_str {US} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} } - { - \bool_if:NTF \l_phone_US_ferngespraechspraefix_bool - { - \tl_put_right:Nx \l_phone_ausgabetext_tl - { - \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place-and-number} - { - \tl_if_exist:cT {c_phone_US_ortsname_#1_tl} - { - \tl_use:c {c_phone_US_ortsname_#1_tl} - \c_space_tl - } - } - - \bool_if:NTF #2 - { - \str_case:VnF \l_phone_vorwahltrennung_str - { - {brackets} {1 \c_space_tl (#1) \c_space_tl} - {space} {1 \c_space_tl #1 \c_space_tl} - } - { - 1 \c_phone_bindestrich_tl #1 \c_phone_bindestrich_tl - } - } - { - \str_case:VnF \l_phone_vorwahltrennung_str - { - {brackets} {1 \c_space_tl (#1)} - {space} {1 \c_space_tl #1} - } - { - 1 \c_phone_bindestrich_tl #1 - } - } - } - } - { - \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place} - { - \clist_if_in:NnT \c_phone_US_sondervorwahlen_clist {#1} - { - \str_set:Nn \l_phone_vorwahldarstellung_str {number} - } - } - - \tl_put_right:Nx \l_phone_ausgabetext_tl - { - \str_case:Vn \l_phone_vorwahldarstellung_str - { - {number} - { - \bool_if:NTF #2 - { - \str_case:VnF \l_phone_vorwahltrennung_str - { - {brackets} {(#1) \c_space_tl} - {space} {#1 \c_space_tl} - } - { - #1 \c_phone_bindestrich_tl - } - } - { - #1 - } - } - {place} - { - \bool_if:NTF #2 - { - \str_case:VnF \l_phone_vorwahltrennung_str - { - {brackets} - { - ( - \tl_if_exist:cTF {c_phone_US_ortsname_#1_tl} - { - \tl_use:c {c_phone_US_ortsname_#1_tl} - } - { - #1 - } - ) - \c_space_tl - } - } - { - \tl_if_exist:cTF {c_phone_US_ortsname_#1_tl} - { - \tl_use:c {c_phone_US_ortsname_#1_tl} - \c_space_tl - } - { - #1 \c_phone_bindestrich_tl - } - } - } - { - \tl_if_exist:cTF {c_phone_US_ortsname_#1_tl} - { - \tl_use:c {c_phone_US_ortsname_#1_tl} - } - { - #1 - } - } - } - {place-and-number} - { - \tl_if_exist:cT {c_phone_US_ortsname_#1_tl} - { - \tl_use:c {c_phone_US_ortsname_#1_tl} - \c_space_tl - } - - \bool_if:NTF #2 - { - \str_case:VnF \l_phone_vorwahltrennung_str - { - {brackets} {(#1) \c_space_tl} - {space} {#1 \c_space_tl} - } - { - #1 \c_phone_bindestrich_tl - } - } - { - \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets} - { - (#1) - } - { - #1 - } - } - } - } - } - } - } - } - { - \phone_auslandsvorwahl_schreiben:n {1} - - \tl_put_right:Nn \l_phone_ausgabetext_tl {\c_space_tl} - - \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {brackets} - { - \tl_put_right:Nn \l_phone_ausgabetext_tl {(#1)} - } - { - \tl_put_right:Nn \l_phone_ausgabetext_tl {#1} - } - - \bool_if:NT #2 - { - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - } - } - - % Linktext schreiben, falls eine Rufnummer folgt - \bool_if:NT #2 - { - \str_put_right:Nn \l_phone_linktext_str {+1 #1} - } - } - -\cs_generate_variant:Nn \phone_US_vorwahl_schreiben:nN {VN} - - -% #1: Ortsvorwahl, #2: Vermittlungsstellennummer -\cs_new_protected:Npn \phone_US_vermittlungsstellennummer_schreiben:nn #1 #2 - { - \str_case:xnTF { \str_head:n {#2} } - { - {0} { } - {1} { } - } - { - \msg_warning:nnn {phonenumbers} {US/invalid central office code} {#2} - } - { - \bool_set_false:N \l_tmpa_bool % Regionalnummer? - - \tl_if_empty:nTF {#1} - { - \bool_set_true:N \l_tmpa_bool - } - { - \clist_if_in:NnT \c_phone_US_ortsvorwahlen_clist {#1} - { - \bool_set_true:N \l_tmpa_bool - } - } - - \bool_if:NTF \l_tmpa_bool - { - \str_if_eq:xnT { \str_range:nnn {#2} {2} {3} } {11} - { - \msg_warning:nnn {phonenumbers} {US/invalid central office code} {#2} - } - } - { - \str_if_eq:nnT {#2} {911} - { - \msg_warning:nnn {phonenumbers} {US/invalid central office code} {#2} - } - } - } - - \tl_put_right:Nn \l_phone_ausgabetext_tl {#2} - - \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {US} } - { - \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl - } - { - \tl_if_empty:nTF {#1} - { - \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl - } - { - \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl - } - } - - % Linktext schreiben, falls eine Vorwahl vorangeht - \tl_if_empty:nF {#1} - { - \str_put_right:Nn \l_phone_linktext_str {#2} - } - } - -\cs_generate_variant:Nn \phone_US_vermittlungsstellennummer_schreiben:nn {Vx} - - -\cs_new_protected:Npn \phone_US_nummer_schreiben: - { - \int_case:nnF { \str_count:N \l_phone_bereinigte_nummer_str } - { - {3} - { - \clist_if_in:NVTF \c_phone_US_vorwahlen_clist \l_phone_bereinigte_nummer_str - { - \msg_warning:nn {phonenumbers} {missing subscriber number} - } - { - \msg_warning:nnV {phonenumbers} {US/invalid area code} \l_phone_bereinigte_nummer_str - } - - \phone_US_vorwahl_schreiben:VN \l_phone_bereinigte_nummer_str \c_false_bool - } - {7} - { - \phone_US_vermittlungsstellennummer_schreiben:Vx \c_empty_tl { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {3} } - - \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:Nnn \l_phone_bereinigte_nummer_str {4} {7} } - } - {10} - { - \str_set:Nx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {3} } - - \clist_if_in:NVF \c_phone_US_vorwahlen_clist \l_tmpa_str - { - \msg_warning:nnx {phonenumbers} {US/invalid area code} {\l_tmpa_str} - } - - \phone_US_vorwahl_schreiben:VN \l_tmpa_str \c_true_bool - - \phone_US_vermittlungsstellennummer_schreiben:Vx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {4} {6} } - - \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:Nnn \l_phone_bereinigte_nummer_str {7} {10} } - \str_put_right:Nx \l_phone_linktext_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {7} {10} } - } - } - { - \int_compare:nNnTF { \str_count:N \l_phone_bereinigte_nummer_str } < {10} - { - \msg_warning:nnnn {phonenumbers} {number too short} {phone} {10} - } - { - \msg_warning:nnnn {phonenumbers} {number too long} {phone} {10} - } - - \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str - } - } - - -%%%%%%%%%%%%%%%%%%%% SONSTIGE LÄNDER %%%%%%%%%%%%%%%%%%%% - -\cs_new_protected:Npn \phone_SONST_nummer_schreiben: +\cs_new_protected:Npn \phone_nicht_unterstuetzte_nummer_schreiben: { - \int_set:Nn \l_phone_nummerlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str } + \int_set:Nn \l_phone_nummernlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str } \bool_set_false:N \l_phone_vorwahl_gefunden_bool @@ -2514,7 +1089,7 @@ { \bool_if:NF \l_phone_vorwahl_gefunden_bool { - \int_compare:nT { \l_phone_nummerlaenge_int >= ##1 } + \int_compare:nT { \l_phone_nummernlaenge_int >= ##1 } { \str_set:Nx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {##1} } @@ -2522,9 +1097,9 @@ { \bool_set_true:N \l_phone_vorwahl_gefunden_bool - \phone_auslandsvorwahl_schreiben:V \l_tmpa_str + \phone_ungruppierte_auslandsvorwahl_schreiben:V \l_tmpa_str - \int_compare:nNnTF {##1} = {\l_phone_nummerlaenge_int} + \int_compare:nNnTF {##1} = {\l_phone_nummernlaenge_int} { \msg_warning:nn {phonenumbers} {country code only} } @@ -2548,5 +1123,10 @@ } } +\file_input:n {phonenumbers-AT.def} +\file_input:n {phonenumbers-DE.def} +\file_input:n {phonenumbers-FR.def} +\file_input:n {phonenumbers-UK.def} +\file_input:n {phonenumbers-US.def} \ProcessKeysPackageOptions {phonenumbers} |