# automatically generated file, don't edit



# Copyright 2011 David Cantrell, derived from data from libphonenumber
# http://code.google.com/p/libphonenumber/
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
package Number::Phone::StubCountry::BY;
use base qw(Number::Phone::StubCountry);

use strict;
use warnings;
use utf8;
our $VERSION = 1.20210309172129;

my $formatters = [
                {
                  'format' => '$1 $2',
                  'leading_digits' => '800',
                  'national_rule' => '8 $1',
                  'pattern' => '(\\d{3})(\\d{3})'
                },
                {
                  'format' => '$1 $2 $3',
                  'leading_digits' => '800',
                  'national_rule' => '8 $1',
                  'pattern' => '(\\d{3})(\\d{2})(\\d{2,4})'
                },
                {
                  'format' => '$1 $2-$3',
                  'leading_digits' => '
            1(?:
              5[169]|
              6(?:
                3[1-3]|
                4|
                5[125]
              )|
              7(?:
                1[3-9]|
                7[0-24-6]|
                9[2-7]
              )
            )|
            2(?:
              1[35]|
              2[34]|
              3[3-5]
            )
          ',
                  'national_rule' => '8 0$1',
                  'pattern' => '(\\d{4})(\\d{2})(\\d{3})'
                },
                {
                  'format' => '$1 $2-$3-$4',
                  'leading_digits' => '
            1(?:
              [56]|
              7[467]
            )|
            2[1-3]
          ',
                  'national_rule' => '8 0$1',
                  'pattern' => '(\\d{3})(\\d{2})(\\d{2})(\\d{2})'
                },
                {
                  'format' => '$1 $2-$3-$4',
                  'leading_digits' => '[1-4]',
                  'national_rule' => '8 0$1',
                  'pattern' => '(\\d{2})(\\d{3})(\\d{2})(\\d{2})'
                },
                {
                  'format' => '$1 $2 $3',
                  'leading_digits' => '[89]',
                  'national_rule' => '8 $1',
                  'pattern' => '(\\d{3})(\\d{3,4})(\\d{4})'
                }
              ];

my $validators = {
                'fixed_line' => '
          (?:
            1(?:
              5(?:
                1[1-5]|
                [24]\\d|
                6[2-4]|
                9[1-7]
              )|
              6(?:
                [235]\\d|
                4[1-7]
              )|
              7\\d\\d
            )|
            2(?:
              1(?:
                [246]\\d|
                3[0-35-9]|
                5[1-9]
              )|
              2(?:
                [235]\\d|
                4[0-8]
              )|
              3(?:
                [26]\\d|
                3[02-79]|
                4[024-7]|
                5[03-7]
              )
            )
          )\\d{5}
        ',
                'geographic' => '
          (?:
            1(?:
              5(?:
                1[1-5]|
                [24]\\d|
                6[2-4]|
                9[1-7]
              )|
              6(?:
                [235]\\d|
                4[1-7]
              )|
              7\\d\\d
            )|
            2(?:
              1(?:
                [246]\\d|
                3[0-35-9]|
                5[1-9]
              )|
              2(?:
                [235]\\d|
                4[0-8]
              )|
              3(?:
                [26]\\d|
                3[02-79]|
                4[024-7]|
                5[03-7]
              )
            )
          )\\d{5}
        ',
                'mobile' => '
          (?:
            2(?:
              5[5-79]|
              9[1-9]
            )|
            (?:
              33|
              44
            )\\d
          )\\d{6}
        ',
                'pager' => '',
                'personal_number' => '',
                'specialrate' => '(
          (?:
            810|
            902
          )\\d{7}
        )',
                'toll_free' => '
          800\\d{3,7}|
          8(?:
            0[13]|
            20\\d
          )\\d{7}
        ',
                'voip' => '249\\d{6}'
              };
my %areanames = ();
$areanames{be} = {"3752353", "Жыткавічы\,\ Гомельская\ вобласць",
"3752336", "Буда\-Кашалёва\,\ Гомельская\ вобласць",
"3752333", "Добруш\,\ Гомельская\ вобласць",
"3752356", "Лельчыцы\,\ Гомельская\ вобласць",
"3751797", "Мядзел",
"3752340", "Рэчыца",
"3751776", "Смалявічы",
"3752248", "Дрыбін\,\ Магілёўская\ вобласць",
"3751511", "Вялікая\ Бераставіца\,\ Гродзенская\ вобласць",
"375212", "Віцебск",
"3751595", "Іўе\,\ Гродзенская\ вобласць",
"3752344", "Брагін\,\ Гомельская\ вобласць",
"375216", "Орша",
"3751642", "Кобрын",
"3752242", "Чавусы\,\ Магілёўская\ вобласць",
"3751514", "Шчучын\,\ Гродзенская\ вобласць",
"3751647", "Лунінец\,\ Брэсцкая\ вобласць",
"3752247", "Хоцімск\,\ Магілёўская\ вобласць",
"3752355", "Нароўля\,\ Гомельская\ вобласць",
"3752130", "Шуміліна\,\ Віцебская\ вобласць",
"3751593", "Ашмяны",
"3751775", "Жодзіна",
"3752151", "Верхнядзвінск\,\ Віцебская\ вобласць",
"3751596", "Карэлічы\,\ Гродзенская\ вобласць",
"3752131", "Бешанковічы\,\ Віцебская\ вобласць",
"3752154", "Шаркоўшчына\,\ Віцебская\ вобласць",
"3751792", "Старыя\ Дарогі\,\ Мінская\ вобласць",
"375176", "Маладзечна",
"3751591", "Астравец\,\ Гродзенская\ вобласць",
"3752136", "Талачын",
"3751515", "Масты\,\ Гродзенская\ вобласць",
"3752153", "Браслаў",
"3752156", "Глыбокае",
"3752133", "Чашнікі\,\ Віцебская\ вобласць",
"3751717", "Стаўбцы",
"3752237", "Кіраўск\,\ Магілёўская\ вобласць",
"375232", "Гомель",
"3752345", "Калінкавічы",
"3751562", "Слонім",
"3751594", "Воранава\,\ Гродзенская\ вобласць",
"375214", "Полацк\/Наваполацк",
"375236", "Мазыр",
"3752135", "Сянно\,\ Віцебская\ вобласць",
"3752350", "Петрыкаў\,\ Гомельская\ вобласць",
"3751719", "Капыль\,\ Мінская\ вобласць",
"3751718", "Узда\,\ Мінская\ вобласць",
"3752330", "Ветка\,\ Гомельская\ вобласць",
"3752155", "Паставы",
"3751513", "Свіслач\,\ Гродзенская\ вобласць",
"3752239", "Шклоў",
"3752238", "Краснаполле\,\ Магілёўская\ вобласць",
"3751771", "Вілейка",
"3752346", "Хойнікі\,\ Гомельская\ вобласць",
"3751770", "Нясвіж",
"3751632", "Пружаны\,\ Брэсцкая\ вобласць",
"3752232", "Бялынічы\,\ Магілёўская\ вобласць",
"375174", "Салігорск",
"375177", "Барысаў",
"3751774", "Лагойск",
"3751652", "Іванава\,\ Брэсцкая\ вобласць",
"3752354", "Ельск\,\ Гомельская\ вобласць",
"3752334", "Жлобін",
"3752158", "Ушачы\,\ Віцебская\ вобласць",
"3752347", "Лоеў\,\ Гомельская\ вобласць",
"3752159", "Расоны\,\ Віцебская\ вобласць",
"3752235", "Асіповічы",
"3752139", "Гарадок\,\ Віцебская\ вобласць",
"3752138", "Лёзна\,\ Віцебская\ вобласць",
"3751715", "Беразіно\,\ Мінская\ вобласць",
"3751563", "Дзятлава\,\ Гродзенская\ вобласць",
"3751655", "Столін\,\ Брэсцкая\ вобласць",
"3752132", "Лепель",
"3752152", "Міёры\,\ Віцебская\ вобласць",
"3751794", "Любань\,\ Мінская\ вобласць",
"3752236", "Клічаў\,\ Магілёўская\ вобласць",
"3752241", "Крычаў\,\ Магілёўская\ вобласць",
"3751641", "Жабінка\,\ Брэсцкая\ вобласць",
"3751713", "Мар\’іна\ Горка\,\ Мінская\ вобласць",
"3751716", "Дзяржынск",
"3752233", "Горкі\,\ Магілёўская\ вобласць",
"3751633", "Ляхавічы\,\ Брэсцкая\ вобласць",
"37517", "Мінск",
"3752240", "Мсціслаў",
"3752157", "Докшыцы\,\ Віцебская\ вобласць",
"3752137", "Дуброўна\,\ Віцебская\ вобласць",
"3751644", "Драгічын\,\ Брэсцкая\ вобласць",
"3752244", "Клімавічы\,\ Магілёўская\ вобласць",
"3751512", "Ваўкавыск",
"375154", "Ліда",
"3752342", "Светлагорск",
"3751597", "Навагрудак",
"3752230", "Глуск\,\ Магілёўская\ вобласць",
"3752339", "Рагачоў",
"3751651", "Маларыта\,\ Брэсцкая\ вобласць",
"3751643", "Бяроза\,\ Брэсцкая\ вобласць",
"3752243", "Чэрыкаў\,\ Магілёўская\ вобласць",
"3751795", "Слуцк",
"3751646", "Ганцавічы\,\ Брэсцкая\ вобласць",
"3752246", "Слаўгарад\,\ Магілёўская\ вобласць",
"3752231", "Быхаў\,\ Магілёўская\ вобласць",
"3751631", "Камянец\,\ Брэсцкая\ вобласць",
"3752332", "Чачэрск\,\ Гомельская\ вобласць",
"3751772", "Валожын",
"375163", "Баранавічы",
"3751714", "Чэрвень",
"375225", "Бабруйск",
"375165", "Пінск",
"3752234", "Круглае\,\ Магілёўская\ вобласць",
"3752357", "Акцябрскі\,\ Гомельская\ вобласць",
"3751796", "Крупкі\,\ Мінская\ вобласць",
"3752337", "Карма\,\ Гомельская\ вобласць",
"3751793", "Клецк\,\ Мінская\ вобласць",
"375222", "Магілёў",
"375162", "Брэст",
"3751645", "Івацэвічы\,\ Брэсцкая\ вобласць",
"3752245", "Касцюковічы\,\ Магілёўская\ вобласць",
"375152", "Гродна",
"3751564", "Зэльва\,\ Гродзенская\ вобласць",
"3751592", "Смаргонь",};
$areanames{en} = {"3752356", "Lelchitsy\,\ Gomel\ Region",
"3752333", "Dobrush\,\ Gomel\ Region",
"3751797", "Myadel",
"3752336", "Budo\-Koshelevo\,\ Gomel\ Region",
"3752353", "Zhitkovichi\,\ Gomel\ Region",
"3751511", "Vyalikaya\ Byerastavitsa\,\ Grodno\ Region",
"3751595", "Ivye\,\ Grodno\ Region",
"375212", "Vitebsk",
"3752340", "Rechitsa",
"3752248", "Dribin\,\ Mogilev\ Region",
"3751776", "Smalyavichy",
"3752344", "Bragin\,\ Gomel\ Region",
"3752242", "Chausy\,\ Mogilev\ Region",
"3751642", "Kobryn",
"3751514", "Shchuchin\,\ Grodno\ Region",
"375216", "Orsha",
"3752130", "Shumilino\,\ Vitebsk\ Region",
"3752355", "Narovlya\,\ Gomel\ Region",
"3751647", "Luninets\,\ Brest\ Region",
"3752247", "Khotimsk\,\ Mogilev\ Region",
"3751596", "Korelichi\,\ Grodno\ Region",
"3752131", "Beshenkovichi\,\ Vitebsk\ Region",
"3751593", "Oshmyany",
"3751775", "Zhodino",
"3752151", "Verhnedvinsk\,\ Vitebsk\ Region",
"375176", "Molodechno",
"3752154", "Sharkovshchina\,\ Vitebsk\ Region",
"3751792", "Starye\ Dorogi\,\ Minsk\ Region",
"3752156", "Glubokoye",
"3752133", "Chashniki\,\ Vitebsk\ Region",
"3751591", "Ostrovets\,\ Grodno\ Region",
"3752153", "Braslav",
"3751515", "Mosty\,\ Grodno\ Region",
"3752136", "Tolochin",
"375232", "Gomel",
"3752237", "Kirovsk\,\ Mogilev\ Region",
"3752345", "Kalinkovichi",
"3751717", "Stolbtsy",
"375214", "Polotsk\/Navapolatsk",
"3751562", "Slonim",
"3751594", "Voronovo\,\ Grodno\ Region",
"375236", "Mozyr",
"3752155", "Postavy",
"3751513", "Svisloch\,\ Grodno\ Region",
"3752330", "Vetka\,\ Gomel\ Region",
"3752238", "Krasnopolye\,\ Mogilev\ Region",
"3751771", "Vileyka",
"3752239", "Shklov",
"3752350", "Petrikov\,\ Gomel\ Region",
"3752135", "Senno\,\ Vitebsk\ Region",
"3751718", "Uzda\,\ Minsk\ Region",
"3751719", "Kopyl\,\ Minsk\ Region",
"3752346", "Khoiniki\,\ Gomel\ Region",
"3751770", "Nesvizh",
"3751774", "Lahoysk",
"3751652", "Ivanovo\,\ Brest\ Region",
"375174", "Soligorsk",
"375177", "Borisov",
"3751632", "Pruzhany\,\ Brest\ Region",
"3752232", "Belynichi\,\ Mogilev\ Region",
"3752334", "Zhlobin",
"3752354", "Yelsk\,\ Gomel\ Region",
"3752138", "Liozno\,\ Vitebsk\ Region",
"3752139", "Gorodok\,\ Vitebsk\ Region",
"3751655", "Stolin\,\ Brest\ Region",
"3751563", "Dyatlovo\,\ Grodno\ Region",
"3751715", "Berezino\,\ Minsk\ Region",
"3752159", "Rossony\,\ Vitebsk\ Region",
"3752347", "Loyev\,\ Gomel\ Region",
"3752158", "Ushachi\,\ Vitebsk\ Region",
"3752235", "Osipovichi",
"3752152", "Miory\,\ Vitebsk\ Region",
"3751794", "Lyuban\,\ Minsk\ Region",
"3752132", "Lepel",
"3752233", "Gorki\,\ Mogilev\ Region",
"3751633", "Lyakhovichi\,\ Brest\ Region",
"3751716", "Dzerzhinsk",
"3752241", "Krichev\,\ Mogilev\ Region",
"3751713", "Maryina\ Gorka\,\ Minsk\ Region",
"3751641", "Zhabinka\,\ Brest\ Region",
"3752236", "Klichev\,\ Mogilev\ Region",
"3752137", "Dubrovno\,\ Vitebsk\ Region",
"3752240", "Mstislavl",
"37517", "Minsk",
"3752157", "Dokshitsy\,\ Vitebsk\ Region",
"375154", "Lida",
"3752244", "Klimovichi\,\ Mogilev\ Region",
"3751644", "Drogichin\,\ Brest\ Region",
"3751512", "Volkovysk",
"3752342", "Svetlogorsk",
"3752230", "Glusk\,\ Mogilev\ Region",
"3752339", "Rogachev",
"3751597", "Novogrudok",
"3751631", "Kamenets\,\ Brest\ Region",
"3752231", "Byhov\,\ Mogilev\ Region",
"3751646", "Gantsevichi\,\ Brest\ Region",
"3752246", "Slavgorod\,\ Mogilev\ Region",
"3751643", "Bereza\,\ Brest\ Region",
"3752243", "Cherikov\,\ Mogilev\ Region",
"3751651", "Malorita\,\ Brest\ Region",
"3751795", "Slutsk",
"3752332", "Chechersk\,\ Gomel\ Region",
"375225", "Babruysk",
"375165", "Pinsk",
"3752234", "Krugloye\,\ Mogilev\ Region",
"375163", "Baranovichi",
"3751772", "Volozhin",
"3751714", "Cherven",
"3751793", "Kletsk\,\ Minsk\ Region",
"3752337", "Korma\,\ Gomel\ Region",
"375222", "Mogilev",
"375162", "Brest",
"3751645", "Ivatsevichi\,\ Brest\ Region",
"3752245", "Kostyukovichi\,\ Mogilev\ Region",
"375152", "Grodno",
"3751796", "Krupki\,\ Minsk\ Region",
"3752357", "Oktyabrskiy\,\ Gomel\ Region",
"3751564", "Zelva\,\ Grodno\ Region",
"3751592", "Smorgon",};
$areanames{ru} = {"3751644", "Дрогичин\,\ Брестская\ область",
"3752244", "Климовичи\,\ Могилевская\ область",
"3751512", "Волковыск",
"375154", "Лида",
"3752342", "Светлогорск",
"3752241", "Кричев\,\ Могилевская\ область",
"3751641", "Жабинка\,\ Брестская\ область",
"3751713", "Марьина\ Горка\,\ Минская\ область",
"3752236", "Кличев\,\ Могилевская\ область",
"3752233", "Горки\,\ Могилевская\ область",
"3751633", "Ляховичи\,\ Брестская\ область",
"3751716", "Дзержинск",
"3752240", "Мстиславль",
"37517", "Минск",
"3752157", "Докшицы\,\ Витебская\ область",
"3752137", "Дубровно\,\ Витебская\ область",
"3752132", "Лепель",
"3752152", "Миоры\,\ Витебская\ область",
"3751794", "Любань\,\ Минская\ область",
"3752159", "Россоны\,\ Витебская\ область",
"3752158", "Ушачи\,\ Витебская\ область",
"3752347", "Лоев\,\ Гомельская\ область",
"3752235", "Осиповичи",
"3752138", "Лиозно\,\ Витебская\ область",
"3752139", "Городок\,\ Витебская\ область",
"3751655", "Столин\,\ Брестская\ область",
"3751563", "Дятлово\,\ Гродненская\ область",
"3751715", "Березино\,\ Минская\ область",
"3751564", "Зельва\,\ Гродненская\ область",
"3751592", "Сморгонь",
"3752357", "Октябрьский\,\ Гомельская\ область",
"3751796", "Крупки\,\ Минская\ область",
"3751793", "Клецк\,\ Минская\ область",
"3752337", "Корма\,\ Гомельская\ область",
"375222", "Могилев",
"375162", "Брест",
"3752245", "Костюковичи\,\ Могилевская\ область",
"375152", "Гродно",
"3751645", "Ивацевичи\,\ Брестская\ область",
"3752332", "Чечерск\,\ Гомельская\ область",
"375163", "Барановичи",
"3751772", "Воложин",
"3751714", "Червень",
"375165", "Пинск",
"375225", "Бобруйск",
"3752234", "Круглое\,\ Могилевская\ область",
"3751597", "Новогрудок",
"3752230", "Глуск\,\ Могилевская\ область",
"3752339", "Рогачев",
"3751643", "Береза\,\ Брестская\ область",
"3752243", "Чериков\,\ Могилевская\ область",
"3751651", "Малорита\,\ Брестская\ область",
"3751795", "Слуцк",
"3751631", "Каменец\,\ Брестская\ область",
"3752231", "Быхов\,\ Могилевская\ область",
"3751646", "Ганцевичи\,\ Брестская\ область",
"3752246", "Славгород\,\ Могилевская\ область",
"3752154", "Шарковщина\,\ Витебская\ область",
"3751792", "Старые\ Дороги\,\ Минская\ область",
"375176", "Молодечно",
"3752247", "Хотимск\,\ Могилевская\ область",
"3751647", "Лунинец\,\ Брестская\ область",
"3752130", "Шумилино\,\ Витебская\ область",
"3752355", "Наровля\,\ Гомельская\ область",
"3751775", "Жодино",
"3751593", "Ошмяны",
"3752151", "Верхнедвинск\,\ Витебская\ область",
"3751596", "Кореличи\,\ Гродненская\ область",
"3752131", "Бешенковичи\,\ Витебская\ область",
"3752344", "Брагин\,\ Гомельская\ область",
"375216", "Орша",
"3751642", "Кобрин",
"3752242", "Чаусы\,\ Могилевская\ область",
"3751514", "Щучин\,\ Гродненская\ область",
"3752353", "Житковичи\,\ Гомельская\ область",
"3752336", "Буда\-Кошелево\,\ Гомельская\ область",
"3752356", "Лельчицы\,\ Гомельская\ область",
"3751797", "Мядель",
"3752333", "Добруш\,\ Гомельская\ область",
"3752340", "Речица",
"3752248", "Дрибин\,\ Могилевская\ область",
"3751776", "Смолевичи",
"3751511", "Берестовица\,\ Гродненская\ область",
"3751595", "Ивье\,\ Гродненская\ область",
"375212", "Витебск",
"375174", "Солигорск",
"375177", "Борисов",
"3752232", "Белыничи\,\ Могилевская\ область",
"3751632", "Пружаны\,\ Брестская\ область",
"3751774", "Логойск",
"3751652", "Иваново\,\ Брестская\ область",
"3752354", "Ельск\,\ Гомельская\ область",
"3752334", "Жлобин",
"3752350", "Петриков\,\ Гомельская\ область",
"3752135", "Сенно\,\ Витебская\ область",
"3751718", "Узда\,\ Минская\ область",
"3751719", "Копыль\,\ Минская\ область",
"3751513", "Свислочь\,\ Гродненская\ область",
"3752155", "Поставы",
"3752330", "Ветка\,\ Гомельская\ область",
"3752238", "Краснополье\,\ Могилевская\ область",
"3751771", "Вилейка",
"3752239", "Шклов",
"3752346", "Хойники\,\ Гомельская\ область",
"3751770", "Несвиж",
"3751562", "Слоним",
"3751594", "Вороново\,\ Гродненская\ область",
"375214", "Полоцк\/Новополоцк",
"375236", "Мозырь",
"3751591", "Островец\,\ Гродненская\ область",
"3751515", "Мосты\,\ Гродненская\ область",
"3752136", "Толочин",
"3752153", "Браслав",
"3752156", "Глубокое",
"3752133", "Чашники\,\ Витебская\ область",
"3751717", "Столбцы",
"375232", "Гомель",
"3752237", "Кировск\,\ Могилевская\ область",
"3752345", "Калинковичи",};

    sub new {
      my $class = shift;
      my $number = shift;
      $number =~ s/(^\+375|\D)//g;
      my $self = bless({ number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
      return $self if ($self->is_valid());
      $number =~ s/^(?:0|80?)//;
      $self = bless({ number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
      return $self->is_valid() ? $self : undef;
    }
1;