# Copyright (C) 2013 The Libphonenumber Authors

# 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.

# Generated from: Wikipedia translations of the prefixes listed:
# http://www.itu.int/oth/T0202000072/en [2004-03-01]
# http://en.wikipedia.org/wiki/+82 [390794641]

822|سول
8231|جيونجي دو
8232|مدينة إنتشيون الكبرى
8233|جانجون-دو
8241|تشانجتشيونجنام دو
8242|مدينة دايجون الكبرى
8243|تشانجتشيونج دو
8251|مدينة بوسان الكبرى
8252|مدينة أولسان الكبرى
8253|مدينة دياجو الكبرى
8254|جيونجسانجبك دو
8255|جيونسانجنام-دو
8261|جولانام-دو
8262|مدينة جوانججو الكبرى
8263|جولابوك-دو
8264|جيجو دو
