summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgeorgey@chromium.org <georgey@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-04 00:27:30 +0000
committergeorgey@chromium.org <georgey@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-04 00:27:30 +0000
commited418b26ee16196efee1e5680608cc8de427187d (patch)
tree05c3ac0768f09acc053aa9978fb5da4ca0f91736
parent5020e06b2ea69a74f913a2b393cb746f580ab447 (diff)
downloadchromium_src-ed418b26ee16196efee1e5680608cc8de427187d.zip
chromium_src-ed418b26ee16196efee1e5680608cc8de427187d.tar.gz
chromium_src-ed418b26ee16196efee1e5680608cc8de427187d.tar.bz2
Revert 84000 - Autofill phone number enhancements and integration of Phone Number Util Library: part 1
Temporarily the whole library is included, until the patch is upstreamed. BUG=71443 TEST=Unit-tested Review URL: http://codereview.chromium.org/6803005 TBR=georgey@chromium.org Review URL: http://codereview.chromium.org/6920006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84009 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--build/all.gyp9
-rw-r--r--chrome/chrome_browser.gypi1
-rw-r--r--third_party/libphonenumber/README.chromium29
-rw-r--r--third_party/libphonenumber/chrome/regexp_adapter_icuregexp.cc299
-rw-r--r--third_party/libphonenumber/cpp/CMakeLists.txt242
-rw-r--r--third_party/libphonenumber/cpp/LICENSE13
-rw-r--r--third_party/libphonenumber/cpp/README69
-rw-r--r--third_party/libphonenumber/cpp/src/base/singleton.h271
-rw-r--r--third_party/libphonenumber/cpp/src/default_logger.cc63
-rw-r--r--third_party/libphonenumber/cpp/src/default_logger.h56
-rw-r--r--third_party/libphonenumber/cpp/src/logger_adapter.cc25
-rw-r--r--third_party/libphonenumber/cpp/src/logger_adapter.h48
-rw-r--r--third_party/libphonenumber/cpp/src/metadata.cc26
-rw-r--r--third_party/libphonenumber/cpp/src/metadata.h22
-rw-r--r--third_party/libphonenumber/cpp/src/phonenumber.cc87
-rw-r--r--third_party/libphonenumber/cpp/src/phonenumber.h40
-rw-r--r--third_party/libphonenumber/cpp/src/phonenumberutil.cc2266
-rw-r--r--third_party/libphonenumber/cpp/src/phonenumberutil.h678
-rw-r--r--third_party/libphonenumber/cpp/src/phonenumberutil_test.cc2866
-rw-r--r--third_party/libphonenumber/cpp/src/re2_cache.cc75
-rw-r--r--third_party/libphonenumber/cpp/src/re2_cache.h83
-rw-r--r--third_party/libphonenumber/cpp/src/re2_cache_test.cc63
-rw-r--r--third_party/libphonenumber/cpp/src/regexp_adapter.h96
-rw-r--r--third_party/libphonenumber/cpp/src/regexp_adapter_re2.cc192
-rw-r--r--third_party/libphonenumber/cpp/src/regexp_adapter_unittest.cc142
-rw-r--r--third_party/libphonenumber/cpp/src/run_tests.cc7
-rw-r--r--third_party/libphonenumber/cpp/src/stringutil.cc273
-rw-r--r--third_party/libphonenumber/cpp/src/stringutil.h125
-rw-r--r--third_party/libphonenumber/cpp/src/stringutil_test.cc208
-rw-r--r--third_party/libphonenumber/cpp/src/test_metadata.cc26
-rw-r--r--third_party/libphonenumber/cpp/src/test_metadata.h22
-rw-r--r--third_party/libphonenumber/cpp/src/utf/README1
-rw-r--r--third_party/libphonenumber/cpp/src/utf/rune.c350
-rw-r--r--third_party/libphonenumber/cpp/src/utf/stringpiece.h24
-rw-r--r--third_party/libphonenumber/cpp/src/utf/stringprintf.h22
-rw-r--r--third_party/libphonenumber/cpp/src/utf/unicodetext.cc515
-rw-r--r--third_party/libphonenumber/cpp/src/utf/unicodetext.h456
-rw-r--r--third_party/libphonenumber/cpp/src/utf/unilib.cc64
-rw-r--r--third_party/libphonenumber/cpp/src/utf/unilib.h95
-rw-r--r--third_party/libphonenumber/cpp/src/utf/utf.h251
-rw-r--r--third_party/libphonenumber/cpp/src/utf/utfdef.h28
-rw-r--r--third_party/libphonenumber/libphonenumber.gyp133
-rw-r--r--third_party/libphonenumber/patches/version186.patch1177
-rw-r--r--third_party/libphonenumber/resources/PhoneNumberMetaData.xml19202
-rw-r--r--third_party/libphonenumber/resources/PhoneNumberMetaDataForTesting.xml764
-rw-r--r--third_party/libphonenumber/resources/phonemetadata.proto235
-rw-r--r--third_party/libphonenumber/resources/phonenumber.proto121
47 files changed, 0 insertions, 31860 deletions
diff --git a/build/all.gyp b/build/all.gyp
index 4258761..6985334 100644
--- a/build/all.gyp
+++ b/build/all.gyp
@@ -163,7 +163,6 @@
'../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests',
- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests',
'temp_gyp/googleurl.gyp:googleurl_unittests',
],
'conditions': [
@@ -222,7 +221,6 @@
'../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests',
- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests',
'temp_gyp/googleurl.gyp:googleurl_unittests',
],
'conditions': [
@@ -329,7 +327,6 @@
'../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests',
- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests',
'temp_gyp/googleurl.gyp:googleurl_unittests',
],
},
@@ -360,7 +357,6 @@
'../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests',
- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests',
'temp_gyp/googleurl.gyp:googleurl_unittests',
],
},
@@ -378,7 +374,6 @@
'../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests',
- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests',
],
},
{
@@ -401,7 +396,6 @@
'../ui/ui.gyp:gfx_unittests',
'../jingle/jingle.gyp:jingle_unittests',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests',
- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests',
],
},
], # targets
@@ -451,7 +445,6 @@
'../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests',
- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests',
'../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:copy_TestNetscapePlugIn',
'../views/views.gyp:views_unittests',
# TODO(nsylvain) ui_tests.exe depends on test_shell_common.
@@ -481,7 +474,6 @@
'../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests',
- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests',
'temp_gyp/googleurl.gyp:googleurl_unittests',
],
},
@@ -559,7 +551,6 @@
'../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests',
- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests',
'../views/views.gyp:views_unittests',
'temp_gyp/googleurl.gyp:googleurl_unittests',
],
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index e253c53..aecd0ee 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -42,7 +42,6 @@
'../third_party/icu/icu.gyp:icui18n',
'../third_party/icu/icu.gyp:icuuc',
'../third_party/libjingle/libjingle.gyp:libjingle',
- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber',
'../third_party/libxml/libxml.gyp:libxml',
'../third_party/npapi/npapi.gyp:npapi',
'../ui/base/strings/ui_strings.gyp:ui_strings',
diff --git a/third_party/libphonenumber/README.chromium b/third_party/libphonenumber/README.chromium
deleted file mode 100644
index 9cf38ee..0000000
--- a/third_party/libphonenumber/README.chromium
+++ /dev/null
@@ -1,29 +0,0 @@
-Name: International Phone Number Library
-Short Name: libphonenumber
-URL: http://libphonenumber.googlecode.com/svn/trunk/
-Version: unknown
-Revision: 186
-Security Critical: yes
-
-This directory contains the source code of International Phone Number Library
-for C/C++.
-
-This library depends on
-1. base/ for types, scoped_ptr's, etc.
-2. third_party/icu for internationalisation, UTF8-16-32 conversion and regular
- expressions.
-3. third_party/protobuf Lite version.
-
-Additional files, not in the original library:
- libphonenumber.gyp
- README.chromium
- chrome/regexp_adapter_icuregexp.cc
-
-Until the changes are upstreamed library is included directly, with a patch
-in patches/version186.patch applied. The patch adds plugability to the regular
-expression engine, its RE2 (default) implementation, and the unit-test for the
-changes.
-
-The folders included in our repository for now are
- cpp/
- resource/ \ No newline at end of file
diff --git a/third_party/libphonenumber/chrome/regexp_adapter_icuregexp.cc b/third_party/libphonenumber/chrome/regexp_adapter_icuregexp.cc
deleted file mode 100644
index 6b6ad82..0000000
--- a/third_party/libphonenumber/chrome/regexp_adapter_icuregexp.cc
+++ /dev/null
@@ -1,299 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "third_party/libphonenumber/cpp/src/regexp_adapter.h"
-
-// Setup all of the Chromium and WebKit defines
-#include "base/logging.h"
-#include "base/scoped_ptr.h"
-#include "build/build_config.h"
-#include "unicode/regex.h"
-#include "unicode/stringpiece.h"
-#include "unicode/unistr.h"
-
-namespace {
-
-// Converts |source| to UTF-8 string, returns it starting at position |pos|.
-std::string UnicodeStringToUtf8String(icu::UnicodeString const& source,
- int pos) {
- std::string data;
- source.toUTF8String<std::string>(data);
- return data.substr(pos);
-}
-
-} // namespace
-
-// Implementation of the abstract classes RegularExpressionInput and
-// RegularExpression using ICU regular expression capabilities.
-
-// The Regular Expression input class.
-class IcuRegularExpressionInput : public reg_exp::RegularExpressionInput {
- public:
- explicit IcuRegularExpressionInput(const char* utf8_input);
-
- // RegularExpressionInput implementation:
- // Matches string to regular expression, returns true if expression was
- // matched, false otherwise, advances position in the match.
- // |reg_exp| - expression to be matched.
- // |beginning_only| - if true match would be successfull only if appears at
- // the beginning of the tested region of the string.
- // |matched_string1| - successfully matched first string. Can be NULL.
- // |matched_string2| - successfully matched second string. Can be NULL.
- virtual bool ConsumeRegExp(std::string const& reg_exp,
- bool beginning_only,
- std::string* matched_string1,
- std::string* matched_string2);
-
- // Convert unmatched input to a string.
- virtual std::string ToString() const;
-
- icu::UnicodeString* Data() { return &utf8_input_; }
-
- // Position in the input. For the newly created input position is 0,
- // each call to ConsumeRegExp() or RegularExpression::Consume() advances
- // position in the case of the successful match to be after the match.
- int pos() const { return pos_; }
- void set_pos(int pos) { pos_ = pos; }
-
- private:
- icu::UnicodeString utf8_input_;
- int pos_;
-
- DISALLOW_COPY_AND_ASSIGN(IcuRegularExpressionInput);
-};
-
-// The regular expression class.
-class IcuRegularExpression : public reg_exp::RegularExpression {
- public:
- explicit IcuRegularExpression(const char* utf8_regexp);
-
- // RegularExpression implementation:
- // Matches string to regular expression, returns true if expression was
- // matched, false otherwise, advances position in the match.
- // |input_string| - string to be searched.
- // |beginning_only| - if true match would be successfull only if appears at
- // the beginning of the tested region of the string.
- // |matched_string1| - successfully matched first string. Can be NULL.
- // |matched_string2| - successfully matched second string. Can be NULL.
- // |matched_string3| - successfully matched third string. Can be NULL.
- virtual bool Consume(reg_exp::RegularExpressionInput* input_string,
- bool beginning_only,
- std::string* matched_string1,
- std::string* matched_string2,
- std::string* matched_string3) const;
-
- // Matches string to regular expression, returns true if expression was
- // matched, false otherwise.
- // |input_string| - string to be searched.
- // |full_match| - if true match would be successfull only if it matches the
- // complete string.
- // |matched_string| - successfully matched string. Can be NULL.
- virtual bool Match(const char* input_string,
- bool full_match,
- std::string* matched_string) const;
-
- // Replaces match(es) in the |string_to_process|. if |global| is true,
- // replaces all the matches, only the first match otherwise.
- // |replacement_string| - text the matches are replaced with.
- // Returns true if expression successfully processed through the string,
- // even if no actual replacements were made. Returns false in case of an
- // error.
- virtual bool Replace(std::string* string_to_process,
- bool global,
- const char* replacement_string) const;
- private:
- scoped_ptr<icu::RegexPattern> utf8_regexp_;
-
- DISALLOW_COPY_AND_ASSIGN(IcuRegularExpression);
-};
-
-IcuRegularExpressionInput::IcuRegularExpressionInput(const char* utf8_input)
- : pos_(0) {
- DCHECK(utf8_input);
- utf8_input_ = icu::UnicodeString::fromUTF8(utf8_input);
-}
-
-bool IcuRegularExpressionInput::ConsumeRegExp(std::string const& reg_exp,
- bool beginning_only,
- std::string* matched_string1,
- std::string* matched_string2) {
- IcuRegularExpression re(reg_exp.c_str());
-
- return re.Consume(this, beginning_only, matched_string1, matched_string2,
- NULL);
-}
-
-std::string IcuRegularExpressionInput::ToString() const {
- if (pos_ < 0 || pos_ > utf8_input_.length())
- return std::string();
- return UnicodeStringToUtf8String(utf8_input_, pos_);
-}
-
-IcuRegularExpression::IcuRegularExpression(const char* utf8_regexp) {
- DCHECK(utf8_regexp);
- UParseError pe;
- UErrorCode status = U_ZERO_ERROR;
- utf8_regexp_.reset(icu::RegexPattern::compile(
- icu::UnicodeString::fromUTF8(utf8_regexp), 0, pe, status));
- if (U_FAILURE(status)) {
- // All of the passed regular expressions should compile correctly.
- utf8_regexp_.reset(NULL);
- NOTREACHED();
- }
-}
-
-bool IcuRegularExpression::Consume(
- reg_exp::RegularExpressionInput* input_string,
- bool beginning_only,
- std::string* matched_string1,
- std::string* matched_string2,
- std::string* matched_string3) const {
- DCHECK(input_string);
- // matched_string1 may be NULL
- // matched_string2 may be NULL
- // matched_string3 may be NULL
- if (!utf8_regexp_.get())
- return false;
-
- IcuRegularExpressionInput* input =
- reinterpret_cast<IcuRegularExpressionInput *>(input_string);
- UErrorCode status = U_ZERO_ERROR;
- scoped_ptr<icu::RegexMatcher> matcher(utf8_regexp_->matcher(*(input->Data()),
- status));
-
- if (U_FAILURE(status))
- return false;
-
- if (beginning_only) {
- if (!matcher->lookingAt(input->pos(), status))
- return false;
- } else {
- if (!matcher->find(input->pos(), status))
- return false;
- }
- if (U_FAILURE(status))
- return false;
- // If less matches than expected - fail.
- if ((matched_string3 && matcher->groupCount() < 3) ||
- (matched_string2 && matcher->groupCount() < 2) ||
- (matched_string1 && matcher->groupCount() < 1)) {
- return false;
- }
- if (matcher->groupCount() > 0 && matched_string1) {
- *matched_string1 = UnicodeStringToUtf8String(matcher->group(1, status), 0);
- }
- if (matcher->groupCount() > 1 && matched_string2) {
- *matched_string2 = UnicodeStringToUtf8String(matcher->group(2, status), 0);
- }
- if (matcher->groupCount() > 2 && matched_string3) {
- *matched_string3 = UnicodeStringToUtf8String(matcher->group(3, status), 0);
- }
- input->set_pos(matcher->end(status));
- return true;
-}
-
-bool IcuRegularExpression::Match(const char* input_string,
- bool full_match,
- std::string* matched_string) const {
- DCHECK(input_string);
- // matched_string may be NULL
- if (!utf8_regexp_.get())
- return false;
-
- IcuRegularExpressionInput input(input_string);
- UErrorCode status = U_ZERO_ERROR;
- scoped_ptr<icu::RegexMatcher> matcher(utf8_regexp_->matcher(*(input.Data()),
- status));
-
- if (U_FAILURE(status))
- return false;
-
- if (full_match) {
- if (!matcher->matches(input.pos(), status))
- return false;
- } else {
- if (!matcher->find(input.pos(), status))
- return false;
- }
- if (U_FAILURE(status))
- return false;
- if (matcher->groupCount() > 0 && matched_string) {
- *matched_string = UnicodeStringToUtf8String(matcher->group(1, status), 0);
- }
- return true;
-}
-
-bool IcuRegularExpression::Replace(std::string* string_to_process,
- bool global,
- const char* replacement_string) const {
- DCHECK(string_to_process);
- DCHECK(replacement_string);
-
- std::string adapted_replacement(replacement_string);
- // Adapt replacement string from RE2 (\0-9 for matches) format to ICU format
- // ($0-9 for matches). All '$' should be prepended with '\' as well.
- size_t backslash_pos = adapted_replacement.find('\\');
- size_t dollar_pos = adapted_replacement.find('$');
- while (backslash_pos != std::string::npos ||
- dollar_pos != std::string::npos) {
- bool process_dollar = false;
- if (backslash_pos == std::string::npos ||
- (dollar_pos != std::string::npos && dollar_pos < backslash_pos)) {
- process_dollar = true;
- }
- if (process_dollar) {
- adapted_replacement.insert(dollar_pos, "\\");
- dollar_pos = adapted_replacement.find('$', dollar_pos + 2);
- if (backslash_pos != std::string::npos)
- ++backslash_pos;
- } else {
- if (adapted_replacement.length() > backslash_pos + 1) {
- if (adapted_replacement[backslash_pos + 1] >= '0' &&
- adapted_replacement[backslash_pos + 1] <= '9') {
- adapted_replacement[backslash_pos] = '$';
- }
- if (adapted_replacement[backslash_pos + 1] == '\\') {
- // Skip two characters instead of one.
- ++backslash_pos;
- }
- }
- backslash_pos = adapted_replacement.find('\\', backslash_pos + 1);
- }
- }
-
- IcuRegularExpressionInput input(string_to_process->c_str());
- UErrorCode status = U_ZERO_ERROR;
- scoped_ptr<icu::RegexMatcher> matcher(utf8_regexp_->matcher(*(input.Data()),
- status));
- if (U_FAILURE(status))
- return false;
-
- icu::UnicodeString result;
-
- if (global) {
- result = matcher->replaceAll(
- icu::UnicodeString::fromUTF8(adapted_replacement),
- status);
- } else {
- result = matcher->replaceFirst(
- icu::UnicodeString::fromUTF8(adapted_replacement),
- status);
- }
- if (U_FAILURE(status))
- return false;
- *string_to_process = UnicodeStringToUtf8String(result, 0);
- return true;
-}
-
-namespace reg_exp {
-
-RegularExpressionInput* CreateRegularExpressionInput(const char* utf8_input) {
- return new IcuRegularExpressionInput(utf8_input);
-}
-
-RegularExpression* CreateRegularExpression(const char* utf8_regexp) {
- return new IcuRegularExpression(utf8_regexp);
-}
-
-} // namespace reg_exp
diff --git a/third_party/libphonenumber/cpp/CMakeLists.txt b/third_party/libphonenumber/cpp/CMakeLists.txt
deleted file mode 100644
index 720168e..0000000
--- a/third_party/libphonenumber/cpp/CMakeLists.txt
+++ /dev/null
@@ -1,242 +0,0 @@
-# Copyright (C) 2011 Google Inc.
-#
-# 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.
-
-# Author: Philippe Liard
-
-cmake_minimum_required (VERSION 2.8)
-
-project (libphonenumber)
-
-# Helper functions dealing with finding libraries and programs this library
-# depends on.
-
-function (print_error DESCRIPTION FILE)
- message (FATAL_ERROR
- "Can't find ${DESCRIPTION}: can't locate ${FILE}. Please read the README.")
-endfunction ()
-
-# Find a library. If it has not been found, stop CMake with a fatal error
-# message.
-function (find_required_library NAME HEADER LIBRARY DESCRIPTION)
- # Check the header.
- find_path (${NAME}_INCLUDE_DIR ${HEADER})
- set (INCLUDE_DIR ${${NAME}_INCLUDE_DIR})
-
- if (${INCLUDE_DIR} STREQUAL "${INCLUDE_DIR}-NOTFOUND")
- print_error (${DESCRIPTION} ${HEADER})
- endif ()
- include_directories (${INCLUDE_DIR})
- # Check the binary.
- find_library (${NAME}_LIB ${LIBRARY})
- set (LIB ${NAME}_LIB)
-
- if (${LIB} STREQUAL "${LIB}-NOTFOUND")
- print_error (${DESCRIPTION} ${LIBRARY})
- endif ()
-endfunction (find_required_library)
-
-# Check the library version (if pkg-config available).
-find_package (PkgConfig)
-function (check_library_version NAME LIBRARY VERSION)
- if (PKG_CONFIG_EXECUTABLE)
- pkg_check_modules (NAME REQUIRED ${LIBRARY}>=${VERSION})
- endif (PKG_CONFIG_EXECUTABLE)
-endfunction ()
-
-# Find a program. If it has not been found, stop CMake with a fatal error
-# message.
-function (find_required_program NAME FILENAME DESCRIPTION)
- find_program (${NAME}_BIN NAMES ${FILENAME})
-
- if (${NAME}_BIN STREQUAL "${${NAME}_BIN}-NOTFOUND")
- print_error (${DESCRIPTION} ${FILENAME})
- endif ()
-endfunction (find_required_program)
-
-# Find all the required libraries and programs.
-find_required_library (GTEST gtest/gtest.h gtest "Google Test framework")
-
-find_required_library (RE2 re2/re2.h re2 "Google RE2")
-
-find_required_library (PROTOBUF google/protobuf/message_lite.h protobuf
- "Google Protocol Buffers")
-check_library_version (PC_PROTOBUF protobuf 2.4)
-
-find_required_library (ICU unicode/unistr.h icui18n "ICU")
-check_library_version (PC_ICU icui18n 4.4)
-
-find_required_program (PROTOC protoc
- "Google Protocol Buffers compiler (protoc)")
-
-find_required_program (JAVA java
- "Java Runtime Environment")
-
-# Add protoc (Protocol Buffers compiler) target.
-set (RESOURCES_DIR "${CMAKE_SOURCE_DIR}/../resources")
-
-set (
- PROTOBUF_SOURCES "${RESOURCES_DIR}/phonemetadata.proto"
- "${RESOURCES_DIR}/phonenumber.proto"
-)
-
-set (
- PROTOBUF_OUTPUT "${CMAKE_SOURCE_DIR}/src/phonemetadata.pb.cc"
- "${CMAKE_SOURCE_DIR}/src/phonemetadata.pb.h"
- "${CMAKE_SOURCE_DIR}/src/phonenumber.pb.cc"
- "${CMAKE_SOURCE_DIR}/src/phonenumber.pb.h"
-)
-
-add_custom_command (
- COMMAND ${PROTOC_BIN} --cpp_out="${CMAKE_SOURCE_DIR}/src"
- --proto_path=${RESOURCES_DIR} ${PROTOBUF_SOURCES}
-
- OUTPUT ${PROTOBUF_OUTPUT}
- DEPENDS ${PROTOBUF_SOURCES}
-)
-
-add_custom_target (
- generate-sources
-
- DEPENDS ${PROTOBUF_OUTPUT}
- COMMENT "Generating Protocol Buffers code"
-)
-
-# Add metadata code generation targets.
-
-# This function is invoked twice to create metadata & test metadata code
-# generation targets.
-function (add_metadata_gen_target TARGET_NAME
- XML_FILE
- FOR_TESTING)
- if (${FOR_TESTING} STREQUAL "true")
- set (GEN_OUTPUT_PREFIX "${CMAKE_SOURCE_DIR}/src/metadata")
- elseif (${FOR_TESTING} STREQUAL "false")
- set (GEN_OUTPUT_PREFIX "${CMAKE_SOURCE_DIR}/src/test_metadata")
- else ()
- message (FATAL_ERROR
- "Unexpected value '${FOR_TESTING}' for testing parameter")
- endif ()
-
- set (GEN_OUTPUT "${GEN_OUTPUT_PREFIX}.cc ${GEN_OUTPUT_PREFIX}.h")
- set (JAR_PATH "${CMAKE_SOURCE_DIR}/../tools/java/cpp-build/target")
- set (JAR_PATH "${JAR_PATH}/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar")
-
- add_custom_command (
- COMMAND ${JAVA_BIN} -jar
- ${JAR_PATH} BuildMetadataCppFromXml ${XML_FILE} ${CMAKE_SOURCE_DIR}/src
- ${FOR_TESTING}
-
- OUTPUT ${GEN_OUTPUT}
- DEPENDS ${XML_FILE}
- )
- add_custom_target (
- ${TARGET_NAME}
- DEPENDS ${GEN_OUTPUT}
- COMMENT "Generating Metadata code"
- )
-endfunction (add_metadata_gen_target)
-
-# Add metadata generation target.
-add_metadata_gen_target (
- "generate-metadata"
- "${RESOURCES_DIR}/PhoneNumberMetaData.xml"
- "false"
-)
-
-# Add test metadata generation target.
-add_metadata_gen_target (
- "generate-test-metadata"
- "${RESOURCES_DIR}/PhoneNumberMetaDataForTesting.xml"
- "true"
-)
-
-# Platform independent sources.
-set (
- SOURCES
- "src/base/at_exit.cc"
- "src/base/lazy_instance.cc"
- "src/base/string_piece.cc"
- "src/base/synchronization/lock.cc"
- "src/base/threading/thread_restrictions.cc"
- "src/default_logger.cc"
- "src/logger_adapter.cc"
- "src/metadata.cc" # Generated by build tools.
- "src/phonemetadata.pb.cc" # Generated by Protocol Buffers.
- "src/phonenumber.cc"
- "src/phonenumber.pb.cc" # Generated by Protocol Buffers.
- "src/phonenumberutil.cc"
- "src/re2_cache.cc"
- "src/regexp_adapter_re2.cc",
- "src/stringutil.cc"
- "src/utf/rune.c"
- "src/utf/unicodetext.cc"
- "src/utf/unilib.cc"
-)
-
-if (UNIX)
- if (CMAKE_COMPILER_IS_GNUCXX)
- add_definitions ("-Wall -Wextra -Werror")
-
- # The next flags are needed by base/ source files to compile low level code
- # needed by Singleton.
- add_definitions ("-DCOMPILER_GCC -DOS_POSIX -DOS_LINUX")
-
- if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86.*")
- add_definitions ("-DARCH_CPU_X86_FAMILY")
- # Add GCC specific sources.
- list (APPEND SOURCES "src/base/atomicops_internals_x86_gcc.cc")
-
- elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES ".*arm.*")
- add_definitions ("-DARCH_CPU_ARM_FAMILY")
- endif ()
- endif ()
-
- # Add POSIX specific sources.
- list (
- APPEND SOURCES
- "src/base/synchronization/lock_impl_posix.cc"
- "src/base/threading/platform_thread_posix.cc"
- "src/base/threading/thread_local_posix.cc"
- )
-else (WIN32)
- # TODO: add Windows support (define COMPILER_MSVC, OS_WIN).
- list (
- APPEND SOURCES
- "src/base/synchronization/lock_impl_win.cc"
- "src/base/threading/platform_thread_win.cc"
- "src/base/threading/thread_local_win.cc"
- )
- # TODO: Windows specific flags.
-endif ()
-
-include_directories ("src")
-include_directories (".")
-
-add_library (phonenumber STATIC ${SOURCES})
-add_dependencies (phonenumber generate-sources)
-
-target_link_libraries (phonenumber ${RE2_LIB} ${PROTOBUF_LIB} ${ICU_LIB})
-
-# Tests.
-set (TEST_SOURCES
- "src/phonenumberutil_test.cc"
- "src/re2_cache_test.cc"
- "src/regexp_adapter_unittest.cc",
- "src/run_tests.cc"
- "src/stringutil_test.cc"
- "src/test_metadata.cc" # Generated by build tools.
-)
-
-add_executable (libphonenumber_test ${TEST_SOURCES})
-target_link_libraries (libphonenumber_test phonenumber ${GTEST_LIB} pthread)
diff --git a/third_party/libphonenumber/cpp/LICENSE b/third_party/libphonenumber/cpp/LICENSE
deleted file mode 100644
index 145f008..0000000
--- a/third_party/libphonenumber/cpp/LICENSE
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright (C) 2011 Google Inc.
-
-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.
diff --git a/third_party/libphonenumber/cpp/README b/third_party/libphonenumber/cpp/README
deleted file mode 100644
index 775348a..0000000
--- a/third_party/libphonenumber/cpp/README
+++ /dev/null
@@ -1,69 +0,0 @@
-C++ version of the libphonenumber project.
-Work in progress.
-
-This is a port of the Java version.
-
-This project uses some third-party code:
- - src/base/ sources come from Chromium browser.
- - src/utf/ sources come from lib9 which is also used in Go.
-
-Requirements:
- - CMake build system
- http://www.cmake.org
-
- You can install it very easily on a Debian-based GNU/Linux distribution:
- $ sudo apt-get install cmake
-
- - Protocol Buffers
- http://code.google.com/p/protobuf/
- Version 2.4 or more recent is required.
-
- You can install it very easily on a Debian-based GNU/Linux distribution:
- $ sudo apt-get install libprotobuf-dev
-
- Note: if your GNU/Linux distribution doesn't provide the needed package,
- please download and install it manually:
- $ tar xjf protobuf-2.4.tar.bz2
- $ cd protobuf-2.4
- $ ./configure && make && sudo make install
-
- - Google Test
- http://code.google.com/p/googletest/
-
- You can install it very easily on a Debian-based GNU/Linux distribution:
- $ sudo apt-get install libgtest-dev
-
- - RE2
- http://code.google.com/p/re2/
-
- You can install it very easily on Ubuntu Maverick and later:
- $ sudo apt-get install libre2-dev
-
- Otherwise if you use a Debian-based distribution you can fetch the Ubuntu
- package which should work:
- http://packages.ubuntu.com/maverick/libre2-dev
-
- If you want to install it manually:
- You need Mercurial to checkout its source code:
- $ sudo apt-get install mercurial
-
- Then checkout, build and install it:
- $ hg clone https://re2.googlecode.com/hg re2
- $ cd re2
- $ make test
- $ make install
- $ make testinstall
-
- - ICU
- http://userguide.icu-project.org/
-
- You can install it very easily on a Debian-based distribution:
- $ sudo apt-get install libicu-dev
-
-
-How to build libphonenumber C++:
- $ cd libphonenumber
- $ mkdir build
- $ cd build
- $ cmake ../cpp/
- $ make
diff --git a/third_party/libphonenumber/cpp/src/base/singleton.h b/third_party/libphonenumber/cpp/src/base/singleton.h
deleted file mode 100644
index 0fe5e27..0000000
--- a/third_party/libphonenumber/cpp/src/base/singleton.h
+++ /dev/null
@@ -1,271 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BASE_SINGLETON_H_
-#define BASE_SINGLETON_H_
-#pragma once
-
-#include "base/at_exit.h"
-#include "base/atomicops.h"
-#include "base/third_party/dynamic_annotations/dynamic_annotations.h"
-#include "base/threading/platform_thread.h"
-#include "base/threading/thread_restrictions.h"
-
-// Default traits for Singleton<Type>. Calls operator new and operator delete on
-// the object. Registers automatic deletion at process exit.
-// Overload if you need arguments or another memory allocation function.
-template<typename Type>
-struct DefaultSingletonTraits {
- // Allocates the object.
- static Type* New() {
- // The parenthesis is very important here; it forces POD type
- // initialization.
- return new Type();
- }
-
- // Destroys the object.
- static void Delete(Type* x) {
- delete x;
- }
-
- // Set to true to automatically register deletion of the object on process
- // exit. See below for the required call that makes this happen.
- static const bool kRegisterAtExit = true;
-
- // Set to false to disallow access on a non-joinable thread. This is
- // different from kRegisterAtExit because StaticMemorySingletonTraits allows
- // access on non-joinable threads, and gracefully handles this.
- static const bool kAllowedToAccessOnNonjoinableThread = false;
-};
-
-
-// Alternate traits for use with the Singleton<Type>. Identical to
-// DefaultSingletonTraits except that the Singleton will not be cleaned up
-// at exit.
-template<typename Type>
-struct LeakySingletonTraits : public DefaultSingletonTraits<Type> {
- static const bool kRegisterAtExit = false;
- static const bool kAllowedToAccessOnNonjoinableThread = true;
-};
-
-
-// Alternate traits for use with the Singleton<Type>. Allocates memory
-// for the singleton instance from a static buffer. The singleton will
-// be cleaned up at exit, but can't be revived after destruction unless
-// the Resurrect() method is called.
-//
-// This is useful for a certain category of things, notably logging and
-// tracing, where the singleton instance is of a type carefully constructed to
-// be safe to access post-destruction.
-// In logging and tracing you'll typically get stray calls at odd times, like
-// during static destruction, thread teardown and the like, and there's a
-// termination race on the heap-based singleton - e.g. if one thread calls
-// get(), but then another thread initiates AtExit processing, the first thread
-// may call into an object residing in unallocated memory. If the instance is
-// allocated from the data segment, then this is survivable.
-//
-// The destructor is to deallocate system resources, in this case to unregister
-// a callback the system will invoke when logging levels change. Note that
-// this is also used in e.g. Chrome Frame, where you have to allow for the
-// possibility of loading briefly into someone else's process space, and
-// so leaking is not an option, as that would sabotage the state of your host
-// process once you've unloaded.
-template <typename Type>
-struct StaticMemorySingletonTraits {
- // WARNING: User has to deal with get() in the singleton class
- // this is traits for returning NULL.
- static Type* New() {
- if (base::subtle::NoBarrier_AtomicExchange(&dead_, 1))
- return NULL;
- Type* ptr = reinterpret_cast<Type*>(buffer_);
-
- // We are protected by a memory barrier.
- new(ptr) Type();
- return ptr;
- }
-
- static void Delete(Type* p) {
- base::subtle::NoBarrier_Store(&dead_, 1);
- base::subtle::MemoryBarrier();
- if (p != NULL)
- p->Type::~Type();
- }
-
- static const bool kRegisterAtExit = true;
- static const bool kAllowedToAccessOnNonjoinableThread = true;
-
- // Exposed for unittesting.
- static void Resurrect() {
- base::subtle::NoBarrier_Store(&dead_, 0);
- }
-
- private:
- static const size_t kBufferSize = (sizeof(Type) +
- sizeof(intptr_t) - 1) / sizeof(intptr_t);
- static intptr_t buffer_[kBufferSize];
-
- // Signal the object was already deleted, so it is not revived.
- static base::subtle::Atomic32 dead_;
-};
-
-template <typename Type> intptr_t
- StaticMemorySingletonTraits<Type>::buffer_[kBufferSize];
-template <typename Type> base::subtle::Atomic32
- StaticMemorySingletonTraits<Type>::dead_ = 0;
-
-// The Singleton<Type, Traits, DifferentiatingType> class manages a single
-// instance of Type which will be created on first use and will be destroyed at
-// normal process exit). The Trait::Delete function will not be called on
-// abnormal process exit.
-//
-// DifferentiatingType is used as a key to differentiate two different
-// singletons having the same memory allocation functions but serving a
-// different purpose. This is mainly used for Locks serving different purposes.
-//
-// Example usage:
-//
-// In your header:
-// #include "base/singleton.h"
-// class FooClass {
-// public:
-// static FooClass* GetInstance(); <-- See comment below on this.
-// void Bar() { ... }
-// private:
-// FooClass() { ... }
-// friend struct DefaultSingletonTraits<FooClass>;
-//
-// DISALLOW_COPY_AND_ASSIGN(FooClass);
-// };
-//
-// In your source file:
-// FooClass* FooClass::GetInstance() {
-// return Singleton<FooClass>::get();
-// }
-//
-// And to call methods on FooClass:
-// FooClass::GetInstance()->Bar();
-//
-// NOTE: The method accessing Singleton<T>::get() has to be named as GetInstance
-// and it is important that FooClass::GetInstance() is not inlined in the
-// header. This makes sure that when source files from multiple targets include
-// this header they don't end up with different copies of the inlined code
-// creating multiple copies of the singleton.
-//
-// Singleton<> has no non-static members and doesn't need to actually be
-// instantiated.
-//
-// This class is itself thread-safe. The underlying Type must of course be
-// thread-safe if you want to use it concurrently. Two parameters may be tuned
-// depending on the user's requirements.
-//
-// Glossary:
-// RAE = kRegisterAtExit
-//
-// On every platform, if Traits::RAE is true, the singleton will be destroyed at
-// process exit. More precisely it uses base::AtExitManager which requires an
-// object of this type to be instantiated. AtExitManager mimics the semantics
-// of atexit() such as LIFO order but under Windows is safer to call. For more
-// information see at_exit.h.
-//
-// If Traits::RAE is false, the singleton will not be freed at process exit,
-// thus the singleton will be leaked if it is ever accessed. Traits::RAE
-// shouldn't be false unless absolutely necessary. Remember that the heap where
-// the object is allocated may be destroyed by the CRT anyway.
-//
-// Caveats:
-// (a) Every call to get(), operator->() and operator*() incurs some overhead
-// (16ns on my P4/2.8GHz) to check whether the object has already been
-// initialized. You may wish to cache the result of get(); it will not
-// change.
-//
-// (b) Your factory function must never throw an exception. This class is not
-// exception-safe.
-//
-template <typename Type,
- typename Traits = DefaultSingletonTraits<Type>,
- typename DifferentiatingType = Type>
-class Singleton {
- private:
- // Classes using the Singleton<T> pattern should declare a GetInstance()
- // method and call Singleton::get() from within that.
- friend Type* Type::GetInstance();
-
- // This class is safe to be constructed and copy-constructed since it has no
- // member.
-
- // Return a pointer to the one true instance of the class.
- static Type* get() {
- if (!Traits::kAllowedToAccessOnNonjoinableThread)
- base::ThreadRestrictions::AssertSingletonAllowed();
-
- // Our AtomicWord doubles as a spinlock, where a value of
- // kBeingCreatedMarker means the spinlock is being held for creation.
- static const base::subtle::AtomicWord kBeingCreatedMarker = 1;
-
- base::subtle::AtomicWord value = base::subtle::NoBarrier_Load(&instance_);
- if (value != 0 && value != kBeingCreatedMarker) {
- // See the corresponding HAPPENS_BEFORE below.
- ANNOTATE_HAPPENS_AFTER(&instance_);
- return reinterpret_cast<Type*>(value);
- }
-
- // Object isn't created yet, maybe we will get to create it, let's try...
- if (base::subtle::Acquire_CompareAndSwap(&instance_,
- 0,
- kBeingCreatedMarker) == 0) {
- // instance_ was NULL and is now kBeingCreatedMarker. Only one thread
- // will ever get here. Threads might be spinning on us, and they will
- // stop right after we do this store.
- Type* newval = Traits::New();
-
- // This annotation helps race detectors recognize correct lock-less
- // synchronization between different threads calling get().
- // See the corresponding HAPPENS_AFTER below and above.
- ANNOTATE_HAPPENS_BEFORE(&instance_);
- base::subtle::Release_Store(
- &instance_, reinterpret_cast<base::subtle::AtomicWord>(newval));
-
- if (newval != NULL && Traits::kRegisterAtExit)
- base::AtExitManager::RegisterCallback(OnExit, NULL);
-
- return newval;
- }
-
- // We hit a race. Another thread beat us and either:
- // - Has the object in BeingCreated state
- // - Already has the object created...
- // We know value != NULL. It could be kBeingCreatedMarker, or a valid ptr.
- // Unless your constructor can be very time consuming, it is very unlikely
- // to hit this race. When it does, we just spin and yield the thread until
- // the object has been created.
- while (true) {
- value = base::subtle::NoBarrier_Load(&instance_);
- if (value != kBeingCreatedMarker)
- break;
- base::PlatformThread::YieldCurrentThread();
- }
-
- // See the corresponding HAPPENS_BEFORE above.
- ANNOTATE_HAPPENS_AFTER(&instance_);
- return reinterpret_cast<Type*>(value);
- }
-
- // Adapter function for use with AtExit(). This should be called single
- // threaded, so don't use atomic operations.
- // Calling OnExit while singleton is in use by other threads is a mistake.
- static void OnExit(void* /*unused*/) {
- // AtExit should only ever be register after the singleton instance was
- // created. We should only ever get here with a valid instance_ pointer.
- Traits::Delete(
- reinterpret_cast<Type*>(base::subtle::NoBarrier_Load(&instance_)));
- instance_ = 0;
- }
- static base::subtle::AtomicWord instance_;
-};
-
-template <typename Type, typename Traits, typename DifferentiatingType>
-base::subtle::AtomicWord Singleton<Type, Traits, DifferentiatingType>::
- instance_ = 0;
-
-#endif // BASE_SINGLETON_H_
diff --git a/third_party/libphonenumber/cpp/src/default_logger.cc b/third_party/libphonenumber/cpp/src/default_logger.cc
deleted file mode 100644
index 11eb59f..0000000
--- a/third_party/libphonenumber/cpp/src/default_logger.cc
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (C) 2011 Google Inc.
-//
-// 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.
-
-// Author: Philippe Liard
-
-#include <iostream>
-
-#include "default_logger.h"
-
-using std::cerr;
-using std::cout;
-using std::endl;
-
-namespace i18n {
-namespace phonenumbers {
-
-DefaultLogger::DefaultLogger(LogLevel level) : level_(level) {}
-
-DefaultLogger::~DefaultLogger() {}
-
-void DefaultLogger::Fatal(const string& msg) const {
- if (level_ >= LOG_FATAL) {
- cerr << "FATAL libphonenumber " << msg << endl;
- }
-}
-
-void DefaultLogger::Error(const string& msg) const {
- if (level_ >= LOG_ERROR) {
- cerr << "ERROR libphonenumber " << msg << endl;
- }
-}
-
-void DefaultLogger::Warning(const string& msg) const {
- if (level_ >= LOG_WARNING) {
- cerr << "WARNING libphonenumber " << msg << endl;
- }
-}
-
-void DefaultLogger::Info(const string& msg) const {
- if (level_ >= LOG_INFO) {
- cout << "INFO libphonenumber " << msg << endl;
- }
-}
-
-void DefaultLogger::Debug(const string& msg) const {
- if (level_ >= LOG_DEBUG) {
- cout << "DEBUG libphonenumber " << msg << endl;
- }
-}
-
-} // namespace phonenumbers
-} // namespace i18n
diff --git a/third_party/libphonenumber/cpp/src/default_logger.h b/third_party/libphonenumber/cpp/src/default_logger.h
deleted file mode 100644
index d1ebc1f..0000000
--- a/third_party/libphonenumber/cpp/src/default_logger.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (C) 2011 Google Inc.
-//
-// 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.
-
-// Author: Philippe Liard
-
-#ifndef I18N_PHONENUMBERS_DEFAULT_LOGGER_H_
-#define I18N_PHONENUMBERS_DEFAULT_LOGGER_H_
-
-#include "logger_adapter.h"
-
-namespace i18n {
-namespace phonenumbers {
-
-enum LogLevel {
- LOG_FATAL,
- LOG_ERROR,
- LOG_WARNING,
- LOG_INFO,
- LOG_DEBUG,
-};
-
-class DefaultLogger : public LoggerAdapter {
- public:
- virtual ~DefaultLogger();
-
- DefaultLogger(LogLevel level = LOG_WARNING);
-
- virtual void Fatal(const string& msg) const;
-
- virtual void Error(const string& msg) const;
-
- virtual void Warning(const string& msg) const;
-
- virtual void Info(const string& msg) const;
-
- virtual void Debug(const string& msg) const;
-
- private:
- LogLevel level_;
-};
-
-} // namespace phonenumbers
-} // namespace i18n
-
-# endif // I18N_PHONENUMBERS_DEFAULT_LOGGER_H_
diff --git a/third_party/libphonenumber/cpp/src/logger_adapter.cc b/third_party/libphonenumber/cpp/src/logger_adapter.cc
deleted file mode 100644
index edfaa04..0000000
--- a/third_party/libphonenumber/cpp/src/logger_adapter.cc
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (C) 2011 Google Inc.
-//
-// 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.
-
-// Author: Philippe Liard
-
-# include "logger_adapter.h"
-
-namespace i18n {
-namespace phonenumbers {
-
-LoggerAdapter::~LoggerAdapter() {}
-
-} // namespace phonenumbers
-} // namespace i18n
diff --git a/third_party/libphonenumber/cpp/src/logger_adapter.h b/third_party/libphonenumber/cpp/src/logger_adapter.h
deleted file mode 100644
index 37122bc..0000000
--- a/third_party/libphonenumber/cpp/src/logger_adapter.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (C) 2011 Google Inc.
-//
-// 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.
-
-// Author: Philippe Liard
-
-#ifndef I18N_PHONENUMBERS_LOGGER_ADAPTER_H_
-#define I18N_PHONENUMBERS_LOGGER_ADAPTER_H_
-
-#include <string>
-
-using std::string;
-
-namespace i18n {
-namespace phonenumbers {
-
-// Implement this 'interface' to override the way logging is handled
-// in the library.
-class LoggerAdapter {
- public:
- virtual ~LoggerAdapter();
-
- // Logging methods
- virtual void Fatal(const string& msg) const = 0;
-
- virtual void Error(const string& msg) const = 0;
-
- virtual void Warning(const string& msg) const = 0;
-
- virtual void Info(const string& msg) const = 0;
-
- virtual void Debug(const string& msg) const = 0;
-};
-
-} // namespace phonenumbers
-} // namespace i18n
-
-#endif // I18N_PHONENUMBERS_LOGGER_ADAPTER_H_
diff --git a/third_party/libphonenumber/cpp/src/metadata.cc b/third_party/libphonenumber/cpp/src/metadata.cc
deleted file mode 100644
index 85a38ed..0000000
--- a/third_party/libphonenumber/cpp/src/metadata.cc
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-#include "metadata.h"
-
-static const unsigned char metadata_data[] = { 0x0A, 0xAC, 0x01, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x12, 0x2C, 0x12, 0x1D, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x36, 0x38, 0x38, 0x39, 0x1A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x43, 0x50, 0xF7, 0x01, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA8, 0x02, 0x0A, 0x1F, 0x12, 0x14, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x38, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x12, 0x1A, 0x12, 0x09, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x1B, 0x12, 0x0A, 0x5B, 0x33, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x1F, 0x12, 0x0C, 0x31, 0x38, 0x30, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x17, 0x12, 0x06, 0x39, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x44, 0x50, 0xF8, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x24, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x07, 0x5B, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x20, 0x0A, 0x10, 0x28, 0x31, 0x38, 0x30, 0x5B, 0x30, 0x32, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF6, 0x03, 0x0A, 0x24, 0x12, 0x18, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0x35, 0x12, 0x20, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x30, 0x30, 0x5B, 0x32, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1F, 0x12, 0x0B, 0x35, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x2A, 0x12, 0x13, 0x34, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x0C, 0x39, 0x30, 0x30, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x20, 0x12, 0x0C, 0x37, 0x30, 0x30, 0x5B, 0x30, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x45, 0x50, 0xCB, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3A, 0x0A, 0x18, 0x28, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x35, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x35, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x15, 0x28, 0x5B, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x20, 0x0A, 0x0E, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x39, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x38, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8A, 0x02, 0x0A, 0x15, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x3E, 0x12, 0x28, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x1A, 0x21, 0x12, 0x0D, 0x37, 0x5B, 0x30, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x46, 0x50, 0x5D, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2A, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB9, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x42, 0x12, 0x23, 0x32, 0x36, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x34, 0x29, 0x7C, 0x35, 0x36, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x36, 0x38, 0x34, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x46, 0x12, 0x30, 0x32, 0x36, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x36, 0x34, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x36, 0x38, 0x34, 0x36, 0x34, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x24, 0x12, 0x0E, 0x32, 0x36, 0x38, 0x34, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x36, 0x38, 0x34, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x41, 0x47, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x24, 0x12, 0x0E, 0x32, 0x36, 0x38, 0x34, 0x30, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x36, 0x38, 0x34, 0x30, 0x36, 0x31, 0x32, 0x33, 0x34, 0xBA, 0x01, 0x03, 0x32, 0x36, 0x38, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF7, 0x02, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x37, 0x12, 0x18, 0x32, 0x36, 0x34, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x39, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x36, 0x34, 0x34, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x47, 0x12, 0x31, 0x32, 0x36, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x35, 0x7C, 0x34, 0x37, 0x36, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x7C, 0x37, 0x32, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x36, 0x34, 0x32, 0x33, 0x35, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x49, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x32, 0x36, 0x34, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x87, 0x05, 0x0A, 0x2D, 0x12, 0x22, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0xAE, 0x01, 0x12, 0x98, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1F, 0x12, 0x0B, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1A, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x19, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x32, 0x19, 0x12, 0x08, 0x38, 0x30, 0x38, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x38, 0x30, 0x38, 0x31, 0x32, 0x33, 0x3A, 0x1B, 0x12, 0x08, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x4C, 0x50, 0xE3, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2C, 0x0A, 0x11, 0x28, 0x34, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x34, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x12, 0x5B, 0x32, 0x33, 0x35, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x19, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x5B, 0x31, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x88, 0x04, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x12, 0x5A, 0x12, 0x45, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x5C, 0x64, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x28, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x37, 0x37, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1F, 0x12, 0x0C, 0x39, 0x30, 0x5B, 0x30, 0x31, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x1F, 0x12, 0x0C, 0x38, 0x30, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1C, 0x12, 0x09, 0x36, 0x30, 0x32, 0x37, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x30, 0x32, 0x37, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x41, 0x4D, 0x50, 0xF6, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2D, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0B, 0x5B, 0x31, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x21, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x26, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x38, 0x7C, 0x39, 0x30, 0x22, 0x04, 0x30, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF6, 0x03, 0x0A, 0x19, 0x12, 0x0E, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x83, 0x01, 0x12, 0x6F, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x38, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x35, 0x7C, 0x34, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x30, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x35, 0x30, 0x5C, 0x64, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x37, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x34, 0x31, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x37, 0x31, 0x35, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x8D, 0x01, 0x12, 0x79, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x38, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x34, 0x31, 0x36, 0x5B, 0x31, 0x35, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x33, 0x31, 0x38, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x22, 0x12, 0x0E, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x36, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x31, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x4E, 0x50, 0xD7, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x23, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x24, 0x0A, 0x11, 0x28, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEE, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x31, 0x12, 0x1D, 0x32, 0x5C, 0x64, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5C, 0x64, 0x5B, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1F, 0x12, 0x0B, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x4F, 0x50, 0xF4, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE1, 0x0F, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0x22, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x80, 0x01, 0x12, 0x67, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x33, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0B, 0x39, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x1D, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x26, 0x12, 0x10, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x31, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x36, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x52, 0x50, 0x36, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x95, 0x04, 0x30, 0x28, 0x3F, 0x3A, 0x28, 0x31, 0x31, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x3F, 0x7C, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x5D, 0x32, 0x7C, 0x31, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x29, 0x7C, 0x34, 0x37, 0x5B, 0x33, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x3F, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x32, 0x3F, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x3F, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x3F, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x3F, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x3F, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x3F, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x3F, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x3F, 0x7C, 0x38, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x3F, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x29, 0x29, 0x29, 0x31, 0x35, 0x29, 0x3F, 0x82, 0x01, 0x03, 0x39, 0x24, 0x31, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x5B, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x36, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x13, 0x39, 0x28, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x31, 0x35, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x02, 0x39, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x7F, 0x0A, 0x16, 0x39, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x31, 0x35, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x13, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x29, 0x1A, 0x3C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x33, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x9F, 0x01, 0x0A, 0x16, 0x39, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x31, 0x35, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x16, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x1A, 0x59, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x37, 0x7C, 0x36, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x34, 0x36, 0x39, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x12, 0x28, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x61, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x37, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x33, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x2D, 0x0A, 0x19, 0x28, 0x5B, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x36, 0x38, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x27, 0x0A, 0x13, 0x39, 0x28, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0A, 0x39, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x02, 0x39, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x79, 0x0A, 0x16, 0x39, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0A, 0x39, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x13, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x29, 0x1A, 0x3C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x33, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x99, 0x01, 0x0A, 0x16, 0x39, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0A, 0x39, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x16, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x1A, 0x59, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x37, 0x7C, 0x36, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x34, 0x36, 0x39, 0x5D, 0x29, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x23, 0x0A, 0x12, 0x28, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x5C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x37, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x33, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x29, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x32, 0x33, 0x5D, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE5, 0x02, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x43, 0x12, 0x24, 0x36, 0x38, 0x34, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x7C, 0x35, 0x35, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x5B, 0x31, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x38, 0x34, 0x36, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x29, 0x12, 0x13, 0x36, 0x38, 0x34, 0x28, 0x3F, 0x3A, 0x37, 0x33, 0x33, 0x7C, 0x32, 0x35, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x36, 0x38, 0x34, 0x37, 0x33, 0x33, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x53, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x36, 0x38, 0x34, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC9, 0x07, 0x0A, 0x14, 0x12, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x33, 0x7D, 0x12, 0xF3, 0x02, 0x12, 0xDA, 0x02, 0x31, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x32, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x35, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x35, 0x7C, 0x36, 0x33, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x36, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x33, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x36, 0x32, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x36, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x35, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x37, 0x32, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x1A, 0x41, 0x12, 0x2A, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x09, 0x36, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x25, 0x12, 0x0E, 0x38, 0x30, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x38, 0x12, 0x21, 0x28, 0x3F, 0x3A, 0x37, 0x31, 0x31, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x2D, 0x12, 0x16, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x22, 0x12, 0x0B, 0x37, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x09, 0x37, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x41, 0x54, 0x50, 0x2B, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2A, 0x0A, 0x10, 0x28, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x32, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x08, 0x31, 0x7C, 0x35, 0x5B, 0x30, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x5A, 0x0A, 0x11, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x37, 0x33, 0x31, 0x36, 0x7C, 0x34, 0x36, 0x7C, 0x35, 0x31, 0x7C, 0x37, 0x33, 0x32, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x5B, 0x32, 0x38, 0x5D, 0x30, 0x29, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x7E, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x5C, 0x32, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x32, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x35, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEA, 0x05, 0x0A, 0x1A, 0x12, 0x0E, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x21, 0x12, 0x0B, 0x5B, 0x32, 0x33, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x57, 0x12, 0x43, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x3D, 0x12, 0x25, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x3F, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x3F, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x24, 0x12, 0x0E, 0x31, 0x39, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1C, 0x12, 0x08, 0x35, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x1C, 0x12, 0x08, 0x35, 0x35, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x41, 0x55, 0x50, 0x3D, 0x5A, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x33, 0x34, 0x7C, 0x34, 0x5B, 0x31, 0x37, 0x5D, 0x7C, 0x5B, 0x35, 0x36, 0x5D, 0x36, 0x7C, 0x37, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x29, 0x3F, 0x30, 0x30, 0x31, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x8A, 0x01, 0x04, 0x30, 0x30, 0x31, 0x31, 0x9A, 0x01, 0x33, 0x0A, 0x16, 0x28, 0x5B, 0x32, 0x33, 0x37, 0x38, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x32, 0x33, 0x37, 0x38, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x34, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x35, 0x5B, 0x30, 0x35, 0x5D, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x35, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4A, 0x0A, 0x1B, 0x28, 0x31, 0x5B, 0x33, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0C, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x38, 0x5D, 0x30, 0x7C, 0x39, 0x29, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x38, 0x5D, 0x30, 0x30, 0x7C, 0x39, 0x29, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x0C, 0x28, 0x31, 0x38, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x31, 0x38, 0x30, 0x1A, 0x08, 0x31, 0x38, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x12, 0x28, 0x31, 0x33, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x31, 0x33, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBA, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x3D, 0x12, 0x2B, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x35, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x3F, 0x12, 0x2D, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x36, 0x30, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x36, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x35, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x1A, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x1A, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x57, 0x50, 0xA9, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x20, 0x0A, 0x13, 0x28, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF1, 0x05, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0xA5, 0x01, 0x12, 0x8E, 0x01, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x29, 0x5C, 0x64, 0x7C, 0x30, 0x32, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x36, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x39, 0x29, 0x7C, 0x33, 0x36, 0x35, 0x3F, 0x5C, 0x64, 0x7C, 0x34, 0x34, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x2F, 0x12, 0x1B, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x36, 0x5D, 0x30, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1F, 0x12, 0x0B, 0x39, 0x30, 0x30, 0x32, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x32, 0x30, 0x30, 0x31, 0x32, 0x33, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x5A, 0x50, 0xE2, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3B, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x31, 0x5B, 0x32, 0x38, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x38, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x02, 0x32, 0x32, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x1E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x33, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x45, 0x0A, 0x19, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x12, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x35, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC7, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x12, 0x27, 0x12, 0x12, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x20, 0x12, 0x0D, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1D, 0x12, 0x0A, 0x38, 0x5B, 0x30, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1F, 0x12, 0x0C, 0x39, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1A, 0x12, 0x07, 0x38, 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x41, 0x50, 0x83, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2C, 0x0A, 0x19, 0x28, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x1A, 0x12, 0x07, 0x38, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A, 0xE1, 0x02, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x2C, 0x12, 0x0D, 0x32, 0x34, 0x36, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x34, 0x36, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x3C, 0x12, 0x26, 0x32, 0x34, 0x36, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x36, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x38, 0x32, 0x29, 0x5C, 0x64, 0x7C, 0x32, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x34, 0x36, 0x32, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x42, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x32, 0x34, 0x36, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCD, 0x07, 0x0A, 0x2E, 0x12, 0x22, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x7C, 0x31, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xA4, 0x04, 0x12, 0x8E, 0x04, 0x32, 0x28, 0x3F, 0x3A, 0x37, 0x5C, 0x64, 0x31, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x36, 0x5D, 0x31, 0x7C, 0x5B, 0x31, 0x33, 0x37, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x31, 0x7C, 0x38, 0x5B, 0x30, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x31, 0x7C, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x5B, 0x32, 0x35, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x38, 0x32, 0x7C, 0x34, 0x31, 0x36, 0x29, 0x5C, 0x64, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x7C, 0x31, 0x32, 0x3F, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x36, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x31, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x32, 0x31, 0x5C, 0x64, 0x3F, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x32, 0x7C, 0x5B, 0x34, 0x35, 0x37, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x5B, 0x33, 0x39, 0x5D, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x31, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x31, 0x7C, 0x36, 0x32, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x3F, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x32, 0x29, 0x5C, 0x64, 0x7C, 0x36, 0x31, 0x7B, 0x32, 0x7D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x35, 0x5D, 0x31, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x32, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x5B, 0x33, 0x39, 0x5D, 0x31, 0x29, 0x5C, 0x64, 0x7C, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x2D, 0x38, 0x5D, 0x31, 0x7C, 0x36, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x33, 0x32, 0x7C, 0x39, 0x31, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x33, 0x31, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x5C, 0x64, 0x7C, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x31, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x32, 0x31, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x32, 0x7C, 0x31, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x31, 0x7C, 0x32, 0x31, 0x37, 0x29, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x5D, 0x31, 0x7C, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x34, 0x5D, 0x32, 0x7C, 0x38, 0x31, 0x29, 0x5C, 0x64, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x5B, 0x32, 0x34, 0x5D, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x37, 0x31, 0x31, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x4B, 0x12, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x21, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x30, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x44, 0x50, 0xF0, 0x06, 0x5A, 0x07, 0x30, 0x30, 0x5B, 0x31, 0x32, 0x5D, 0x3F, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1D, 0x0A, 0x0A, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x07, 0x5B, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0D, 0x5B, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x21, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEF, 0x04, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0x66, 0x12, 0x53, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x2F, 0x12, 0x1B, 0x34, 0x28, 0x3F, 0x3A, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x34, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x24, 0x12, 0x11, 0x28, 0x3F, 0x3A, 0x39, 0x30, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1A, 0x12, 0x07, 0x38, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x45, 0x50, 0x20, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3D, 0x0A, 0x1F, 0x28, 0x34, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x06, 0x34, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x42, 0x0A, 0x1D, 0x28, 0x5B, 0x32, 0x2D, 0x34, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x0D, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x57, 0x0A, 0x1F, 0x28, 0x5B, 0x31, 0x35, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x20, 0x5B, 0x31, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x19, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x09, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x7C, 0x39, 0x29, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCB, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x54, 0x12, 0x41, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x28, 0x3F, 0x3A, 0x34, 0x39, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x30, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x30, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x34, 0x39, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x4D, 0x12, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x46, 0x50, 0xE2, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC3, 0x05, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x73, 0x12, 0x5F, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x3D, 0x12, 0x28, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x34, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1A, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1D, 0x12, 0x08, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x47, 0x50, 0xE7, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x13, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x1A, 0x11, 0x34, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x11, 0x34, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x46, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1A, 0x5B, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0F, 0x34, 0x38, 0x7C, 0x38, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xFD, 0x02, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x31, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x52, 0x12, 0x3F, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x37, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x50, 0x12, 0x3D, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x5B, 0x33, 0x38, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x37, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x36, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x1A, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x28, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x38, 0x37, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1A, 0x12, 0x07, 0x38, 0x34, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x48, 0x50, 0xCD, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x88, 0x02, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x2B, 0x12, 0x18, 0x32, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x34, 0x12, 0x21, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x5C, 0x64, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x39, 0x35, 0x36, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x49, 0x50, 0x81, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x30, 0x0A, 0x1D, 0x28, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD0, 0x02, 0x0A, 0x1D, 0x12, 0x12, 0x5B, 0x32, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x12, 0x32, 0x12, 0x1F, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x31, 0x5B, 0x30, 0x33, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x36, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x42, 0x12, 0x2F, 0x36, 0x36, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x22, 0x1A, 0x12, 0x0B, 0x37, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x37, 0x33, 0x31, 0x32, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1F, 0x12, 0x0C, 0x38, 0x35, 0x37, 0x5B, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x35, 0x37, 0x35, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x42, 0x4A, 0x50, 0xE5, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDF, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x2F, 0x12, 0x1B, 0x35, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x38, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x39, 0x30, 0x32, 0x37, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x34, 0x12, 0x20, 0x36, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x32, 0x5B, 0x32, 0x37, 0x5D, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x39, 0x30, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x4C, 0x50, 0xCE, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x87, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x5E, 0x12, 0x3F, 0x34, 0x34, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x32, 0x33, 0x7C, 0x36, 0x31, 0x7C, 0x5B, 0x33, 0x34, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7C, 0x36, 0x30, 0x7C, 0x38, 0x39, 0x29, 0x7C, 0x38, 0x32, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x30, 0x12, 0x1A, 0x34, 0x34, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x34, 0x34, 0x31, 0x33, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x4D, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x34, 0x34, 0x31, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDE, 0x01, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x1C, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1B, 0x12, 0x09, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x4E, 0x50, 0xA1, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDD, 0x03, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0xE2, 0x01, 0x12, 0xCC, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x5B, 0x32, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x33, 0x34, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x33, 0x39, 0x7C, 0x36, 0x32, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x35, 0x7C, 0x34, 0x32, 0x7C, 0x35, 0x5B, 0x32, 0x35, 0x37, 0x5D, 0x7C, 0x38, 0x36, 0x7C, 0x39, 0x5B, 0x32, 0x35, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x5B, 0x32, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x32, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1C, 0x12, 0x09, 0x5B, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x4F, 0x50, 0xCF, 0x04, 0x5A, 0x08, 0x30, 0x30, 0x28, 0x31, 0x5C, 0x64, 0x29, 0x3F, 0x62, 0x01, 0x30, 0x7A, 0x07, 0x30, 0x28, 0x31, 0x5C, 0x64, 0x29, 0x3F, 0x9A, 0x01, 0x29, 0x0A, 0x0E, 0x28, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x22, 0x00, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x22, 0x0A, 0x0B, 0x28, 0x5B, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x02, 0x24, 0x31, 0x1A, 0x04, 0x5B, 0x36, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF1, 0x04, 0x0A, 0x18, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x56, 0x12, 0x3E, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x29, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x54, 0x12, 0x3E, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x29, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x31, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x21, 0x12, 0x0A, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x25, 0x12, 0x0E, 0x5B, 0x33, 0x35, 0x39, 0x5D, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x33, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x29, 0x12, 0x13, 0x28, 0x3F, 0x3A, 0x34, 0x30, 0x30, 0x5C, 0x64, 0x7C, 0x33, 0x30, 0x30, 0x33, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x34, 0x30, 0x30, 0x34, 0x31, 0x32, 0x33, 0x34, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x52, 0x50, 0x37, 0x5A, 0x1B, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x31, 0x7C, 0x34, 0x33, 0x29, 0x62, 0x01, 0x30, 0x7A, 0x23, 0x30, 0x28, 0x3F, 0x3A, 0x28, 0x31, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x29, 0x29, 0x3F, 0x82, 0x01, 0x02, 0x24, 0x32, 0x9A, 0x01, 0x3F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x0A, 0x30, 0x20, 0x24, 0x43, 0x43, 0x20, 0x28, 0x24, 0x31, 0x29, 0x9A, 0x01, 0x30, 0x0A, 0x11, 0x28, 0x5B, 0x33, 0x34, 0x5D, 0x30, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x33, 0x34, 0x5D, 0x30, 0x30, 0x1A, 0x08, 0x34, 0x30, 0x30, 0x7C, 0x33, 0x30, 0x30, 0x33, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x1A, 0x28, 0x5B, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x5B, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x97, 0x04, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x8D, 0x01, 0x12, 0x6E, 0x32, 0x34, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x36, 0x31, 0x7C, 0x35, 0x30, 0x32, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x37, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x30, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x34, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x83, 0x01, 0x12, 0x6D, 0x32, 0x34, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x35, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x31, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x35, 0x5D, 0x7C, 0x34, 0x34, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x35, 0x7C, 0x37, 0x37, 0x29, 0x7C, 0x36, 0x5B, 0x33, 0x34, 0x5D, 0x36, 0x7C, 0x37, 0x32, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x34, 0x32, 0x33, 0x35, 0x39, 0x31, 0x32, 0x33, 0x34, 0x22, 0x3F, 0x12, 0x29, 0x32, 0x34, 0x32, 0x33, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x53, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x32, 0x34, 0x32, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC5, 0x02, 0x0A, 0x1C, 0x12, 0x11, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x12, 0x4A, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1A, 0x12, 0x07, 0x31, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x54, 0x50, 0xCF, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x19, 0x28, 0x31, 0x37, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xFF, 0x03, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0xB9, 0x01, 0x12, 0xA6, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x34, 0x37, 0x5D, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x34, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x34, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x36, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x32, 0x12, 0x1F, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x19, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x22, 0x12, 0x0F, 0x37, 0x39, 0x5B, 0x31, 0x32, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x39, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x42, 0x57, 0x50, 0x8B, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x26, 0x0A, 0x13, 0x28, 0x37, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x37, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1B, 0x0A, 0x0B, 0x28, 0x39, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x39, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9A, 0x04, 0x0A, 0x21, 0x12, 0x15, 0x5B, 0x31, 0x32, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xB6, 0x01, 0x12, 0x9F, 0x01, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x35, 0x32, 0x34, 0x35, 0x30, 0x39, 0x31, 0x31, 0x1A, 0x39, 0x12, 0x25, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x33, 0x5C, 0x64, 0x7C, 0x34, 0x34, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x39, 0x34, 0x39, 0x31, 0x31, 0x39, 0x31, 0x31, 0x22, 0x21, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x31, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x32, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x59, 0x50, 0xF7, 0x02, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x03, 0x38, 0x30, 0x3F, 0x9A, 0x01, 0x33, 0x0A, 0x17, 0x28, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x22, 0x05, 0x38, 0x20, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x19, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC7, 0x02, 0x0A, 0x25, 0x12, 0x12, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x30, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x12, 0x23, 0x12, 0x11, 0x5B, 0x32, 0x33, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x2C, 0x12, 0x1A, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x36, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x22, 0x20, 0x12, 0x09, 0x30, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x30, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x31, 0x32, 0x33, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x5A, 0x50, 0xF5, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x30, 0x29, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2D, 0x24, 0x34, 0x1A, 0x01, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0x88, 0x05, 0x0A, 0x24, 0x12, 0x11, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0xC2, 0x01, 0x12, 0xA2, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x34, 0x7C, 0x32, 0x36, 0x7C, 0x5B, 0x34, 0x38, 0x5D, 0x39, 0x7C, 0x35, 0x30, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x7C, 0x34, 0x33, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x33, 0x7C, 0x31, 0x5B, 0x36, 0x38, 0x5D, 0x7C, 0x33, 0x38, 0x7C, 0x35, 0x5B, 0x30, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x31, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x37, 0x39, 0x7C, 0x38, 0x5B, 0x31, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x31, 0x33, 0x7C, 0x34, 0x37, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x38, 0x5D, 0x30, 0x7C, 0x37, 0x38, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x5D, 0x37, 0x7C, 0x31, 0x39, 0x7C, 0x29, 0x7C, 0x39, 0x30, 0x5B, 0x32, 0x35, 0x5D, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x33, 0x31, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x30, 0x34, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0xB9, 0x01, 0x12, 0x99, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x34, 0x7C, 0x32, 0x36, 0x7C, 0x5B, 0x34, 0x38, 0x5D, 0x39, 0x7C, 0x35, 0x30, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x7C, 0x34, 0x33, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x33, 0x7C, 0x31, 0x5B, 0x36, 0x38, 0x5D, 0x7C, 0x33, 0x38, 0x7C, 0x35, 0x5B, 0x30, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x31, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x37, 0x39, 0x7C, 0x38, 0x5B, 0x31, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x31, 0x33, 0x7C, 0x34, 0x37, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x38, 0x5D, 0x30, 0x7C, 0x37, 0x38, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x5D, 0x37, 0x7C, 0x31, 0x39, 0x7C, 0x29, 0x7C, 0x39, 0x30, 0x5B, 0x32, 0x35, 0x5D, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x30, 0x34, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x45, 0x12, 0x26, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x33, 0x31, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x41, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB1, 0x02, 0x0A, 0x1F, 0x12, 0x14, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x1C, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x2D, 0x12, 0x19, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x44, 0x50, 0xF3, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x10, 0x28, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF9, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x1D, 0x12, 0x0A, 0x32, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x1F, 0x12, 0x0C, 0x37, 0x5B, 0x30, 0x32, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1C, 0x12, 0x09, 0x38, 0x37, 0x37, 0x36, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x37, 0x37, 0x36, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x46, 0x50, 0xEC, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA7, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x23, 0x12, 0x0F, 0x32, 0x32, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x20, 0x12, 0x0C, 0x30, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x30, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x47, 0x50, 0xF2, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x30, 0x32, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x25, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x38, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xBC, 0x03, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x49, 0x12, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x20, 0x12, 0x0C, 0x37, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x0C, 0x39, 0x30, 0x5B, 0x30, 0x31, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x21, 0x12, 0x0D, 0x38, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x1C, 0x12, 0x08, 0x38, 0x37, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x37, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x48, 0x50, 0x29, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x41, 0x0A, 0x1E, 0x28, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x0B, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x19, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x09, 0x38, 0x5B, 0x30, 0x34, 0x37, 0x5D, 0x7C, 0x39, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCE, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x6A, 0x12, 0x57, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x33, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x30, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x5B, 0x30, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x37, 0x12, 0x24, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x36, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x49, 0x50, 0xE1, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xE5, 0x01, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x12, 0x2B, 0x12, 0x1B, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x24, 0x12, 0x14, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x37, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x4B, 0x50, 0xAA, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAD, 0x06, 0x0A, 0x24, 0x12, 0x18, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x30, 0x30, 0x7C, 0x31, 0x32, 0x33, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x59, 0x12, 0x44, 0x28, 0x3F, 0x3A, 0x32, 0x7C, 0x33, 0x32, 0x7C, 0x34, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x21, 0x12, 0x0B, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x29, 0x12, 0x12, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x31, 0x32, 0x33, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0A, 0x36, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0A, 0x36, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x34, 0x34, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x43, 0x4C, 0x50, 0x38, 0x5A, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x29, 0x29, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x33, 0x30, 0x7C, 0x28, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x29, 0x29, 0x9A, 0x01, 0x30, 0x0A, 0x11, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x08, 0x24, 0x43, 0x43, 0x20, 0x28, 0x24, 0x31, 0x29, 0x9A, 0x01, 0x4B, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x16, 0x5B, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x5D, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x08, 0x24, 0x43, 0x43, 0x20, 0x28, 0x24, 0x31, 0x29, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x39, 0x29, 0x28, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x34, 0x34, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x34, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x18, 0x28, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x36, 0x30, 0x7C, 0x38, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x1A, 0x28, 0x36, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x02, 0x36, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x14, 0x28, 0x31, 0x32, 0x33, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC6, 0x02, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x21, 0x12, 0x0E, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x33, 0x33, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1C, 0x12, 0x09, 0x5B, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1A, 0x12, 0x07, 0x38, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x4D, 0x50, 0xED, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x3E, 0x0A, 0x20, 0x28, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x09, 0x5B, 0x32, 0x33, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x13, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAA, 0x13, 0x0A, 0x2C, 0x12, 0x20, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0xEF, 0x03, 0x12, 0xD6, 0x03, 0x32, 0x31, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x31, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x39, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x35, 0x7C, 0x34, 0x39, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x36, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x5B, 0x31, 0x35, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x7C, 0x38, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0A, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x3D, 0x12, 0x26, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x37, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x28, 0x12, 0x0F, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x29, 0x3F, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x0B, 0x31, 0x36, 0x5B, 0x30, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x36, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x08, 0x34, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x34, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x43, 0x4E, 0x50, 0x56, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2A, 0x0A, 0x10, 0x28, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x08, 0x38, 0x30, 0x5B, 0x32, 0x36, 0x37, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x16, 0x28, 0x5B, 0x34, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x34, 0x38, 0x5D, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x24, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x32, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x73, 0x0A, 0x16, 0x28, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0F, 0x31, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x0F, 0x31, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x26, 0x31, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x7B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x51, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x31, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x39, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xD7, 0x02, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0xAC, 0x02, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x35, 0x7C, 0x34, 0x39, 0x7C, 0x35, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x36, 0x5D, 0x7C, 0x35, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x5B, 0x31, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x31, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x31, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x15, 0x28, 0x31, 0x30, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x30, 0x38, 0x1A, 0x04, 0x31, 0x30, 0x38, 0x30, 0x1A, 0x05, 0x31, 0x30, 0x38, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xA2, 0x01, 0x26, 0x0A, 0x14, 0x28, 0x32, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x6E, 0x0A, 0x16, 0x28, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0F, 0x31, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x0F, 0x31, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x26, 0x31, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x25, 0x0A, 0x10, 0x28, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x08, 0x38, 0x30, 0x5B, 0x32, 0x36, 0x37, 0x38, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x76, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x51, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x31, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x39, 0x38, 0x2A, 0x00, 0xA2, 0x01, 0xD2, 0x02, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0xAC, 0x02, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x35, 0x7C, 0x34, 0x39, 0x7C, 0x35, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x36, 0x5D, 0x7C, 0x35, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x5B, 0x31, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x30, 0x0A, 0x19, 0x28, 0x31, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x31, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x5B, 0x34, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x34, 0x38, 0x5D, 0x30, 0x30, 0x2A, 0x00, 0xA2, 0x01, 0x35, 0x0A, 0x15, 0x28, 0x31, 0x30, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x30, 0x38, 0x1A, 0x04, 0x31, 0x30, 0x38, 0x30, 0x1A, 0x05, 0x31, 0x30, 0x38, 0x30, 0x30, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xFC, 0x05, 0x0A, 0x27, 0x12, 0x1B, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x30, 0x2C, 0x33, 0x7D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x24, 0x12, 0x11, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x34, 0x12, 0x1E, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x33, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x20, 0x12, 0x09, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x2D, 0x12, 0x16, 0x31, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x34, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x4F, 0x50, 0x39, 0x5A, 0x11, 0x30, 0x30, 0x5B, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x23, 0x35, 0x35, 0x35, 0x7C, 0x23, 0x39, 0x39, 0x39, 0x62, 0x01, 0x30, 0x7A, 0x14, 0x30, 0x28, 0x5B, 0x33, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x35, 0x36, 0x29, 0x29, 0x9A, 0x01, 0x6C, 0x0A, 0x0B, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x1F, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x1A, 0x26, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x39, 0x7C, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x25, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x33, 0x22, 0x00, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x4E, 0x0A, 0x11, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x30, 0x34, 0x5D, 0x29, 0x1A, 0x19, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x30, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x34, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x5F, 0x0A, 0x0B, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x1F, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x1A, 0x26, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x39, 0x7C, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x1C, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x33, 0x2A, 0x00, 0xA2, 0x01, 0x49, 0x0A, 0x11, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x30, 0x34, 0x5D, 0x29, 0x1A, 0x19, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x30, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x34, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF9, 0x02, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x32, 0x34, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x1F, 0x12, 0x0C, 0x32, 0x5B, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x2B, 0x12, 0x18, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x22, 0x12, 0x0C, 0x39, 0x30, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1C, 0x12, 0x09, 0x34, 0x30, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x34, 0x30, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x43, 0x52, 0x50, 0xFA, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x7A, 0x06, 0x28, 0x31, 0x39, 0x30, 0x30, 0x29, 0x9A, 0x01, 0x2E, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0B, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x32, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF8, 0x02, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x12, 0x6B, 0x12, 0x56, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x19, 0x12, 0x06, 0x35, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x55, 0x50, 0x35, 0x5A, 0x03, 0x31, 0x31, 0x39, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x0D, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x37, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x1E, 0x0A, 0x0B, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x35, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x88, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x49, 0x12, 0x37, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x21, 0x12, 0x0F, 0x28, 0x3F, 0x3A, 0x39, 0x5C, 0x64, 0x7C, 0x35, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x39, 0x31, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x56, 0x50, 0xEE, 0x01, 0x5A, 0x01, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA5, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x1E, 0x12, 0x0B, 0x32, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x33, 0x12, 0x20, 0x37, 0x37, 0x37, 0x37, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x09, 0x38, 0x30, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x1C, 0x12, 0x09, 0x39, 0x30, 0x30, 0x39, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1B, 0x12, 0x08, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x59, 0x50, 0xE5, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1E, 0x0A, 0x11, 0x28, 0x5B, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE9, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x3D, 0x12, 0x29, 0x32, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x2D, 0x12, 0x19, 0x36, 0x30, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x37, 0x5B, 0x32, 0x33, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x21, 0x12, 0x0D, 0x39, 0x30, 0x5B, 0x30, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1F, 0x12, 0x0B, 0x38, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x1F, 0x12, 0x0B, 0x37, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x43, 0x5A, 0x50, 0xA4, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2A, 0x0A, 0x1A, 0x28, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9F, 0x0C, 0x0A, 0x4D, 0x12, 0x41, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x33, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x32, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x37, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x31, 0x34, 0x7D, 0x12, 0xC5, 0x01, 0x12, 0xAE, 0x01, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x33, 0x7D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x7C, 0x32, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x33, 0x38, 0x5D, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x31, 0x34, 0x7D, 0x32, 0x08, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x54, 0x12, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x35, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x29, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x23, 0x12, 0x0A, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x31, 0x12, 0x18, 0x39, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x21, 0x12, 0x0B, 0x31, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x34, 0x7D, 0x32, 0x08, 0x31, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3A, 0x1F, 0x12, 0x08, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x44, 0x45, 0x50, 0x31, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x11, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x1A, 0x0E, 0x33, 0x5B, 0x30, 0x32, 0x5D, 0x7C, 0x34, 0x30, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x6C, 0x0A, 0x11, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x1A, 0x49, 0x32, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x31, 0x7C, 0x30, 0x5B, 0x32, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x32, 0x38, 0x7C, 0x33, 0x34, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x34, 0x30, 0x29, 0x7C, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xBD, 0x04, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x1A, 0x51, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x36, 0x39, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x1A, 0xC7, 0x03, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x31, 0x7C, 0x33, 0x5B, 0x31, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x36, 0x38, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x23, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x1A, 0x01, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x14, 0x28, 0x5B, 0x31, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0A, 0x31, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x43, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0A, 0x28, 0x3F, 0x3A, 0x31, 0x38, 0x7C, 0x39, 0x30, 0x29, 0x30, 0x1A, 0x0D, 0x31, 0x38, 0x30, 0x7C, 0x39, 0x30, 0x30, 0x5B, 0x31, 0x33, 0x35, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x13, 0x28, 0x37, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x37, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x32, 0x12, 0x1C, 0x31, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x31, 0x31, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x34, 0x7D, 0x32, 0x08, 0x31, 0x36, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE1, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x12, 0x27, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x35, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x32, 0x35, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1B, 0x12, 0x0A, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x44, 0x4A, 0x50, 0xFD, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE5, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x4E, 0x12, 0x3B, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x49, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x38, 0x31, 0x7C, 0x39, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1A, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1A, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x44, 0x4B, 0x50, 0x2D, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x1E, 0x28, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x90, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x52, 0x12, 0x33, 0x37, 0x36, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x30, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x37, 0x36, 0x37, 0x34, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x45, 0x12, 0x2F, 0x37, 0x36, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x34, 0x36, 0x5D, 0x35, 0x7C, 0x37, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x31, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x31, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x36, 0x37, 0x32, 0x32, 0x35, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x44, 0x4D, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x37, 0x36, 0x37, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDF, 0x02, 0x0A, 0x1D, 0x12, 0x0A, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x30, 0x12, 0x11, 0x38, 0x5B, 0x30, 0x32, 0x34, 0x5D, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x30, 0x39, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x30, 0x12, 0x11, 0x38, 0x5B, 0x30, 0x32, 0x34, 0x5D, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x30, 0x39, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x44, 0x4F, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x07, 0x38, 0x5B, 0x30, 0x32, 0x34, 0x5D, 0x39, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x93, 0x04, 0x0A, 0x21, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0x47, 0x12, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x39, 0x36, 0x31, 0x39, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x2E, 0x12, 0x1A, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x37, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0F, 0x38, 0x30, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x31, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x20, 0x12, 0x0C, 0x38, 0x30, 0x5B, 0x31, 0x32, 0x5D, 0x31, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1F, 0x12, 0x0B, 0x39, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x38, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x44, 0x5A, 0x50, 0xD5, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3B, 0x0A, 0x1E, 0x28, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3E, 0x0A, 0x21, 0x28, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x1A, 0x28, 0x39, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF7, 0x03, 0x0A, 0x20, 0x12, 0x14, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x31, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x24, 0x12, 0x0F, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1C, 0x12, 0x09, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x25, 0x12, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x45, 0x43, 0x50, 0xD1, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2E, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x16, 0x28, 0x31, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x27, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x29, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x27, 0x0A, 0x16, 0x28, 0x31, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE9, 0x05, 0x0A, 0x23, 0x12, 0x17, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x42, 0x12, 0x2E, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x69, 0x12, 0x54, 0x28, 0x3F, 0x3A, 0x35, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x35, 0x29, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x32, 0x12, 0x1C, 0x38, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x31, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1A, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1F, 0x12, 0x0C, 0x37, 0x30, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x45, 0x45, 0x50, 0xF4, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x9C, 0x01, 0x0A, 0x15, 0x28, 0x5B, 0x33, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x2D, 0x5B, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x1A, 0x49, 0x5B, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x5D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x35, 0x29, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x26, 0x0A, 0x12, 0x28, 0x37, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x37, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x14, 0x28, 0x38, 0x30, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x30, 0x30, 0x1A, 0x04, 0x38, 0x30, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x4F, 0x0A, 0x15, 0x28, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x12, 0x34, 0x30, 0x7C, 0x35, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x1A, 0x17, 0x34, 0x30, 0x7C, 0x35, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x1F, 0x12, 0x0D, 0x38, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x98, 0x04, 0x0A, 0x23, 0x12, 0x17, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xAF, 0x01, 0x12, 0x98, 0x01, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5C, 0x64, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x35, 0x37, 0x38, 0x5D, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x36, 0x34, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x36, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x33, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x32, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x35, 0x5D, 0x32, 0x7C, 0x33, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x31, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x1A, 0x23, 0x12, 0x0F, 0x31, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x45, 0x47, 0x50, 0x14, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x23, 0x0A, 0x0D, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x10, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x16, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x89, 0x02, 0x0A, 0x15, 0x12, 0x0A, 0x5B, 0x31, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x12, 0x3D, 0x12, 0x29, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x34, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x33, 0x37, 0x30, 0x33, 0x36, 0x32, 0x1A, 0x25, 0x12, 0x13, 0x31, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x45, 0x52, 0x50, 0xA3, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD5, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x22, 0x12, 0x0E, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1A, 0x12, 0x06, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1F, 0x12, 0x0B, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x0C, 0x38, 0x30, 0x5B, 0x33, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1F, 0x12, 0x0B, 0x39, 0x30, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x1B, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x45, 0x53, 0x50, 0x22, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x34, 0x0A, 0x21, 0x28, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x1B, 0x12, 0x07, 0x35, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x0A, 0xF5, 0x06, 0x0A, 0x16, 0x12, 0x0B, 0x5B, 0x31, 0x2D, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0xA6, 0x05, 0x12, 0x8F, 0x05, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x33, 0x7C, 0x33, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x38, 0x37, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x33, 0x5D, 0x7C, 0x36, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x34, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x38, 0x7C, 0x32, 0x5B, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x38, 0x5D, 0x29, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x33, 0x5C, 0x64, 0x7C, 0x34, 0x34, 0x5B, 0x31, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x36, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x33, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x34, 0x5B, 0x31, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x35, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x36, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x37, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x30, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x32, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x34, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x35, 0x35, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x36, 0x5B, 0x30, 0x31, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x35, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x36, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x37, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x35, 0x35, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x36, 0x30, 0x7C, 0x38, 0x38, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x32, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x33, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x35, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x37, 0x7C, 0x35, 0x35, 0x5B, 0x30, 0x35, 0x5D, 0x7C, 0x28, 0x3F, 0x3A, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x29, 0x5B, 0x31, 0x34, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x5B, 0x31, 0x34, 0x39, 0x5D, 0x7C, 0x32, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x35, 0x30, 0x7C, 0x36, 0x36, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x37, 0x5C, 0x64, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x31, 0x31, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x20, 0x12, 0x0C, 0x39, 0x31, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x45, 0x54, 0x50, 0xFB, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2B, 0x0A, 0x18, 0x28, 0x5B, 0x31, 0x2D, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA0, 0x05, 0x0A, 0x23, 0x12, 0x17, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0x7A, 0x12, 0x62, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x34, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x29, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x29, 0x7C, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x7C, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0A, 0x31, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x2A, 0x12, 0x13, 0x34, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x35, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x09, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x22, 0x12, 0x0A, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x23, 0x12, 0x0D, 0x5B, 0x36, 0x37, 0x5D, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x46, 0x49, 0x50, 0xE6, 0x02, 0x5A, 0x0A, 0x30, 0x30, 0x7C, 0x39, 0x39, 0x5B, 0x30, 0x34, 0x39, 0x5D, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x37, 0x0A, 0x11, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x14, 0x32, 0x5B, 0x30, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x35, 0x30, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0E, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x12, 0x28, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0xA1, 0x01, 0x12, 0x8A, 0x01, 0x31, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, 0x7D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, 0x7D, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x36, 0x7D, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x37, 0x7D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x29, 0x7C, 0x33, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x35, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x37, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x31, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x0A, 0xD8, 0x02, 0x0A, 0x26, 0x12, 0x13, 0x5B, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x30, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x12, 0x2F, 0x12, 0x1D, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x35, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x27, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x20, 0x12, 0x09, 0x30, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x30, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x46, 0x4A, 0x50, 0xA7, 0x05, 0x5A, 0x09, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x35, 0x32, 0x29, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x23, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xAB, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x12, 0x1B, 0x12, 0x0B, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x33, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x19, 0x12, 0x09, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x35, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x46, 0x4B, 0x50, 0xF4, 0x03, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF4, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x33, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x30, 0x12, 0x1E, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x5D, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x30, 0x12, 0x1E, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x5D, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x46, 0x4D, 0x50, 0xB3, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDB, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x12, 0x2A, 0x12, 0x19, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x7C, 0x5B, 0x33, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x31, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x2C, 0x12, 0x1B, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x22, 0x1F, 0x12, 0x0E, 0x38, 0x30, 0x5B, 0x32, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x38, 0x30, 0x32, 0x31, 0x32, 0x33, 0x2A, 0x34, 0x12, 0x23, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x34, 0x35, 0x5D, 0x5B, 0x31, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x39, 0x30, 0x31, 0x31, 0x32, 0x33, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x24, 0x12, 0x13, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x46, 0x4F, 0x50, 0xAA, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x7A, 0x13, 0x28, 0x31, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x30, 0x7C, 0x38, 0x38, 0x29, 0x29, 0x9A, 0x01, 0x17, 0x0A, 0x07, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x02, 0x24, 0x31, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB7, 0x03, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x1E, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x26, 0x12, 0x12, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x37, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x23, 0x12, 0x0F, 0x38, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x39, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x32, 0x12, 0x1E, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x5D, 0x7C, 0x38, 0x34, 0x7C, 0x39, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1A, 0x12, 0x06, 0x39, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x46, 0x52, 0x50, 0x21, 0x5A, 0x08, 0x5B, 0x30, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x45, 0x0A, 0x24, 0x28, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0E, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x20, 0x24, 0x35, 0x1A, 0x06, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x1D, 0x28, 0x38, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x38, 0x22, 0x04, 0x30, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEF, 0x03, 0x0A, 0x1C, 0x12, 0x11, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x12, 0x5A, 0x12, 0x49, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x34, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x34, 0x5D, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x33, 0x36, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x1A, 0xAF, 0x01, 0x12, 0x9B, 0x01, 0x30, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x32, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x33, 0x38, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x31, 0x7C, 0x38, 0x33, 0x7C, 0x39, 0x5B, 0x35, 0x37, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x34, 0x36, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x30, 0x36, 0x30, 0x33, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x41, 0x50, 0xF1, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x1A, 0x28, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xE4, 0x14, 0x0A, 0x14, 0x12, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xF9, 0x0A, 0x12, 0xE0, 0x0A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x32, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x39, 0x5D, 0x29, 0x7C, 0x32, 0x31, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x31, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x39, 0x5D, 0x31, 0x5C, 0x64, 0x7C, 0x36, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x38, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x35, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x38, 0x5D, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x38, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x33, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x38, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x35, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x34, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x38, 0x37, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x34, 0x35, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x34, 0x35, 0x5D, 0x29, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x36, 0x33, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x34, 0x37, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x37, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x34, 0x5B, 0x30, 0x31, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x34, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x32, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x38, 0x5C, 0x64, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x33, 0x30, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x31, 0x34, 0x30, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x35, 0x32, 0x7C, 0x38, 0x37, 0x5B, 0x31, 0x32, 0x33, 0x5D, 0x29, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x34, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x29, 0x7C, 0x32, 0x37, 0x36, 0x5C, 0x64, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x5B, 0x30, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x38, 0x36, 0x29, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x32, 0x39, 0x35, 0x5B, 0x35, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x35, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x34, 0x7C, 0x36, 0x31, 0x29, 0x7C, 0x35, 0x39, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x34, 0x29, 0x7C, 0x39, 0x35, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x34, 0x32, 0x5C, 0x64, 0x7C, 0x35, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x5D, 0x32, 0x7C, 0x37, 0x36, 0x29, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x37, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x34, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x5D, 0x29, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x35, 0x29, 0x7C, 0x35, 0x32, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x35, 0x38, 0x33, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x38, 0x31, 0x29, 0x29, 0x7C, 0x36, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x39, 0x35, 0x36, 0x31, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x31, 0x37, 0x36, 0x38, 0x38, 0x38, 0x5B, 0x32, 0x33, 0x34, 0x36, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x31, 0x36, 0x39, 0x37, 0x37, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0xB0, 0x01, 0x12, 0x99, 0x01, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x5C, 0x64, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x34, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x48, 0x12, 0x27, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x31, 0x31, 0x7C, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x35, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x11, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x39, 0x12, 0x23, 0x28, 0x3F, 0x3A, 0x38, 0x37, 0x5B, 0x31, 0x32, 0x33, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x42, 0x12, 0x23, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x34, 0x36, 0x34, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x34, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x1D, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x1D, 0x12, 0x07, 0x35, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x47, 0x42, 0x50, 0x2C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x6A, 0x02, 0x20, 0x78, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x37, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x32, 0x7C, 0x35, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x13, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x5C, 0x64, 0x31, 0x29, 0x7C, 0x33, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x8C, 0x01, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x16, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x38, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x36, 0x7C, 0x39, 0x34, 0x29, 0x1A, 0x1F, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x38, 0x37, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x34, 0x7C, 0x33, 0x39, 0x29, 0x7C, 0x36, 0x39, 0x37, 0x7C, 0x37, 0x36, 0x38, 0x7C, 0x39, 0x34, 0x36, 0x29, 0x1A, 0x31, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x38, 0x37, 0x33, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x34, 0x32, 0x7C, 0x33, 0x39, 0x5B, 0x34, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x39, 0x37, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x37, 0x36, 0x38, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x39, 0x34, 0x36, 0x37, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x24, 0x0A, 0x11, 0x28, 0x31, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x0F, 0x28, 0x37, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x09, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3F, 0x0A, 0x0C, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x38, 0x30, 0x30, 0x1A, 0x04, 0x38, 0x30, 0x30, 0x31, 0x1A, 0x05, 0x38, 0x30, 0x30, 0x31, 0x31, 0x1A, 0x06, 0x38, 0x30, 0x30, 0x31, 0x31, 0x31, 0x1A, 0x07, 0x38, 0x30, 0x30, 0x31, 0x31, 0x31, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x0E, 0x28, 0x38, 0x34, 0x35, 0x29, 0x28, 0x34, 0x36, 0x29, 0x28, 0x34, 0x5C, 0x64, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x34, 0x35, 0x1A, 0x04, 0x38, 0x34, 0x35, 0x34, 0x1A, 0x05, 0x38, 0x34, 0x35, 0x34, 0x36, 0x1A, 0x06, 0x38, 0x34, 0x35, 0x34, 0x36, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x16, 0x28, 0x38, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x12, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x38, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x0F, 0x28, 0x5B, 0x35, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x35, 0x38, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x51, 0x12, 0x3B, 0x37, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x31, 0x7C, 0x39, 0x5B, 0x33, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x36, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0xB0, 0x01, 0x01, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x29, 0x12, 0x13, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x35, 0x29, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x0A, 0xC3, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x85, 0x01, 0x12, 0x66, 0x34, 0x37, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x36, 0x39, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x36, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x5D, 0x38, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x33, 0x7C, 0x39, 0x30, 0x29, 0x7C, 0x36, 0x33, 0x5B, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x35, 0x38, 0x7C, 0x38, 0x34, 0x29, 0x7C, 0x39, 0x33, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x34, 0x37, 0x33, 0x32, 0x36, 0x39, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x44, 0x12, 0x2E, 0x34, 0x37, 0x33, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x35, 0x38, 0x29, 0x7C, 0x35, 0x33, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x34, 0x37, 0x33, 0x34, 0x30, 0x33, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x44, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x34, 0x37, 0x33, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBC, 0x03, 0x0A, 0x1E, 0x12, 0x13, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0x67, 0x12, 0x52, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x33, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x41, 0x12, 0x2E, 0x28, 0x3F, 0x3A, 0x31, 0x34, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x45, 0x50, 0xE3, 0x07, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0x9A, 0x01, 0x3C, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x07, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x1A, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x38, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x46, 0x50, 0xD2, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x93, 0x04, 0x0A, 0x1B, 0x12, 0x0F, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x21, 0x12, 0x09, 0x31, 0x34, 0x38, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x34, 0x38, 0x31, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x2B, 0x12, 0x15, 0x37, 0x28, 0x3F, 0x3A, 0x37, 0x38, 0x31, 0x7C, 0x38, 0x33, 0x39, 0x7C, 0x39, 0x31, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x37, 0x38, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x48, 0x12, 0x27, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x31, 0x31, 0x7C, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x35, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x11, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x39, 0x12, 0x23, 0x28, 0x3F, 0x3A, 0x38, 0x37, 0x5B, 0x31, 0x32, 0x33, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x42, 0x12, 0x23, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x34, 0x36, 0x34, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x34, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x1D, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x1D, 0x12, 0x07, 0x35, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x47, 0x47, 0x50, 0x2C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x6A, 0x02, 0x20, 0x78, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x51, 0x12, 0x3B, 0x37, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x31, 0x7C, 0x39, 0x5B, 0x33, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x36, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x29, 0x12, 0x13, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x35, 0x29, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x0A, 0x84, 0x03, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x99, 0x01, 0x12, 0x82, 0x01, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x31, 0x36, 0x37, 0x5D, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x30, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x3E, 0x12, 0x2A, 0x32, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x30, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x33, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x35, 0x34, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x48, 0x50, 0xE9, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x28, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8B, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x32, 0x12, 0x1F, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x5C, 0x64, 0x7C, 0x31, 0x36, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x32, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x25, 0x12, 0x12, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1A, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x0D, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1A, 0x12, 0x07, 0x38, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x49, 0x50, 0xDE, 0x02, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9D, 0x02, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x12, 0x39, 0x12, 0x28, 0x28, 0x3F, 0x3A, 0x31, 0x39, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x33, 0x32, 0x31, 0x30, 0x30, 0x30, 0x1A, 0x20, 0x12, 0x0F, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x22, 0x18, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x0A, 0x33, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x33, 0x38, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x47, 0x4C, 0x50, 0xAB, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAD, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x7B, 0x12, 0x69, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x34, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x33, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x38, 0x29, 0x29, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x35, 0x36, 0x36, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1D, 0x12, 0x0B, 0x5B, 0x33, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x4D, 0x50, 0xDC, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCF, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x33, 0x35, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x4B, 0x12, 0x38, 0x33, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x34, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x31, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x30, 0x32, 0x34, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x5A, 0x12, 0x47, 0x35, 0x35, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x5D, 0x30, 0x7C, 0x33, 0x35, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x30, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x4E, 0x50, 0xE0, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD4, 0x02, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x51, 0x12, 0x3D, 0x35, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x36, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x39, 0x30, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x58, 0x12, 0x44, 0x36, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x39, 0x30, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x50, 0x50, 0xCE, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x16, 0x28, 0x5B, 0x35, 0x36, 0x5D, 0x39, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xB0, 0x01, 0x01, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF4, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x12, 0x48, 0x12, 0x32, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5C, 0x64, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x5B, 0x34, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x33, 0x33, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x26, 0x12, 0x10, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x32, 0x7C, 0x35, 0x35, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x24, 0x12, 0x0E, 0x38, 0x30, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x24, 0x12, 0x0E, 0x39, 0x30, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x51, 0x50, 0xF0, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x21, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x81, 0x06, 0x0A, 0x15, 0x12, 0x0B, 0x5B, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x12, 0xF1, 0x02, 0x12, 0xDA, 0x02, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x33, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x36, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x1D, 0x12, 0x07, 0x36, 0x39, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x36, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x21, 0x12, 0x0B, 0x39, 0x30, 0x5B, 0x31, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x2B, 0x12, 0x15, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x31, 0x32, 0x7C, 0x32, 0x35, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x1D, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x52, 0x50, 0x1E, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x32, 0x31, 0x7C, 0x37, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x31, 0x7C, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x0F, 0x28, 0x32, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0C, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCB, 0x02, 0x0A, 0x28, 0x12, 0x15, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x22, 0x12, 0x0F, 0x5B, 0x32, 0x36, 0x37, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x1D, 0x12, 0x0A, 0x5B, 0x33, 0x34, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x22, 0x12, 0x0B, 0x31, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x31, 0x31, 0x31, 0x32, 0x32, 0x32, 0x32, 0x2A, 0x1E, 0x12, 0x07, 0x31, 0x39, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x39, 0x30, 0x30, 0x31, 0x31, 0x31, 0x32, 0x32, 0x32, 0x32, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x54, 0x50, 0xF6, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE6, 0x05, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0xF4, 0x01, 0x12, 0xD4, 0x01, 0x36, 0x37, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x5B, 0x33, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x32, 0x36, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x36, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x37, 0x39, 0x5D, 0x37, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x38, 0x7C, 0x36, 0x5B, 0x34, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x37, 0x31, 0x33, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0xF4, 0x01, 0x12, 0xD4, 0x01, 0x36, 0x37, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x5B, 0x33, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x32, 0x36, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x36, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x37, 0x39, 0x5D, 0x37, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x38, 0x7C, 0x36, 0x5B, 0x34, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x37, 0x31, 0x33, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x55, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x36, 0x37, 0x31, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF6, 0x01, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x33, 0x35, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x44, 0x12, 0x32, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x37, 0x30, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1C, 0x12, 0x0A, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x57, 0x50, 0xF5, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD8, 0x02, 0x0A, 0x16, 0x12, 0x0D, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x7A, 0x12, 0x68, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5C, 0x64, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x37, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x18, 0x12, 0x06, 0x36, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x36, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x22, 0x22, 0x12, 0x10, 0x28, 0x3F, 0x3A, 0x32, 0x38, 0x39, 0x7C, 0x38, 0x36, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x38, 0x39, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x1B, 0x12, 0x09, 0x39, 0x30, 0x30, 0x38, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x30, 0x38, 0x31, 0x32, 0x33, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x47, 0x59, 0x50, 0xD0, 0x04, 0x5A, 0x03, 0x30, 0x30, 0x31, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA6, 0x03, 0x0A, 0x2B, 0x12, 0x1F, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x1C, 0x12, 0x09, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1F, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1E, 0x12, 0x0B, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x48, 0x4B, 0x50, 0xD4, 0x06, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x39, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x1C, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x13, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x1A, 0x28, 0x39, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x03, 0x39, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9E, 0x03, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0xE8, 0x01, 0x12, 0xD4, 0x01, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x35, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x7C, 0x33, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x34, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x34, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x37, 0x39, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1E, 0x12, 0x0B, 0x5B, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x48, 0x4E, 0x50, 0xF8, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA8, 0x06, 0x0A, 0x25, 0x12, 0x19, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0x4F, 0x12, 0x3A, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x27, 0x12, 0x10, 0x39, 0x5B, 0x31, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x25, 0x12, 0x0D, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x20, 0x12, 0x0D, 0x36, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x06, 0x36, 0x31, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x22, 0x12, 0x0C, 0x37, 0x5B, 0x34, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x48, 0x52, 0x50, 0x81, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x27, 0x0A, 0x11, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x16, 0x28, 0x36, 0x5B, 0x30, 0x32, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x36, 0x5B, 0x30, 0x32, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x1C, 0x28, 0x39, 0x5B, 0x31, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3A, 0x0A, 0x21, 0x28, 0x39, 0x5B, 0x31, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x36, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x36, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x18, 0x28, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x18, 0x28, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9B, 0x02, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x2D, 0x12, 0x1A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x34, 0x35, 0x33, 0x33, 0x30, 0x30, 0x1A, 0x26, 0x12, 0x13, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x34, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x19, 0x12, 0x06, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x0B, 0x39, 0x38, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x48, 0x54, 0x50, 0xFD, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAF, 0x03, 0x0A, 0x12, 0x12, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x12, 0x71, 0x12, 0x5C, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x28, 0x12, 0x14, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x37, 0x5D, 0x30, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1A, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1D, 0x12, 0x0A, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1A, 0x12, 0x07, 0x34, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x48, 0x55, 0x50, 0x24, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x02, 0x30, 0x36, 0x7A, 0x02, 0x30, 0x36, 0x9A, 0x01, 0x28, 0x0A, 0x11, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDD, 0x07, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0xB1, 0x03, 0x12, 0x99, 0x03, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x38, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5C, 0x64, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x39, 0x3F, 0x7C, 0x5B, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x27, 0x12, 0x10, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x2D, 0x12, 0x15, 0x31, 0x37, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x7C, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x49, 0x44, 0x50, 0x3E, 0x5A, 0x1B, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x31, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x29, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x30, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x31, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x3E, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x1A, 0x5B, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x38, 0x0A, 0x1A, 0x28, 0x38, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x09, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x21, 0x0A, 0x0E, 0x28, 0x31, 0x37, 0x37, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x23, 0x0A, 0x0E, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x38, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x17, 0x28, 0x38, 0x30, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x03, 0x38, 0x30, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD9, 0x08, 0x0A, 0x1A, 0x12, 0x0E, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x91, 0x02, 0x12, 0xFB, 0x01, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x5B, 0x31, 0x32, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x35, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x34, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x32, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, 0x33, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x34, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x30, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x31, 0x12, 0x1A, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x38, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1F, 0x12, 0x09, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x38, 0x12, 0x22, 0x31, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x30, 0x7C, 0x35, 0x39, 0x7C, 0x39, 0x5B, 0x30, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x35, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x22, 0x12, 0x0C, 0x31, 0x38, 0x5B, 0x35, 0x39, 0x5D, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x1C, 0x12, 0x08, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x1B, 0x12, 0x07, 0x37, 0x36, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x49, 0x45, 0x50, 0xE1, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2B, 0x0A, 0x13, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x48, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x26, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0D, 0x34, 0x30, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x35, 0x30, 0x5B, 0x34, 0x35, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x12, 0x28, 0x34, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x34, 0x38, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x13, 0x28, 0x38, 0x31, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x31, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x18, 0x28, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0A, 0x37, 0x36, 0x7C, 0x38, 0x5B, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x13, 0x28, 0x37, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x37, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x46, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x7C, 0x35, 0x29, 0x1A, 0x0E, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x30, 0x7C, 0x35, 0x29, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x1C, 0x12, 0x08, 0x38, 0x31, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A, 0x85, 0x06, 0x0A, 0x37, 0x12, 0x2B, 0x5B, 0x31, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x29, 0x3F, 0x7C, 0x36, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x2F, 0x12, 0x1A, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x22, 0x12, 0x0E, 0x35, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x31, 0x12, 0x19, 0x31, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x32, 0x35, 0x35, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x36, 0x12, 0x1E, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x31, 0x32, 0x7C, 0x28, 0x3F, 0x3A, 0x39, 0x31, 0x39, 0x7C, 0x32, 0x30, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x39, 0x31, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x27, 0x12, 0x11, 0x31, 0x28, 0x3F, 0x3A, 0x37, 0x30, 0x30, 0x7C, 0x38, 0x30, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x37, 0x37, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x49, 0x4C, 0x50, 0xCC, 0x07, 0x5A, 0x0E, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x5D, 0x29, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x16, 0x28, 0x5B, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x35, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3A, 0x0A, 0x1D, 0x28, 0x31, 0x29, 0x28, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2D, 0x24, 0x34, 0x1A, 0x06, 0x31, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x21, 0x0A, 0x0D, 0x28, 0x31, 0x32, 0x35, 0x35, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x03, 0x31, 0x32, 0x35, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x31, 0x32, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x32, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x31, 0x32, 0x31, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x32, 0x31, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x1D, 0x0A, 0x07, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x03, 0x2A, 0x24, 0x31, 0x1A, 0x07, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x2E, 0x12, 0x16, 0x31, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0xCA, 0x01, 0x1B, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x32, 0x32, 0x35, 0x30, 0x0A, 0xC2, 0x03, 0x0A, 0x1B, 0x12, 0x0F, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x21, 0x12, 0x09, 0x31, 0x36, 0x32, 0x34, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x36, 0x32, 0x34, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x23, 0x12, 0x0D, 0x37, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x32, 0x34, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x39, 0x32, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x21, 0x12, 0x0B, 0x38, 0x30, 0x38, 0x31, 0x36, 0x32, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x38, 0x31, 0x36, 0x32, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x31, 0x12, 0x1B, 0x28, 0x3F, 0x3A, 0x38, 0x37, 0x32, 0x32, 0x39, 0x39, 0x7C, 0x39, 0x30, 0x5B, 0x30, 0x31, 0x36, 0x37, 0x5D, 0x36, 0x32, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x31, 0x36, 0x32, 0x34, 0x37, 0x38, 0x39, 0x30, 0x32, 0x3C, 0x12, 0x26, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x30, 0x5B, 0x34, 0x39, 0x5D, 0x30, 0x36, 0x7C, 0x35, 0x36, 0x32, 0x34, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x30, 0x36, 0x32, 0x34, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x34, 0x35, 0x36, 0x32, 0x34, 0x37, 0x38, 0x39, 0x30, 0x3A, 0x1D, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x1D, 0x12, 0x07, 0x35, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x49, 0x4D, 0x50, 0x2C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x6A, 0x02, 0x20, 0x78, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x5E, 0x12, 0x48, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x38, 0x31, 0x36, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x30, 0x5B, 0x34, 0x39, 0x5D, 0x30, 0x36, 0x7C, 0x35, 0x36, 0x32, 0x34, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x32, 0x34, 0x5C, 0x64, 0x7C, 0x32, 0x32, 0x39, 0x39, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x35, 0x35, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x0A, 0xF6, 0x17, 0x0A, 0x23, 0x12, 0x17, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0xC0, 0x08, 0x12, 0xA7, 0x08, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x5D, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x37, 0x39, 0x7C, 0x38, 0x30, 0x29, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x5B, 0x35, 0x39, 0x5D, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x34, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x35, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x32, 0x32, 0x7C, 0x34, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x31, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x5B, 0x32, 0x33, 0x34, 0x35, 0x5D, 0x31, 0x7C, 0x35, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x30, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x31, 0x7C, 0x38, 0x38, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x36, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x29, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x39, 0x5D, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x31, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x35, 0x5D, 0x7C, 0x37, 0x33, 0x7C, 0x38, 0x5B, 0x32, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x33, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x5D, 0x5B, 0x31, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x34, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x29, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x95, 0x03, 0x12, 0xFE, 0x02, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x33, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x37, 0x7C, 0x37, 0x5B, 0x33, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x35, 0x7C, 0x31, 0x5B, 0x31, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x39, 0x5D, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x7C, 0x38, 0x5B, 0x33, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x34, 0x37, 0x5D, 0x39, 0x7C, 0x35, 0x30, 0x7C, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x37, 0x5D, 0x7C, 0x31, 0x32, 0x7C, 0x32, 0x30, 0x7C, 0x33, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x32, 0x7C, 0x36, 0x30, 0x7C, 0x39, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x33, 0x5D, 0x5B, 0x30, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x34, 0x7C, 0x32, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x33, 0x34, 0x35, 0x38, 0x5D, 0x7C, 0x35, 0x32, 0x7C, 0x36, 0x5B, 0x30, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x35, 0x36, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x34, 0x29, 0x7C, 0x39, 0x5B, 0x30, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x30, 0x12, 0x18, 0x31, 0x28, 0x3F, 0x3A, 0x36, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x49, 0x4E, 0x50, 0x5B, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0xF6, 0x01, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x5A, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x1A, 0x70, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x39, 0x7C, 0x35, 0x30, 0x7C, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x34, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x34, 0x29, 0x7C, 0x39, 0x5B, 0x30, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x46, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1C, 0x31, 0x31, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x5D, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x37, 0x39, 0x7C, 0x38, 0x30, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x6A, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x40, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x63, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x39, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x35, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x57, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2D, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x6E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x44, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x53, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x29, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x32, 0x32, 0x7C, 0x34, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x31, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x21, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x5B, 0x32, 0x33, 0x34, 0x35, 0x5D, 0x31, 0x7C, 0x35, 0x37, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x30, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x86, 0x01, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x29, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x31, 0x7C, 0x38, 0x38, 0x29, 0x1A, 0x31, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x31, 0x7C, 0x38, 0x38, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x56, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x36, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x46, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1C, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x14, 0x28, 0x31, 0x36, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x36, 0x30, 0x1A, 0x04, 0x31, 0x36, 0x30, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x0F, 0x28, 0x31, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x31, 0x38, 0x30, 0x1A, 0x04, 0x31, 0x38, 0x30, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3C, 0x0A, 0x19, 0x28, 0x31, 0x38, 0x5B, 0x30, 0x36, 0x5D, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x31, 0x38, 0x5B, 0x30, 0x36, 0x5D, 0x1A, 0x07, 0x31, 0x38, 0x5B, 0x30, 0x36, 0x5D, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x23, 0x12, 0x0C, 0x31, 0x38, 0x36, 0x30, 0x33, 0x34, 0x35, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x38, 0x36, 0x30, 0x33, 0x34, 0x35, 0x31, 0x32, 0x33, 0x34, 0x0A, 0xC3, 0x01, 0x0A, 0x0F, 0x12, 0x06, 0x33, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x19, 0x12, 0x07, 0x33, 0x37, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x37, 0x30, 0x39, 0x31, 0x30, 0x30, 0x1A, 0x19, 0x12, 0x07, 0x33, 0x38, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x49, 0x4F, 0x50, 0xF6, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xFF, 0x02, 0x0A, 0x18, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x4B, 0x12, 0x36, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x33, 0x36, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x21, 0x12, 0x0B, 0x37, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x49, 0x51, 0x50, 0xC4, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x27, 0x0A, 0x11, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x19, 0x28, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x18, 0x28, 0x37, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAA, 0x06, 0x0A, 0x24, 0x12, 0x18, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x31, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xBA, 0x03, 0x12, 0xA1, 0x03, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x37, 0x7D, 0x7C, 0x35, 0x31, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, 0x7D, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x34, 0x31, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x34, 0x34, 0x31, 0x7C, 0x35, 0x5B, 0x31, 0x34, 0x5D, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x34, 0x7C, 0x34, 0x31, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x35, 0x32, 0x29, 0x7C, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x32, 0x37, 0x5D, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x34, 0x32, 0x7C, 0x35, 0x5B, 0x32, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x31, 0x7C, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x32, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x5B, 0x33, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x35, 0x31, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x2C, 0x12, 0x16, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x22, 0x12, 0x0C, 0x39, 0x39, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x39, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x49, 0x52, 0x50, 0x62, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x32, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0F, 0x5B, 0x31, 0x33, 0x2D, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x25, 0x12, 0x0F, 0x39, 0x34, 0x33, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x34, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x1F, 0x12, 0x09, 0x39, 0x39, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x39, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A, 0xDA, 0x04, 0x0A, 0x1D, 0x12, 0x12, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x33, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0xB3, 0x01, 0x12, 0xA0, 0x01, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x35, 0x7C, 0x5B, 0x31, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x37, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x34, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x97, 0x01, 0x12, 0x82, 0x01, 0x33, 0x38, 0x5B, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x32, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x35, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x07, 0x36, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x1A, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x19, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x21, 0x12, 0x0F, 0x34, 0x39, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x34, 0x39, 0x33, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x49, 0x53, 0x50, 0xE2, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x16, 0x28, 0x33, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBE, 0x06, 0x0A, 0x1B, 0x12, 0x0F, 0x5B, 0x30, 0x31, 0x33, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x53, 0x12, 0x3B, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x29, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0A, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1F, 0x12, 0x08, 0x33, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x29, 0x12, 0x13, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x29, 0x12, 0x13, 0x38, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x39, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x25, 0x12, 0x0D, 0x38, 0x34, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x34, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x22, 0x12, 0x0A, 0x31, 0x37, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x37, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x49, 0x54, 0x50, 0x27, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2E, 0x0A, 0x17, 0x28, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x24, 0x0A, 0x10, 0x28, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x3A, 0x0A, 0x18, 0x28, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x10, 0x30, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5B, 0x30, 0x31, 0x35, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x11, 0x28, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x10, 0x30, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5B, 0x30, 0x31, 0x35, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x3A, 0x0A, 0x16, 0x28, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x12, 0x30, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x11, 0x28, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x12, 0x30, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x12, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x34, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x09, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x33, 0x7C, 0x39, 0x29, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xF5, 0x04, 0x0A, 0x1B, 0x12, 0x0F, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x21, 0x12, 0x09, 0x31, 0x35, 0x33, 0x34, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x35, 0x33, 0x34, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x36, 0x12, 0x20, 0x37, 0x28, 0x3F, 0x3A, 0x35, 0x30, 0x39, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x39, 0x37, 0x29, 0x7C, 0x38, 0x32, 0x39, 0x7C, 0x39, 0x33, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x37, 0x39, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x31, 0x12, 0x1B, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x37, 0x28, 0x3F, 0x3A, 0x33, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x7C, 0x38, 0x39, 0x30, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x37, 0x33, 0x35, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x44, 0x12, 0x2E, 0x28, 0x3F, 0x3A, 0x38, 0x37, 0x31, 0x32, 0x30, 0x36, 0x7C, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x36, 0x5B, 0x35, 0x39, 0x5D, 0x7C, 0x31, 0x38, 0x31, 0x30, 0x7C, 0x37, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x37, 0x7C, 0x35, 0x35, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x31, 0x38, 0x31, 0x30, 0x35, 0x36, 0x37, 0x38, 0x32, 0x4E, 0x12, 0x38, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x35, 0x7C, 0x34, 0x32, 0x7C, 0x36, 0x39, 0x29, 0x7C, 0x37, 0x30, 0x33, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x34, 0x31, 0x7C, 0x38, 0x30, 0x30, 0x29, 0x29, 0x7C, 0x37, 0x30, 0x30, 0x30, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x34, 0x34, 0x37, 0x30, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x21, 0x12, 0x0B, 0x37, 0x30, 0x31, 0x35, 0x31, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x35, 0x31, 0x31, 0x35, 0x36, 0x37, 0x38, 0x42, 0x1D, 0x12, 0x07, 0x35, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x4A, 0x45, 0x50, 0x2C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x6A, 0x02, 0x20, 0x78, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x51, 0x12, 0x3B, 0x37, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x31, 0x7C, 0x39, 0x5B, 0x33, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x36, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x7C, 0x12, 0x66, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x37, 0x28, 0x3F, 0x3A, 0x33, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x7C, 0x38, 0x39, 0x30, 0x31, 0x29, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x35, 0x7C, 0x34, 0x32, 0x7C, 0x36, 0x39, 0x29, 0x7C, 0x37, 0x30, 0x33, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x34, 0x31, 0x7C, 0x38, 0x30, 0x30, 0x29, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x30, 0x32, 0x7C, 0x31, 0x32, 0x30, 0x36, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x35, 0x35, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x0A, 0xF7, 0x03, 0x0A, 0x1D, 0x12, 0x0A, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x8C, 0x01, 0x12, 0x6D, 0x38, 0x37, 0x36, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x2D, 0x32, 0x36, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x37, 0x36, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x72, 0x12, 0x5C, 0x38, 0x37, 0x36, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x37, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x5D, 0x39, 0x7C, 0x39, 0x5B, 0x30, 0x35, 0x37, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x37, 0x36, 0x32, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4A, 0x4D, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x38, 0x37, 0x36, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE0, 0x03, 0x0A, 0x19, 0x12, 0x0E, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x25, 0x12, 0x10, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x32, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x2D, 0x12, 0x19, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1A, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1B, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x1A, 0x12, 0x07, 0x38, 0x35, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3A, 0x1B, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4A, 0x4F, 0x50, 0xC2, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x42, 0x0A, 0x1F, 0x28, 0x37, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0E, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x20, 0x24, 0x35, 0x1A, 0x08, 0x37, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x07, 0x37, 0x30, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x26, 0x12, 0x13, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x37, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x0A, 0x95, 0x23, 0x0A, 0x14, 0x12, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x93, 0x02, 0x12, 0xFE, 0x01, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x35, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x21, 0x12, 0x0B, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1C, 0x12, 0x08, 0x31, 0x32, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1C, 0x12, 0x08, 0x39, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1B, 0x12, 0x07, 0x36, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x42, 0x1D, 0x12, 0x07, 0x35, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x4A, 0x50, 0x50, 0x51, 0x5A, 0x03, 0x30, 0x31, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x34, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x0A, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x39, 0x39, 0x29, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xF6, 0x03, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x5A, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x7C, 0x33, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x37, 0x36, 0x7C, 0x39, 0x37, 0x29, 0x7C, 0x34, 0x39, 0x39, 0x7C, 0x37, 0x34, 0x36, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x33, 0x7C, 0x34, 0x37, 0x7C, 0x35, 0x31, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x34, 0x39, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x31, 0x36, 0x5D, 0x29, 0x1A, 0xAC, 0x01, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x37, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x37, 0x5B, 0x32, 0x34, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x36, 0x36, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x37, 0x7C, 0x35, 0x38, 0x7C, 0x36, 0x34, 0x7C, 0x38, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x38, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x37, 0x36, 0x7C, 0x39, 0x37, 0x29, 0x39, 0x7C, 0x34, 0x39, 0x39, 0x5B, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x34, 0x36, 0x38, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x36, 0x29, 0x7C, 0x36, 0x33, 0x36, 0x7C, 0x34, 0x37, 0x37, 0x7C, 0x35, 0x31, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x34, 0x39, 0x36, 0x7C, 0x38, 0x30, 0x32, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x36, 0x39, 0x29, 0x29, 0x1A, 0xC3, 0x01, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x37, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x37, 0x5B, 0x32, 0x34, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x36, 0x36, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x37, 0x7C, 0x35, 0x38, 0x7C, 0x36, 0x34, 0x7C, 0x38, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x38, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x37, 0x36, 0x39, 0x7C, 0x39, 0x37, 0x39, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x39, 0x39, 0x5B, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x34, 0x36, 0x38, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x36, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x33, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x37, 0x37, 0x7C, 0x35, 0x31, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x34, 0x39, 0x36, 0x7C, 0x38, 0x30, 0x32, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x36, 0x39, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xFB, 0x14, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0xA7, 0x03, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x33, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x33, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x29, 0x1A, 0x9E, 0x05, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x30, 0x34, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x37, 0x5B, 0x32, 0x2D, 0x35, 0x36, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x5B, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x1A, 0xFD, 0x05, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x30, 0x34, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x35, 0x36, 0x5D, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x29, 0x7C, 0x37, 0x5B, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x1A, 0x85, 0x06, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x30, 0x34, 0x36, 0x38, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x36, 0x30, 0x29, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x29, 0x7C, 0x37, 0x5B, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xE4, 0x03, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x77, 0x31, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x35, 0x5B, 0x35, 0x2D, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x33, 0x39, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x29, 0x7C, 0x36, 0x30, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x33, 0x29, 0x1A, 0x9A, 0x01, 0x31, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x37, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x7C, 0x39, 0x5B, 0x31, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x33, 0x39, 0x5D, 0x7C, 0x39, 0x31, 0x37, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x30, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x33, 0x5B, 0x33, 0x34, 0x5D, 0x29, 0x1A, 0xA3, 0x01, 0x31, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x37, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x39, 0x39, 0x29, 0x29, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x33, 0x39, 0x5D, 0x7C, 0x39, 0x31, 0x37, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x30, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x31, 0x7C, 0x34, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x23, 0x32, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x34, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x37, 0x7C, 0x5B, 0x35, 0x36, 0x5D, 0x39, 0x29, 0x7C, 0x38, 0x32, 0x7C, 0x39, 0x39, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x40, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x19, 0x33, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x32, 0x34, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8C, 0x03, 0x0A, 0x14, 0x12, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x38, 0x12, 0x22, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x30, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x3D, 0x12, 0x29, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x28, 0x12, 0x11, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x27, 0x12, 0x10, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x45, 0x50, 0xFE, 0x01, 0x5A, 0x03, 0x30, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2A, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x08, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x39, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x07, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA1, 0x04, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x33, 0x35, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0xEA, 0x01, 0x12, 0xD3, 0x01, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x32, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x35, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x33, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x39, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x35, 0x5B, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x33, 0x5B, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x39, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x29, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x39, 0x7C, 0x31, 0x32, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x35, 0x12, 0x21, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x35, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x47, 0x50, 0xE4, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x36, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0C, 0x33, 0x31, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x10, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCB, 0x03, 0x0A, 0x18, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x45, 0x12, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x4A, 0x12, 0x37, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x34, 0x39, 0x5D, 0x29, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x2C, 0x12, 0x16, 0x31, 0x38, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x2C, 0x12, 0x16, 0x31, 0x39, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x48, 0x50, 0xD7, 0x06, 0x5A, 0x07, 0x30, 0x30, 0x5B, 0x31, 0x37, 0x38, 0x5D, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x38, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0E, 0x31, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x17, 0x28, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD9, 0x01, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x12, 0x2A, 0x12, 0x1A, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x30, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x33, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x19, 0x12, 0x09, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x36, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x49, 0x50, 0xAE, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x14, 0x0A, 0x07, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x02, 0x24, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE6, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x2F, 0x12, 0x1D, 0x37, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x1C, 0x12, 0x0A, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x4D, 0x50, 0x8D, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x80, 0x03, 0x0A, 0x1D, 0x12, 0x0A, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x44, 0x12, 0x25, 0x38, 0x36, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x7C, 0x33, 0x36, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x30, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x36, 0x39, 0x32, 0x33, 0x36, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x44, 0x12, 0x2E, 0x38, 0x36, 0x39, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x36, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x36, 0x39, 0x35, 0x35, 0x36, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x4E, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x38, 0x36, 0x39, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x50, 0x50, 0xD2, 0x06, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCA, 0x0B, 0x0A, 0x20, 0x12, 0x14, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x4C, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x28, 0x12, 0x10, 0x31, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x20, 0x12, 0x0C, 0x36, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1D, 0x12, 0x07, 0x35, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x1D, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x4B, 0x52, 0x50, 0x52, 0x5A, 0x18, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x62, 0x01, 0x30, 0x7A, 0x15, 0x30, 0x28, 0x38, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x35, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x3F, 0x9A, 0x01, 0x77, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x1F, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x39, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x29, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x30, 0x1A, 0x25, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x39, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x35, 0x39, 0x7C, 0x38, 0x29, 0x29, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x9F, 0x01, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x31, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x3B, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x36, 0x5D, 0x29, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x37, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x33, 0x31, 0x1A, 0x04, 0x31, 0x33, 0x31, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x3F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x33, 0x31, 0x1A, 0x09, 0x31, 0x33, 0x31, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x38, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x07, 0x31, 0x33, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x3D, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2D, 0x24, 0x34, 0x1A, 0x02, 0x33, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x73, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x12, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x1A, 0x31, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x31, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x7C, 0x34, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x8F, 0x01, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x16, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x1A, 0x49, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x30, 0x0A, 0x0D, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0A, 0x32, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x4D, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0B, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x1A, 0x17, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0x9A, 0x01, 0x6C, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x15, 0x31, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x34, 0x36, 0x37, 0x38, 0x5D, 0x29, 0x1A, 0x2F, 0x31, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x39, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x34, 0x34, 0x7C, 0x36, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x37, 0x30, 0x7C, 0x38, 0x38, 0x29, 0x29, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x43, 0x43, 0x2D, 0x24, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x47, 0x12, 0x34, 0x31, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x39, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x34, 0x34, 0x7C, 0x36, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x37, 0x30, 0x7C, 0x38, 0x38, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x35, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x0A, 0x95, 0x03, 0x0A, 0x19, 0x12, 0x0E, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x60, 0x12, 0x4B, 0x28, 0x3F, 0x3A, 0x31, 0x38, 0x5C, 0x64, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x33, 0x34, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x6D, 0x12, 0x5A, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x33, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x39, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x39, 0x5D, 0x7C, 0x36, 0x36, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x57, 0x50, 0xC5, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x31, 0x32, 0x36, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x20, 0x0A, 0x10, 0x28, 0x35, 0x5B, 0x30, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x35, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE4, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x81, 0x01, 0x12, 0x62, 0x33, 0x34, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x34, 0x34, 0x29, 0x7C, 0x34, 0x34, 0x34, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x33, 0x38, 0x7C, 0x34, 0x30, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x37, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x31, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x32, 0x35, 0x7C, 0x34, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x34, 0x7C, 0x34, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x33, 0x34, 0x35, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x5D, 0x12, 0x47, 0x33, 0x34, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x32, 0x5B, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x33, 0x34, 0x35, 0x33, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x2F, 0x12, 0x19, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x33, 0x34, 0x35, 0x39, 0x37, 0x36, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4B, 0x59, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x33, 0x34, 0x35, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x90, 0x06, 0x0A, 0x20, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x37, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x38, 0x30, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x12, 0xE6, 0x03, 0x12, 0xCF, 0x03, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x33, 0x5D, 0x7C, 0x35, 0x39, 0x7C, 0x36, 0x33, 0x29, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x36, 0x31, 0x29, 0x7C, 0x37, 0x32, 0x5C, 0x64, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x29, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x36, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x39, 0x5D, 0x7C, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x32, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x39, 0x7C, 0x36, 0x31, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x30, 0x7C, 0x35, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x39, 0x29, 0x29, 0x7C, 0x33, 0x36, 0x32, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x46, 0x12, 0x30, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x37, 0x31, 0x30, 0x30, 0x30, 0x39, 0x39, 0x39, 0x38, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x08, 0x37, 0x35, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x35, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x4B, 0x5A, 0x50, 0x07, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x1E, 0x12, 0x08, 0x37, 0x35, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x35, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD0, 0x02, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x28, 0x12, 0x13, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x31, 0x7C, 0x35, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x31, 0x32, 0x38, 0x36, 0x32, 0x1A, 0x36, 0x12, 0x20, 0x32, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x39, 0x5B, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x30, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x41, 0x50, 0xD8, 0x06, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x19, 0x28, 0x32, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x02, 0x32, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x36, 0x0A, 0x18, 0x28, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x09, 0x32, 0x31, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB6, 0x03, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x45, 0x12, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x32, 0x29, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x33, 0x12, 0x1E, 0x28, 0x3F, 0x3A, 0x33, 0x5C, 0x64, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1D, 0x12, 0x0A, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1D, 0x12, 0x0A, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x42, 0x50, 0xC1, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x48, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x21, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x32, 0x29, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x44, 0x0A, 0x17, 0x28, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x18, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAC, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x50, 0x12, 0x31, 0x37, 0x35, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x34, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x29, 0x7C, 0x36, 0x33, 0x38, 0x7C, 0x37, 0x35, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x37, 0x35, 0x38, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x63, 0x12, 0x4D, 0x37, 0x35, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x38, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x38, 0x34, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x38, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x38, 0x34, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x35, 0x38, 0x32, 0x38, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x43, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x37, 0x35, 0x38, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAE, 0x05, 0x0A, 0x29, 0x12, 0x1E, 0x28, 0x3F, 0x3A, 0x36, 0x36, 0x7C, 0x38, 0x30, 0x7C, 0x39, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x56, 0x12, 0x44, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x33, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x39, 0x36, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x34, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x37, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x6D, 0x12, 0x57, 0x36, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x37, 0x38, 0x5D, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x35, 0x36, 0x7C, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x3D, 0x12, 0x29, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x37, 0x7C, 0x32, 0x5B, 0x32, 0x33, 0x38, 0x5D, 0x7C, 0x37, 0x39, 0x7C, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x32, 0x32, 0x32, 0x32, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x4F, 0x12, 0x3B, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x39, 0x7C, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x36, 0x36, 0x7C, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x30, 0x32, 0x32, 0x32, 0x32, 0x3A, 0x1A, 0x12, 0x08, 0x37, 0x30, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x49, 0x50, 0xA7, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x35, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0E, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x37, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x26, 0x0A, 0x13, 0x28, 0x36, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x36, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x18, 0x28, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x1E, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0C, 0x30, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD3, 0x02, 0x0A, 0x15, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x52, 0x12, 0x3C, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x38, 0x39, 0x5D, 0x31, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x35, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x21, 0x12, 0x0D, 0x37, 0x5B, 0x31, 0x32, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x4B, 0x50, 0x5E, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD0, 0x02, 0x0A, 0x21, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x19, 0x12, 0x06, 0x32, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x34, 0x12, 0x20, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x34, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1A, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x52, 0x50, 0xE7, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x15, 0x28, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE3, 0x01, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x19, 0x12, 0x06, 0x32, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1C, 0x12, 0x09, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x20, 0x12, 0x0D, 0x38, 0x30, 0x30, 0x5B, 0x32, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x53, 0x50, 0x8A, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD5, 0x03, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x2F, 0x12, 0x1C, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x19, 0x12, 0x06, 0x36, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x20, 0x12, 0x0D, 0x39, 0x30, 0x5B, 0x30, 0x32, 0x33, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x54, 0x50, 0xF2, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0x9A, 0x01, 0x4C, 0x0A, 0x1D, 0x28, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x16, 0x33, 0x37, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x5D, 0x0A, 0x1C, 0x28, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2B, 0x33, 0x5B, 0x31, 0x34, 0x38, 0x5D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x38, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x15, 0x28, 0x35, 0x29, 0x28, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x35, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE5, 0x0A, 0x0A, 0x3F, 0x12, 0x33, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x39, 0x7D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x38, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0xFD, 0x02, 0x12, 0xE6, 0x02, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x3F, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x3F, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x5B, 0x30, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x36, 0x5D, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x3F, 0x7C, 0x34, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x34, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x37, 0x5D, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x3F, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x35, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x5B, 0x30, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x3F, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x39, 0x5D, 0x39, 0x7C, 0x5B, 0x35, 0x38, 0x5D, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x3F, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x34, 0x39, 0x5D, 0x7C, 0x33, 0x37, 0x7C, 0x34, 0x39, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x3F, 0x29, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x08, 0x32, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x23, 0x12, 0x0F, 0x36, 0x5B, 0x32, 0x36, 0x39, 0x5D, 0x5B, 0x31, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x32, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1E, 0x12, 0x0B, 0x39, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x31, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3A, 0x1A, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x1E, 0x12, 0x09, 0x32, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x4A, 0x02, 0x4C, 0x55, 0x50, 0xE0, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x7A, 0x30, 0x28, 0x31, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x33, 0x35, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x39, 0x29, 0x5C, 0x64, 0x29, 0x9A, 0x01, 0x45, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x22, 0x5B, 0x32, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x4F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x22, 0x5B, 0x32, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x2F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x30, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x4B, 0x0A, 0x1E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x12, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x33, 0x36, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x39, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x02, 0x32, 0x30, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x55, 0x0A, 0x25, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x29, 0x12, 0x0E, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x20, 0x24, 0x35, 0x1A, 0x12, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x33, 0x36, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x6D, 0x0A, 0x1E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x34, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x39, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0C, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x37, 0x30, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0x9A, 0x01, 0x2E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x36, 0x22, 0x00, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF9, 0x01, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x19, 0x12, 0x06, 0x36, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x19, 0x12, 0x06, 0x32, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1A, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1A, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x56, 0x50, 0xF3, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x28, 0x0A, 0x18, 0x28, 0x5B, 0x32, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x80, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x35, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x3B, 0x12, 0x25, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x33, 0x34, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x33, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1F, 0x12, 0x0B, 0x39, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4C, 0x59, 0x50, 0xDA, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x12, 0x28, 0x5B, 0x32, 0x35, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x90, 0x05, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x9E, 0x01, 0x12, 0x89, 0x01, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x29, 0x5C, 0x64, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x29, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x39, 0x12, 0x25, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x33, 0x7C, 0x39, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1B, 0x12, 0x07, 0x38, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x41, 0x50, 0xD4, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3A, 0x0A, 0x12, 0x28, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x16, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x64, 0x0A, 0x12, 0x28, 0x5B, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x18, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x39, 0x32, 0x1A, 0x26, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x5D, 0x7C, 0x39, 0x30, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x30, 0x29, 0x29, 0x7C, 0x38, 0x39, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x0F, 0x28, 0x35, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0A, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x7C, 0x33, 0x38, 0x29, 0x1A, 0x0E, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x7C, 0x33, 0x38, 0x29, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x0E, 0x28, 0x38, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0F, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8E, 0x03, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0x21, 0x12, 0x0E, 0x39, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x23, 0x12, 0x0D, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x34, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x22, 0x12, 0x0F, 0x28, 0x3F, 0x3A, 0x38, 0x5C, 0x64, 0x7C, 0x39, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x43, 0x50, 0xF9, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x38, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x1F, 0x28, 0x36, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0E, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x20, 0x24, 0x35, 0x1A, 0x01, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x0F, 0x12, 0x06, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEC, 0x03, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x35, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x76, 0x12, 0x61, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x33, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x5B, 0x32, 0x35, 0x37, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x3C, 0x12, 0x29, 0x28, 0x3F, 0x3A, 0x36, 0x28, 0x3F, 0x3A, 0x35, 0x30, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1B, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x44, 0x50, 0xF5, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x32, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3E, 0x0A, 0x1B, 0x28, 0x5B, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0E, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x25, 0x0A, 0x0F, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD2, 0x04, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x12, 0x73, 0x12, 0x5E, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x31, 0x5B, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x33, 0x37, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x4D, 0x12, 0x38, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x32, 0x5C, 0x64, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x36, 0x37, 0x36, 0x32, 0x32, 0x39, 0x30, 0x31, 0x22, 0x1F, 0x12, 0x0C, 0x38, 0x30, 0x30, 0x5B, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x38, 0x30, 0x30, 0x30, 0x32, 0x2A, 0x35, 0x12, 0x22, 0x28, 0x3F, 0x3A, 0x38, 0x38, 0x5C, 0x64, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x34, 0x35, 0x31, 0x35, 0x31, 0x35, 0x31, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x22, 0x12, 0x0F, 0x37, 0x38, 0x5B, 0x31, 0x33, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x38, 0x31, 0x30, 0x38, 0x37, 0x38, 0x30, 0x4A, 0x02, 0x4D, 0x45, 0x50, 0xFE, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x61, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x10, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x37, 0x38, 0x39, 0x5D, 0x1A, 0x25, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3A, 0x0A, 0x15, 0x28, 0x36, 0x37, 0x29, 0x28, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x03, 0x36, 0x37, 0x39, 0x1A, 0x08, 0x36, 0x37, 0x39, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x1A, 0x12, 0x07, 0x37, 0x37, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x37, 0x32, 0x37, 0x33, 0x30, 0x31, 0x32, 0x0A, 0xBD, 0x02, 0x0A, 0x14, 0x12, 0x09, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x69, 0x12, 0x53, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x7C, 0x32, 0x31, 0x30, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x20, 0x12, 0x0C, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x47, 0x50, 0x85, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x1D, 0x28, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE5, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x35, 0x12, 0x21, 0x35, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x32, 0x5B, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x39, 0x30, 0x32, 0x37, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x34, 0x12, 0x20, 0x36, 0x39, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x30, 0x7C, 0x32, 0x5B, 0x32, 0x37, 0x5D, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x39, 0x30, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x46, 0x50, 0xCE, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6E, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x48, 0x50, 0xB4, 0x05, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8F, 0x04, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x87, 0x01, 0x12, 0x72, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x36, 0x31, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x21, 0x12, 0x0E, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1F, 0x12, 0x0C, 0x35, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x2B, 0x12, 0x18, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x4B, 0x50, 0x85, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x27, 0x0A, 0x11, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x17, 0x28, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x1D, 0x28, 0x5B, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x04, 0x5B, 0x35, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEB, 0x02, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x53, 0x12, 0x40, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x7C, 0x34, 0x34, 0x32, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x50, 0x12, 0x3D, 0x28, 0x3F, 0x3A, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x37, 0x39, 0x5D, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x4C, 0x50, 0xDF, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x20, 0x28, 0x5B, 0x32, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x84, 0x04, 0x0A, 0x22, 0x12, 0x17, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0x4C, 0x12, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x31, 0x33, 0x33, 0x33, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x2C, 0x12, 0x17, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x34, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x39, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x4D, 0x50, 0x5F, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x24, 0x0A, 0x11, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x13, 0x28, 0x31, 0x29, 0x28, 0x33, 0x29, 0x28, 0x33, 0x33, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x03, 0x31, 0x33, 0x33, 0x1A, 0x04, 0x31, 0x33, 0x33, 0x33, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x24, 0x0A, 0x11, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1E, 0x0A, 0x0D, 0x28, 0x39, 0x34, 0x34, 0x34, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x02, 0x39, 0x34, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x18, 0x28, 0x39, 0x29, 0x28, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x39, 0x5B, 0x32, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF2, 0x04, 0x0A, 0x23, 0x12, 0x17, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x7A, 0x12, 0x64, 0x5B, 0x31, 0x32, 0x5D, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x3F, 0x7C, 0x37, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x2A, 0x12, 0x17, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x0B, 0x37, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x4D, 0x4E, 0x50, 0xD0, 0x07, 0x5A, 0x03, 0x30, 0x30, 0x31, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x30, 0x0A, 0x16, 0x28, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x31, 0x32, 0x5D, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x12, 0x28, 0x5B, 0x31, 0x32, 0x5D, 0x32, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0A, 0x5B, 0x31, 0x32, 0x5D, 0x32, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x49, 0x0A, 0x12, 0x28, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x10, 0x5B, 0x31, 0x32, 0x5D, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x1A, 0x13, 0x5B, 0x31, 0x32, 0x5D, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x25, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4F, 0x0A, 0x14, 0x28, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x10, 0x5B, 0x31, 0x32, 0x5D, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x1A, 0x17, 0x5B, 0x31, 0x32, 0x5D, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE9, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x32, 0x12, 0x1F, 0x28, 0x3F, 0x3A, 0x32, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x38, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x1D, 0x12, 0x0A, 0x36, 0x5B, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x4F, 0x50, 0xD5, 0x06, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x20, 0x0A, 0x13, 0x28, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB6, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x5D, 0x12, 0x3E, 0x36, 0x37, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x38, 0x7C, 0x35, 0x36, 0x29, 0x7C, 0x33, 0x32, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x38, 0x5D, 0x33, 0x7C, 0x35, 0x33, 0x32, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x36, 0x34, 0x7C, 0x37, 0x30, 0x7C, 0x38, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x37, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x5D, 0x12, 0x3E, 0x36, 0x37, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x38, 0x7C, 0x35, 0x36, 0x29, 0x7C, 0x33, 0x32, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x38, 0x5D, 0x33, 0x7C, 0x35, 0x33, 0x32, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x36, 0x34, 0x7C, 0x37, 0x30, 0x7C, 0x38, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x37, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x50, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x36, 0x37, 0x30, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x51, 0x50, 0xD4, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xCC, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x33, 0x12, 0x20, 0x32, 0x35, 0x5B, 0x30, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x7C, 0x33, 0x35, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x34, 0x35, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x59, 0x12, 0x46, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x37, 0x30, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x30, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x52, 0x50, 0xDE, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x32, 0x0A, 0x1F, 0x28, 0x5B, 0x32, 0x2D, 0x34, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC4, 0x02, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x2A, 0x12, 0x0B, 0x36, 0x36, 0x34, 0x34, 0x39, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x36, 0x34, 0x34, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x21, 0x12, 0x0B, 0x36, 0x36, 0x34, 0x34, 0x39, 0x32, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x36, 0x36, 0x34, 0x34, 0x39, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x53, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x36, 0x36, 0x34, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF8, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x3C, 0x12, 0x29, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x59, 0x12, 0x46, 0x28, 0x3F, 0x3A, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x31, 0x30, 0x7C, 0x5B, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x33, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x39, 0x36, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x38, 0x39, 0x7C, 0x39, 0x37, 0x29, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x36, 0x39, 0x36, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x41, 0x12, 0x2E, 0x35, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x5C, 0x64, 0x29, 0x7C, 0x5B, 0x31, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x37, 0x5B, 0x30, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x30, 0x30, 0x33, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x54, 0x50, 0xE4, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x1C, 0x12, 0x09, 0x37, 0x31, 0x31, 0x37, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x31, 0x37, 0x31, 0x32, 0x33, 0x34, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x85, 0x03, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x68, 0x12, 0x56, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x33, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x34, 0x2D, 0x37, 0x5D, 0x29, 0x7C, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x34, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x4A, 0x12, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x35, 0x5C, 0x64, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x32, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x38, 0x37, 0x5B, 0x31, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x1E, 0x12, 0x0C, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x19, 0x12, 0x07, 0x33, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x55, 0x50, 0xE6, 0x01, 0x5A, 0x0E, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x30, 0x7C, 0x33, 0x33, 0x29, 0x8A, 0x01, 0x03, 0x30, 0x32, 0x30, 0x9A, 0x01, 0x20, 0x0A, 0x13, 0x28, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9A, 0x03, 0x0A, 0x29, 0x12, 0x1D, 0x5B, 0x33, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x4D, 0x12, 0x3B, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x36, 0x37, 0x5D, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x30, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x28, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x37, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x56, 0x50, 0xC0, 0x07, 0x5A, 0x09, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x39, 0x29, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x34, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x17, 0x5B, 0x33, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x39, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x1A, 0x12, 0x08, 0x37, 0x38, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBF, 0x03, 0x0A, 0x33, 0x12, 0x28, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x3F, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x2B, 0x12, 0x17, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x31, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x07, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x3B, 0x12, 0x25, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x38, 0x5C, 0x64, 0x29, 0x3F, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x39, 0x5C, 0x64, 0x29, 0x3F, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x57, 0x50, 0x89, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2D, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x32, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x16, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9D, 0x0D, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0xC1, 0x03, 0x12, 0xA8, 0x03, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x35, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x38, 0x38, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x34, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x34, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0xC5, 0x03, 0x12, 0xAD, 0x03, 0x31, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x35, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x38, 0x38, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x37, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x34, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x34, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x58, 0x50, 0x34, 0x5A, 0x05, 0x30, 0x5B, 0x30, 0x39, 0x5D, 0x62, 0x02, 0x30, 0x31, 0x7A, 0x14, 0x30, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x30, 0x34, 0x5B, 0x34, 0x35, 0x5D, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x29, 0x82, 0x01, 0x03, 0x31, 0x24, 0x31, 0x9A, 0x01, 0x36, 0x0A, 0x17, 0x28, 0x5B, 0x33, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x22, 0x05, 0x30, 0x31, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x55, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x29, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x30, 0x31, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x18, 0x31, 0x28, 0x5B, 0x33, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0C, 0x30, 0x34, 0x35, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x5B, 0x0A, 0x16, 0x31, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0C, 0x30, 0x34, 0x35, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2D, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x2F, 0x0A, 0x17, 0x28, 0x5B, 0x33, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x4E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x29, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x3A, 0x0A, 0x1A, 0x28, 0x31, 0x29, 0x28, 0x5B, 0x33, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x58, 0x0A, 0x18, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x2D, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBD, 0x04, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x35, 0x12, 0x1F, 0x28, 0x3F, 0x3A, 0x33, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x5B, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x22, 0x12, 0x0E, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x22, 0x12, 0x0C, 0x31, 0x5B, 0x33, 0x38, 0x5D, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x33, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1F, 0x12, 0x09, 0x31, 0x36, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x36, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1F, 0x12, 0x09, 0x31, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x1E, 0x12, 0x08, 0x31, 0x35, 0x34, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x35, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x4D, 0x59, 0x50, 0x3C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x16, 0x28, 0x5B, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x11, 0x28, 0x33, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x18, 0x28, 0x5B, 0x31, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x10, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x38, 0x0A, 0x1B, 0x28, 0x31, 0x29, 0x28, 0x5B, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2D, 0x24, 0x34, 0x1A, 0x08, 0x31, 0x5B, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x13, 0x28, 0x31, 0x35, 0x34, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x31, 0x35, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC3, 0x02, 0x0A, 0x16, 0x12, 0x0B, 0x5B, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0x38, 0x12, 0x25, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x39, 0x33, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1E, 0x12, 0x0A, 0x38, 0x5B, 0x32, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x5A, 0x50, 0x82, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x18, 0x28, 0x5B, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x34, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x14, 0x28, 0x38, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x81, 0x06, 0x0A, 0x16, 0x12, 0x0B, 0x5B, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0xF9, 0x02, 0x12, 0xE2, 0x02, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x33, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x34, 0x5D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x35, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x30, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x3F, 0x7C, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x34, 0x7C, 0x36, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x38, 0x31, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x7C, 0x37, 0x3F, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x31, 0x5C, 0x64, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x37, 0x5D, 0x7C, 0x5B, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x34, 0x35, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x36, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x35, 0x7C, 0x36, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x33, 0x38, 0x7C, 0x34, 0x32, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x37, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x3F, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x3F, 0x7C, 0x5B, 0x31, 0x33, 0x5D, 0x29, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x26, 0x12, 0x12, 0x28, 0x3F, 0x3A, 0x36, 0x30, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1D, 0x12, 0x09, 0x38, 0x37, 0x30, 0x31, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x08, 0x38, 0x38, 0x36, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x38, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x4A, 0x02, 0x4E, 0x41, 0x50, 0x88, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2E, 0x0A, 0x13, 0x28, 0x38, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x38, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x36, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x38, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x13, 0x28, 0x38, 0x37, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x37, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x43, 0x50, 0xAF, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x93, 0x03, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x30, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x6F, 0x12, 0x5C, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x36, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x20, 0x12, 0x0D, 0x39, 0x5B, 0x30, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1A, 0x12, 0x07, 0x30, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x30, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1A, 0x12, 0x07, 0x30, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x45, 0x50, 0xE3, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x3A, 0x0A, 0x1E, 0x28, 0x5B, 0x30, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x07, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x30, 0x39, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x26, 0x0A, 0x12, 0x28, 0x30, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x30, 0x38, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0x86, 0x02, 0x0A, 0x14, 0x12, 0x09, 0x5B, 0x31, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x12, 0x35, 0x12, 0x22, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x36, 0x7C, 0x31, 0x37, 0x7C, 0x32, 0x38, 0x7C, 0x33, 0x39, 0x29, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x32, 0x06, 0x31, 0x30, 0x36, 0x36, 0x30, 0x39, 0x1A, 0x1A, 0x12, 0x07, 0x33, 0x38, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x32, 0x06, 0x33, 0x38, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x46, 0x50, 0xA0, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1E, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1B, 0x0A, 0x0B, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x82, 0x06, 0x0A, 0x26, 0x12, 0x1A, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x33, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x34, 0x7D, 0x12, 0x96, 0x01, 0x12, 0x80, 0x01, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x32, 0x33, 0x36, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x37, 0x38, 0x7C, 0x34, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x4A, 0x12, 0x34, 0x28, 0x3F, 0x3A, 0x37, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x25, 0x12, 0x0B, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x34, 0x7D, 0x32, 0x0B, 0x38, 0x30, 0x30, 0x31, 0x37, 0x35, 0x39, 0x31, 0x37, 0x35, 0x39, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x24, 0x12, 0x0B, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x34, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x47, 0x50, 0xEA, 0x01, 0x5A, 0x03, 0x30, 0x30, 0x39, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x17, 0x28, 0x5B, 0x31, 0x32, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x31, 0x32, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4D, 0x0A, 0x19, 0x28, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1F, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x38, 0x0A, 0x1B, 0x28, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x37, 0x30, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x18, 0x28, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x18, 0x28, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x37, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x37, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDB, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x19, 0x12, 0x06, 0x32, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x19, 0x12, 0x06, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x09, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x49, 0x50, 0xF9, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAF, 0x04, 0x0A, 0x18, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x4F, 0x12, 0x3B, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x34, 0x37, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x20, 0x12, 0x0C, 0x36, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1F, 0x12, 0x0A, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x23, 0x12, 0x0E, 0x39, 0x30, 0x5B, 0x30, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x10, 0x12, 0x07, 0x38, 0x35, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x4A, 0x02, 0x4E, 0x4C, 0x50, 0x1F, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x5E, 0x0A, 0x19, 0x28, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x30, 0x31, 0x5B, 0x30, 0x33, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x33, 0x34, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x33, 0x35, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x7C, 0x38, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x56, 0x0A, 0x1A, 0x28, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x27, 0x31, 0x5B, 0x31, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x35, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x1D, 0x0A, 0x0A, 0x28, 0x36, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x12, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x38, 0x30, 0x7C, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8D, 0x04, 0x0A, 0x24, 0x12, 0x11, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x47, 0x12, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x28, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1E, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1E, 0x12, 0x0B, 0x38, 0x32, 0x5B, 0x30, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x2D, 0x12, 0x1A, 0x38, 0x31, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x3A, 0x1B, 0x12, 0x08, 0x38, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x4F, 0x50, 0x2F, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x1A, 0x28, 0x5B, 0x34, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x34, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x3C, 0x0A, 0x20, 0x28, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x07, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xB0, 0x01, 0x01, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x42, 0x12, 0x28, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x38, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5C, 0x64, 0x29, 0x7C, 0x35, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x05, 0x30, 0x31, 0x32, 0x33, 0x34, 0xD0, 0x01, 0x01, 0x0A, 0xBF, 0x03, 0x0A, 0x24, 0x12, 0x18, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x39, 0x38, 0x5B, 0x34, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x6C, 0x12, 0x57, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x1A, 0x21, 0x12, 0x0B, 0x39, 0x38, 0x5B, 0x34, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x38, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x50, 0x50, 0xD1, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x16, 0x28, 0x31, 0x29, 0x28, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x31, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x13, 0x31, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x16, 0x28, 0x39, 0x38, 0x5B, 0x34, 0x35, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x39, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD5, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x22, 0x12, 0x10, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x34, 0x7C, 0x38, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x34, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1E, 0x12, 0x0C, 0x35, 0x35, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x35, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x52, 0x50, 0xA2, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA8, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x12, 0x18, 0x12, 0x09, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x34, 0x30, 0x30, 0x32, 0x1A, 0x19, 0x12, 0x0A, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x55, 0x50, 0xAB, 0x05, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC2, 0x05, 0x0A, 0x2A, 0x12, 0x1E, 0x36, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x4E, 0x12, 0x39, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x32, 0x34, 0x30, 0x39, 0x39, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x63, 0x12, 0x4C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x7C, 0x5B, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x2B, 0x12, 0x14, 0x35, 0x30, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x09, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x5A, 0x50, 0x40, 0x5A, 0x0A, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x36, 0x31, 0x29, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x39, 0x0A, 0x17, 0x28, 0x5B, 0x33, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x5B, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x32, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x44, 0x0A, 0x1D, 0x28, 0x5B, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x12, 0x32, 0x5B, 0x30, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x36, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0A, 0x32, 0x5B, 0x30, 0x31, 0x36, 0x39, 0x5D, 0x7C, 0x38, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x0E, 0x28, 0x32, 0x34, 0x30, 0x39, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x32, 0x34, 0x30, 0x1A, 0x04, 0x32, 0x34, 0x30, 0x39, 0x1A, 0x05, 0x32, 0x34, 0x30, 0x39, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x21, 0x12, 0x0C, 0x5B, 0x32, 0x38, 0x5D, 0x36, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD7, 0x02, 0x0A, 0x2E, 0x12, 0x23, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x1E, 0x12, 0x0B, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1E, 0x12, 0x0B, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x29, 0x12, 0x14, 0x38, 0x30, 0x30, 0x37, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x7C, 0x35, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x37, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4F, 0x4D, 0x50, 0xC8, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1C, 0x0A, 0x0C, 0x28, 0x32, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x32, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1F, 0x0A, 0x0F, 0x28, 0x39, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x39, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x24, 0x0A, 0x11, 0x28, 0x5B, 0x35, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x35, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x41, 0x50, 0xFB, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF6, 0x02, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x31, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x12, 0x46, 0x12, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1A, 0x12, 0x06, 0x39, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x45, 0x50, 0x33, 0x5A, 0x14, 0x31, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x37, 0x37, 0x7C, 0x39, 0x30, 0x29, 0x30, 0x30, 0x62, 0x01, 0x30, 0x6A, 0x07, 0x20, 0x41, 0x6E, 0x65, 0x78, 0x6F, 0x20, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x1E, 0x0A, 0x0A, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x31, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x10, 0x28, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x22, 0x04, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x16, 0x28, 0x39, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x46, 0x50, 0xB1, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x83, 0x03, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x55, 0x12, 0x43, 0x28, 0x3F, 0x3A, 0x33, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x34, 0x5B, 0x32, 0x35, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x35, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x33, 0x12, 0x1F, 0x28, 0x3F, 0x3A, 0x36, 0x38, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x36, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x1A, 0x12, 0x08, 0x31, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x31, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1A, 0x12, 0x08, 0x32, 0x37, 0x35, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x37, 0x35, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x50, 0x47, 0x50, 0xA3, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x24, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x07, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF3, 0x06, 0x0A, 0x24, 0x12, 0x18, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x7C, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x33, 0x7D, 0x12, 0x4D, 0x12, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x50, 0x12, 0x3A, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x26, 0x12, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x2C, 0x31, 0x33, 0x7D, 0x32, 0x0C, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x48, 0x50, 0x3F, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x11, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0xDD, 0x01, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x46, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x7C, 0x33, 0x39, 0x7C, 0x34, 0x36, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x39, 0x7C, 0x34, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x37, 0x36, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x34, 0x34, 0x29, 0x7C, 0x36, 0x34, 0x32, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x36, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x29, 0x1A, 0x73, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x33, 0x30, 0x7C, 0x33, 0x39, 0x37, 0x7C, 0x34, 0x36, 0x31, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x35, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x34, 0x7C, 0x35, 0x31, 0x29, 0x7C, 0x33, 0x39, 0x36, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x36, 0x33, 0x29, 0x7C, 0x35, 0x39, 0x5B, 0x33, 0x34, 0x37, 0x5D, 0x7C, 0x37, 0x36, 0x5B, 0x31, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x31, 0x7C, 0x34, 0x34, 0x36, 0x29, 0x7C, 0x36, 0x34, 0x32, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x36, 0x32, 0x32, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x5D, 0x32, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x5D, 0x29, 0x29, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x56, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x15, 0x33, 0x34, 0x36, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x7C, 0x39, 0x5B, 0x33, 0x35, 0x5D, 0x29, 0x7C, 0x38, 0x38, 0x33, 0x1A, 0x1D, 0x33, 0x34, 0x36, 0x39, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x39, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x33, 0x30, 0x7C, 0x35, 0x36, 0x29, 0x29, 0x7C, 0x38, 0x38, 0x33, 0x34, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x17, 0x28, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x16, 0x28, 0x39, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x14, 0x28, 0x31, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x1D, 0x28, 0x31, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x2C, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x31, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF3, 0x0C, 0x0A, 0x4C, 0x12, 0x40, 0x31, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x31, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x39, 0x7D, 0x7C, 0x32, 0x5C, 0x64, 0x28, 0x3F, 0x3A, 0x31, 0x31, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, 0x7D, 0x29, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0x99, 0x02, 0x12, 0x80, 0x02, 0x28, 0x3F, 0x3A, 0x32, 0x31, 0x7C, 0x34, 0x32, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x35, 0x5B, 0x33, 0x34, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x36, 0x30, 0x5B, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x32, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x29, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x35, 0x38, 0x5B, 0x31, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x42, 0x12, 0x2C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x31, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1B, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1B, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1C, 0x12, 0x08, 0x31, 0x32, 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x32, 0x30, 0x34, 0x34, 0x34, 0x34, 0x34, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x4B, 0x50, 0x5C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0xDD, 0x01, 0x0A, 0x1A, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x31, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x31, 0x1A, 0x37, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x31, 0x31, 0x1A, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x31, 0x31, 0x31, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0xD2, 0x01, 0x0A, 0x1A, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x31, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x20, 0x32, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x30, 0x7C, 0x37, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x27, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x30, 0x7C, 0x37, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x31, 0x1A, 0x28, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x30, 0x7C, 0x37, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x31, 0x31, 0x1A, 0x29, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x30, 0x7C, 0x37, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x31, 0x31, 0x31, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x5E, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x3A, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x39, 0x31, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x71, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x20, 0x32, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x30, 0x7C, 0x37, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x2B, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x35, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x30, 0x7C, 0x37, 0x32, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x22, 0x0A, 0x0F, 0x28, 0x33, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x14, 0x28, 0x5B, 0x31, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x08, 0x35, 0x38, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x31, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x11, 0x28, 0x35, 0x38, 0x36, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x35, 0x38, 0x36, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x16, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0xEC, 0x01, 0x12, 0xD1, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x34, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x30, 0x5B, 0x34, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x7C, 0x32, 0x32, 0x7C, 0x33, 0x5B, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x29, 0x29, 0x31, 0x31, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x0B, 0x32, 0x31, 0x31, 0x31, 0x31, 0x38, 0x32, 0x35, 0x38, 0x38, 0x38, 0x0A, 0x91, 0x04, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x66, 0x12, 0x52, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x34, 0x12, 0x20, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1B, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x33, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x50, 0x4C, 0x50, 0x30, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x68, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x37, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x45, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1E, 0x33, 0x39, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x38, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x4D, 0x50, 0xFC, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE8, 0x02, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x34, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x37, 0x38, 0x37, 0x7C, 0x39, 0x33, 0x39, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x37, 0x38, 0x37, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x34, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x37, 0x38, 0x37, 0x7C, 0x39, 0x33, 0x39, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x37, 0x38, 0x37, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x52, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x07, 0x37, 0x38, 0x37, 0x7C, 0x39, 0x33, 0x39, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDD, 0x03, 0x0A, 0x35, 0x12, 0x29, 0x5B, 0x32, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x41, 0x12, 0x2C, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x5B, 0x32, 0x33, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x32, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x38, 0x32, 0x5B, 0x30, 0x31, 0x34, 0x35, 0x38, 0x5D, 0x7C, 0x39, 0x32, 0x5B, 0x33, 0x36, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1E, 0x12, 0x0A, 0x35, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x35, 0x39, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1F, 0x12, 0x09, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x21, 0x12, 0x0F, 0x31, 0x28, 0x3F, 0x3A, 0x34, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x32, 0x05, 0x31, 0x39, 0x31, 0x32, 0x33, 0x32, 0x1F, 0x12, 0x09, 0x31, 0x37, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x37, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x53, 0x50, 0xCA, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x32, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x34, 0x38, 0x39, 0x5D, 0x29, 0x28, 0x32, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x32, 0x34, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x17, 0x28, 0x35, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x35, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x17, 0x28, 0x31, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x31, 0x5B, 0x37, 0x38, 0x5D, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x9C, 0x03, 0x0A, 0x16, 0x12, 0x0D, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x5A, 0x12, 0x46, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x33, 0x35, 0x5D, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x40, 0x12, 0x2C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x32, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x38, 0x30, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x26, 0x12, 0x12, 0x34, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x38, 0x30, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1B, 0x12, 0x07, 0x37, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x33, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x50, 0x54, 0x50, 0xDF, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2D, 0x0A, 0x1D, 0x28, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x68, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x57, 0x50, 0xA8, 0x05, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6E, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x59, 0x50, 0xD3, 0x04, 0x5A, 0x03, 0x30, 0x30, 0x32, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA0, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x1C, 0x12, 0x07, 0x34, 0x34, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x29, 0x12, 0x14, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x51, 0x41, 0x50, 0xCE, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1F, 0x0A, 0x0F, 0x28, 0x38, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x38, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x13, 0x28, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE2, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x1C, 0x12, 0x08, 0x32, 0x36, 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x36, 0x32, 0x31, 0x36, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x26, 0x12, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x39, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x23, 0x12, 0x0F, 0x38, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x39, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x32, 0x12, 0x1E, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x5D, 0x7C, 0x38, 0x34, 0x7C, 0x39, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x52, 0x45, 0x50, 0x86, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x37, 0x0A, 0x21, 0x28, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xB0, 0x01, 0x01, 0xBA, 0x01, 0x0B, 0x32, 0x36, 0x32, 0x7C, 0x36, 0x5B, 0x34, 0x39, 0x5D, 0x7C, 0x38, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8D, 0x03, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x23, 0x12, 0x0F, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1F, 0x12, 0x0B, 0x37, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x0C, 0x39, 0x30, 0x5B, 0x30, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x31, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x52, 0x4F, 0x50, 0x28, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x6A, 0x05, 0x20, 0x69, 0x6E, 0x74, 0x20, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x32, 0x33, 0x5D, 0x31, 0x7C, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0F, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE8, 0x03, 0x0A, 0x1C, 0x12, 0x10, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x32, 0x7D, 0x12, 0x21, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x25, 0x12, 0x10, 0x36, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x32, 0x7D, 0x32, 0x07, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x1F, 0x12, 0x0A, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x29, 0x12, 0x14, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x34, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x52, 0x53, 0x50, 0xFD, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x34, 0x0A, 0x14, 0x28, 0x5B, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0E, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x29, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x53, 0x0A, 0x12, 0x28, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x2F, 0x31, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x5B, 0x33, 0x38, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x34, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x14, 0x28, 0x36, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x36, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x14, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x82, 0x04, 0x0A, 0x15, 0x12, 0x0B, 0x5B, 0x33, 0x34, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x12, 0xB7, 0x01, 0x12, 0xA0, 0x01, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x31, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x33, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1C, 0x12, 0x06, 0x39, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x21, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x30, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x21, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x33, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x52, 0x55, 0x50, 0x07, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0x9A, 0x01, 0x44, 0x0A, 0x22, 0x28, 0x5B, 0x33, 0x34, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2D, 0x24, 0x34, 0x1A, 0x07, 0x5B, 0x33, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x06, 0x38, 0x20, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x16, 0x28, 0x37, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x37, 0x22, 0x06, 0x38, 0x20, 0x28, 0x24, 0x31, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xB0, 0x01, 0x01, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC4, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x1B, 0x12, 0x07, 0x32, 0x35, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1F, 0x12, 0x0B, 0x37, 0x5B, 0x32, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1C, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x52, 0x57, 0x50, 0xFA, 0x01, 0x5A, 0x03, 0x30, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x14, 0x28, 0x32, 0x35, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x1A, 0x28, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x99, 0x04, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x4E, 0x12, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x30, 0x12, 0x19, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x31, 0x31, 0x31, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x20, 0x12, 0x09, 0x39, 0x32, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x39, 0x32, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x41, 0x50, 0xC6, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x17, 0x28, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x14, 0x28, 0x39, 0x32, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x13, 0x28, 0x35, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x35, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x13, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x38, 0x31, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x42, 0x50, 0xA5, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBB, 0x04, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x12, 0xD7, 0x01, 0x12, 0xC5, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x36, 0x37, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x36, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x35, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x32, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x35, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x7C, 0x37, 0x38, 0x5B, 0x30, 0x31, 0x33, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x32, 0x31, 0x37, 0x31, 0x32, 0x33, 0x1A, 0x4F, 0x12, 0x3E, 0x28, 0x3F, 0x3A, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x35, 0x31, 0x30, 0x31, 0x32, 0x33, 0x22, 0x1A, 0x12, 0x09, 0x38, 0x30, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x26, 0x12, 0x14, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x36, 0x34, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x34, 0x34, 0x31, 0x30, 0x31, 0x32, 0x33, 0x4A, 0x02, 0x53, 0x43, 0x50, 0xF8, 0x01, 0x5A, 0x06, 0x30, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x14, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x34, 0x36, 0x5D, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF3, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x31, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x2C, 0x12, 0x18, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x33, 0x35, 0x36, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x20, 0x12, 0x0C, 0x39, 0x5B, 0x31, 0x32, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x44, 0x50, 0xF9, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x28, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8C, 0x11, 0x0A, 0x14, 0x12, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xD5, 0x04, 0x12, 0xC0, 0x04, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x32, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x31, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x33, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x34, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x32, 0x5C, 0x64, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x29, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x07, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x21, 0x12, 0x0D, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1F, 0x12, 0x09, 0x32, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x28, 0x12, 0x12, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x39, 0x7C, 0x34, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x1B, 0x12, 0x07, 0x37, 0x37, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x45, 0x50, 0x2E, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x35, 0x0A, 0x1C, 0x28, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x66, 0x0A, 0x21, 0x28, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x2D, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x39, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x58, 0x0A, 0x18, 0x28, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2B, 0x31, 0x5B, 0x31, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x39, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x87, 0x01, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x53, 0x31, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x7F, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x53, 0x31, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x41, 0x0A, 0x20, 0x28, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x09, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x14, 0x28, 0x32, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x1F, 0x28, 0x39, 0x5B, 0x30, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x06, 0x39, 0x5B, 0x30, 0x33, 0x34, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x30, 0x0A, 0x1C, 0x28, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x38, 0x2A, 0x00, 0xA2, 0x01, 0x61, 0x0A, 0x21, 0x28, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x2D, 0x31, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x39, 0x30, 0x2A, 0x00, 0xA2, 0x01, 0x53, 0x0A, 0x18, 0x28, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2B, 0x31, 0x5B, 0x31, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x35, 0x34, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x39, 0x30, 0x2A, 0x00, 0xA2, 0x01, 0x82, 0x01, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x53, 0x31, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x7A, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x53, 0x31, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x3C, 0x0A, 0x20, 0x28, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x09, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x26, 0x0A, 0x14, 0x28, 0x32, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x32, 0x30, 0x2A, 0x00, 0xA2, 0x01, 0x38, 0x0A, 0x1F, 0x28, 0x39, 0x5B, 0x30, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x06, 0x39, 0x5B, 0x30, 0x33, 0x34, 0x5D, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF1, 0x03, 0x0A, 0x24, 0x12, 0x18, 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x5B, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x1E, 0x12, 0x0B, 0x36, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x29, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x24, 0x12, 0x0A, 0x31, 0x3F, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x20, 0x12, 0x09, 0x31, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x0B, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x53, 0x47, 0x50, 0x41, 0x5A, 0x0B, 0x30, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x9A, 0x01, 0x2F, 0x0A, 0x14, 0x28, 0x5B, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0C, 0x5B, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x17, 0x28, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x14, 0x28, 0x37, 0x30, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x37, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x13, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x02, 0x38, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x20, 0x12, 0x09, 0x37, 0x30, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x0B, 0x37, 0x30, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x0A, 0xC3, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x12, 0x27, 0x12, 0x18, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x34, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x32, 0x31, 0x35, 0x38, 0x1A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x25, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x5B, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x04, 0x35, 0x30, 0x31, 0x32, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x48, 0x50, 0xA2, 0x02, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD2, 0x04, 0x0A, 0x23, 0x12, 0x18, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x12, 0x41, 0x12, 0x2C, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x31, 0x12, 0x1E, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x37, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x7C, 0x35, 0x31, 0x7C, 0x36, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1E, 0x12, 0x09, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x2D, 0x12, 0x18, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x7C, 0x38, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x25, 0x12, 0x12, 0x28, 0x3F, 0x3A, 0x35, 0x39, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x4A, 0x02, 0x53, 0x49, 0x50, 0x82, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x54, 0x0A, 0x19, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x21, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x33, 0x5B, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x41, 0x0A, 0x17, 0x28, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x15, 0x5B, 0x33, 0x37, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x39, 0x5D, 0x7C, 0x35, 0x31, 0x7C, 0x36, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x13, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x30, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x08, 0x5B, 0x38, 0x39, 0x5D, 0x5B, 0x30, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x12, 0x28, 0x5B, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x09, 0x35, 0x39, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEB, 0x02, 0x0A, 0x25, 0x12, 0x12, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x5B, 0x34, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x1A, 0x12, 0x07, 0x37, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x28, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x31, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1E, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x1E, 0x12, 0x0B, 0x38, 0x32, 0x5B, 0x30, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x2D, 0x12, 0x1A, 0x38, 0x31, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x30, 0x32, 0x31, 0x32, 0x33, 0x34, 0x3A, 0x1B, 0x12, 0x08, 0x38, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x4A, 0x50, 0x2F, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x42, 0x12, 0x28, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x38, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5C, 0x64, 0x29, 0x7C, 0x35, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x05, 0x30, 0x31, 0x32, 0x33, 0x34, 0xD0, 0x01, 0x01, 0x0A, 0xEC, 0x03, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x1E, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x36, 0x12, 0x22, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x34, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x2A, 0x12, 0x16, 0x39, 0x28, 0x3F, 0x3A, 0x5B, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x1F, 0x12, 0x0B, 0x38, 0x5B, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x2B, 0x12, 0x17, 0x36, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x53, 0x4B, 0x50, 0xA5, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x18, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3B, 0x0A, 0x1E, 0x28, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x1A, 0x28, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x36, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8D, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x12, 0x2A, 0x12, 0x15, 0x5B, 0x32, 0x33, 0x35, 0x5D, 0x32, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x3F, 0x12, 0x2A, 0x28, 0x3F, 0x3A, 0x32, 0x35, 0x7C, 0x33, 0x5B, 0x30, 0x33, 0x5D, 0x7C, 0x34, 0x34, 0x7C, 0x35, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x4C, 0x50, 0xE8, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x20, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x88, 0x04, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x30, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x32, 0x12, 0x1A, 0x30, 0x35, 0x34, 0x39, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x30, 0x31, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x30, 0x35, 0x34, 0x39, 0x38, 0x38, 0x36, 0x33, 0x37, 0x37, 0x1A, 0x1D, 0x12, 0x0A, 0x36, 0x5B, 0x31, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x36, 0x36, 0x36, 0x31, 0x32, 0x31, 0x32, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1E, 0x12, 0x0B, 0x37, 0x5B, 0x31, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x0B, 0x35, 0x5B, 0x31, 0x35, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x35, 0x38, 0x30, 0x30, 0x31, 0x31, 0x31, 0x30, 0x4A, 0x02, 0x53, 0x4D, 0x50, 0xFA, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x7A, 0x14, 0x28, 0x3F, 0x3A, 0x30, 0x35, 0x34, 0x39, 0x29, 0x3F, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x82, 0x01, 0x06, 0x30, 0x35, 0x34, 0x39, 0x24, 0x31, 0x9A, 0x01, 0x36, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1D, 0x0A, 0x0D, 0x28, 0x30, 0x35, 0x34, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1C, 0x0A, 0x07, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x07, 0x30, 0x35, 0x34, 0x39, 0x20, 0x24, 0x31, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xA2, 0x01, 0x34, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x1D, 0x0A, 0x0D, 0x28, 0x30, 0x35, 0x34, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x07, 0x28, 0x24, 0x31, 0x29, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x30, 0x2A, 0x00, 0xA2, 0x01, 0x1C, 0x0A, 0x07, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x09, 0x28, 0x30, 0x35, 0x34, 0x39, 0x29, 0x20, 0x24, 0x31, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0x9A, 0x03, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x34, 0x12, 0x20, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x30, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x38, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x30, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0xA7, 0x01, 0x12, 0x92, 0x01, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x5D, 0x30, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x32, 0x5B, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x33, 0x34, 0x38, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1E, 0x12, 0x0A, 0x33, 0x33, 0x33, 0x30, 0x31, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x33, 0x33, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x53, 0x4E, 0x50, 0xDD, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x97, 0x02, 0x0A, 0x19, 0x12, 0x0E, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x12, 0x2A, 0x12, 0x18, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x35, 0x35, 0x32, 0x32, 0x30, 0x31, 0x30, 0x1A, 0x24, 0x12, 0x11, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x31, 0x35, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x39, 0x30, 0x37, 0x39, 0x32, 0x30, 0x32, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x4F, 0x50, 0xFC, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x24, 0x0A, 0x0F, 0x28, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x22, 0x0A, 0x0F, 0x28, 0x5B, 0x31, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x31, 0x35, 0x7C, 0x39, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x52, 0x50, 0xD5, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC9, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x19, 0x12, 0x07, 0x32, 0x32, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1C, 0x12, 0x0A, 0x39, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x54, 0x50, 0xEF, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8C, 0x03, 0x0A, 0x2F, 0x12, 0x1D, 0x5B, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x1A, 0x0E, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x12, 0x1E, 0x12, 0x0B, 0x32, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x19, 0x12, 0x06, 0x37, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x2E, 0x12, 0x12, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x32, 0x07, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x2E, 0x12, 0x12, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x3F, 0x32, 0x07, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x56, 0x50, 0xF7, 0x03, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x21, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x32, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x21, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF9, 0x02, 0x0A, 0x18, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x12, 0x56, 0x12, 0x40, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x3F, 0x7C, 0x34, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x5D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x3C, 0x12, 0x28, 0x39, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x34, 0x35, 0x37, 0x5D, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x5B, 0x31, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x34, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x59, 0x50, 0xC3, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x18, 0x28, 0x39, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF0, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x30, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x8A, 0x01, 0x12, 0x77, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x37, 0x5D, 0x7C, 0x5B, 0x31, 0x33, 0x5D, 0x37, 0x7C, 0x32, 0x5B, 0x35, 0x37, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x33, 0x34, 0x5D, 0x7C, 0x5B, 0x31, 0x32, 0x37, 0x38, 0x5D, 0x33, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x5D, 0x5B, 0x33, 0x34, 0x5D, 0x29, 0x7C, 0x28, 0x3F, 0x3A, 0x34, 0x30, 0x5B, 0x34, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x36, 0x37, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x31, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x38, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x37, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1E, 0x12, 0x0B, 0x37, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x09, 0x30, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x30, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x5A, 0x50, 0x8C, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x30, 0x32, 0x37, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x1C, 0x12, 0x09, 0x30, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x30, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xA1, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x3A, 0x12, 0x1B, 0x36, 0x34, 0x39, 0x28, 0x3F, 0x3A, 0x37, 0x31, 0x32, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7C, 0x35, 0x30, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x36, 0x34, 0x39, 0x37, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x52, 0x12, 0x3C, 0x36, 0x34, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x33, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x5D, 0x29, 0x7C, 0x34, 0x5B, 0x33, 0x34, 0x5D, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x36, 0x34, 0x39, 0x32, 0x33, 0x31, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x24, 0x12, 0x0E, 0x36, 0x34, 0x39, 0x37, 0x31, 0x5B, 0x30, 0x31, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x36, 0x34, 0x39, 0x37, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x4A, 0x02, 0x54, 0x43, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x36, 0x34, 0x39, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xA4, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x32, 0x12, 0x1F, 0x32, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x33, 0x37, 0x38, 0x39, 0x5D, 0x30, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x40, 0x12, 0x2D, 0x28, 0x3F, 0x3A, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x37, 0x5C, 0x64, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x44, 0x50, 0xEB, 0x01, 0x5A, 0x05, 0x30, 0x30, 0x7C, 0x31, 0x36, 0x8A, 0x01, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x46, 0x50, 0x86, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x88, 0x02, 0x0A, 0x14, 0x12, 0x0B, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x33, 0x12, 0x21, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x34, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x32, 0x12, 0x20, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x35, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x47, 0x50, 0xE4, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xDB, 0x03, 0x0A, 0x1F, 0x12, 0x13, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x7C, 0x31, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x3F, 0x12, 0x2C, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1A, 0x12, 0x06, 0x38, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1F, 0x12, 0x09, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1F, 0x12, 0x09, 0x31, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x36, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x54, 0x48, 0x50, 0x42, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x27, 0x0A, 0x11, 0x28, 0x32, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x19, 0x28, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x27, 0x0A, 0x11, 0x28, 0x38, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x17, 0x28, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAA, 0x04, 0x0A, 0x16, 0x12, 0x0B, 0x5B, 0x33, 0x2D, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x12, 0x56, 0x12, 0x40, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x37, 0x32, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x36, 0x7C, 0x37, 0x34, 0x7C, 0x38, 0x37, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x37, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x2C, 0x12, 0x18, 0x28, 0x3F, 0x3A, 0x35, 0x30, 0x35, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x4A, 0x50, 0xE0, 0x07, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0x9A, 0x01, 0x3E, 0x0A, 0x1A, 0x28, 0x5B, 0x33, 0x34, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0C, 0x5B, 0x33, 0x34, 0x5D, 0x37, 0x7C, 0x39, 0x31, 0x5B, 0x37, 0x38, 0x5D, 0x22, 0x06, 0x28, 0x38, 0x29, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x47, 0x0A, 0x17, 0x28, 0x5B, 0x34, 0x35, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x18, 0x34, 0x5B, 0x34, 0x38, 0x5D, 0x7C, 0x35, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x39, 0x7C, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x06, 0x28, 0x38, 0x29, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x43, 0x0A, 0x13, 0x28, 0x33, 0x33, 0x31, 0x37, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x33, 0x33, 0x31, 0x1A, 0x04, 0x33, 0x33, 0x31, 0x37, 0x1A, 0x05, 0x33, 0x33, 0x31, 0x37, 0x30, 0x1A, 0x06, 0x33, 0x33, 0x31, 0x37, 0x30, 0x30, 0x22, 0x06, 0x28, 0x38, 0x29, 0x20, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x52, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x33, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x1A, 0x20, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x29, 0x22, 0x06, 0x28, 0x38, 0x29, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x4B, 0x50, 0xB2, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x97, 0x02, 0x0A, 0x16, 0x12, 0x0D, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x12, 0x2F, 0x12, 0x1D, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x1D, 0x12, 0x0B, 0x37, 0x5B, 0x32, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x22, 0x19, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2A, 0x19, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x19, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x07, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x4C, 0x50, 0x9E, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x81, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x2C, 0x12, 0x19, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x5C, 0x64, 0x7C, 0x32, 0x34, 0x33, 0x7C, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x32, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x1E, 0x12, 0x0B, 0x36, 0x5B, 0x36, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x36, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x4D, 0x50, 0xE1, 0x07, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0x9A, 0x01, 0x35, 0x0A, 0x1E, 0x28, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xFD, 0x01, 0x0A, 0x15, 0x12, 0x0C, 0x5B, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x12, 0x19, 0x12, 0x06, 0x37, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x29, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x30, 0x2D, 0x37, 0x5D, 0x7C, 0x34, 0x30, 0x7C, 0x39, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x1E, 0x12, 0x0B, 0x38, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x4E, 0x50, 0xD8, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x19, 0x28, 0x5B, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x4F, 0x50, 0xA4, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF2, 0x04, 0x0A, 0x21, 0x12, 0x15, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x34, 0x34, 0x34, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x99, 0x01, 0x12, 0x82, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x5D, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x38, 0x5D, 0x5B, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x36, 0x37, 0x5D, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x5D, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x5B, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x5B, 0x30, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x39, 0x32, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x5D, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x5B, 0x32, 0x34, 0x36, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x36, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x46, 0x12, 0x30, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x7C, 0x32, 0x32, 0x7C, 0x33, 0x5C, 0x64, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x52, 0x50, 0x5A, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x48, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1C, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x28, 0x0A, 0x13, 0x28, 0x34, 0x34, 0x34, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x34, 0x34, 0x34, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x1E, 0x12, 0x08, 0x35, 0x31, 0x32, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x26, 0x12, 0x11, 0x34, 0x34, 0x34, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x38, 0x35, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x34, 0x34, 0x34, 0x31, 0x34, 0x34, 0x34, 0x0A, 0xDF, 0x03, 0x0A, 0x1D, 0x12, 0x0A, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x6D, 0x12, 0x4E, 0x38, 0x36, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x37, 0x7C, 0x31, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x38, 0x32, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x38, 0x36, 0x38, 0x32, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x7A, 0x12, 0x64, 0x38, 0x36, 0x38, 0x28, 0x3F, 0x3A, 0x32, 0x39, 0x5C, 0x64, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x30, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5C, 0x64, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x36, 0x38, 0x32, 0x39, 0x31, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x54, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x38, 0x36, 0x38, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAE, 0x01, 0x0A, 0x16, 0x12, 0x0B, 0x5B, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x12, 0x1C, 0x12, 0x0C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x05, 0x32, 0x30, 0x31, 0x32, 0x33, 0x1A, 0x18, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x56, 0x50, 0xB0, 0x05, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE5, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0x21, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1A, 0x12, 0x06, 0x39, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1C, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x54, 0x57, 0x50, 0xF6, 0x06, 0x5A, 0x10, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x32, 0x35, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x31, 0x39, 0x29, 0x62, 0x01, 0x30, 0x6A, 0x01, 0x23, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x38, 0x0A, 0x17, 0x28, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0C, 0x5B, 0x32, 0x2D, 0x37, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x38, 0x30, 0x7C, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC1, 0x03, 0x0A, 0x10, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x21, 0x12, 0x0B, 0x32, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x32, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x2A, 0x12, 0x16, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x31, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x1F, 0x12, 0x0B, 0x38, 0x30, 0x5B, 0x30, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1B, 0x12, 0x07, 0x39, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x26, 0x12, 0x12, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x30, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x34, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x34, 0x31, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x34, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x54, 0x5A, 0x50, 0xFF, 0x01, 0x5A, 0x07, 0x30, 0x30, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x16, 0x28, 0x5B, 0x32, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x32, 0x34, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x5B, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x36, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x32, 0x0A, 0x19, 0x28, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xE4, 0x07, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0x3D, 0x12, 0x27, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x31, 0x12, 0x1D, 0x28, 0x3F, 0x3A, 0x33, 0x39, 0x7C, 0x35, 0x30, 0x7C, 0x36, 0x5B, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x1C, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x55, 0x41, 0x50, 0xFC, 0x02, 0x5A, 0x03, 0x30, 0x7E, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0xA4, 0x01, 0x0A, 0x18, 0x28, 0x5B, 0x33, 0x2D, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x36, 0x33, 0x39, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x37, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x36, 0x5B, 0x33, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x5B, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x1A, 0x3F, 0x33, 0x39, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x37, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x31, 0x34, 0x2D, 0x37, 0x5D, 0x7C, 0x37, 0x29, 0x7C, 0x37, 0x5B, 0x33, 0x37, 0x5D, 0x29, 0x7C, 0x36, 0x5B, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xCA, 0x01, 0x0A, 0x1C, 0x28, 0x5B, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x43, 0x33, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x32, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x37, 0x38, 0x5D, 0x32, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x32, 0x7C, 0x36, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x39, 0x5D, 0x32, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x38, 0x7C, 0x39, 0x30, 0x1A, 0x54, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x32, 0x29, 0x7C, 0x34, 0x5B, 0x31, 0x33, 0x37, 0x38, 0x5D, 0x32, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x5D, 0x32, 0x7C, 0x36, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x39, 0x5D, 0x32, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x5B, 0x32, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x34, 0x5D, 0x29, 0x7C, 0x38, 0x7C, 0x39, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xD2, 0x02, 0x0A, 0x13, 0x28, 0x5B, 0x33, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x87, 0x01, 0x33, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x37, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x7C, 0x37, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x39, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x5B, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x1A, 0xA2, 0x01, 0x33, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x7C, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x33, 0x37, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x32, 0x33, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x7C, 0x37, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x34, 0x39, 0x5D, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x5B, 0x31, 0x33, 0x2D, 0x38, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD2, 0x03, 0x0A, 0x10, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x12, 0x52, 0x12, 0x3C, 0x33, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x35, 0x36, 0x5D, 0x7C, 0x39, 0x36, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x32, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7C, 0x32, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x2D, 0x12, 0x19, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x30, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x21, 0x12, 0x0D, 0x38, 0x30, 0x30, 0x5B, 0x31, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x20, 0x12, 0x0C, 0x39, 0x30, 0x5B, 0x31, 0x32, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x55, 0x47, 0x50, 0x80, 0x02, 0x5A, 0x07, 0x30, 0x30, 0x5B, 0x30, 0x35, 0x37, 0x5D, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x41, 0x0A, 0x15, 0x28, 0x5B, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x1A, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x30, 0x30, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x37, 0x0A, 0x0F, 0x28, 0x5B, 0x33, 0x34, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x16, 0x33, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x22, 0x0A, 0x0D, 0x28, 0x32, 0x30, 0x32, 0x34, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x03, 0x32, 0x30, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8E, 0x0C, 0x0A, 0x1D, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0xD3, 0x04, 0x12, 0xB3, 0x04, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x37, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x38, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x34, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x32, 0x39, 0x5D, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x34, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x38, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x36, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x29, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0xD3, 0x04, 0x12, 0xB3, 0x04, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x33, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x34, 0x37, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x32, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x5D, 0x7C, 0x35, 0x38, 0x7C, 0x36, 0x39, 0x7C, 0x37, 0x5B, 0x30, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x34, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x30, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x34, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x33, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x31, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x33, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x36, 0x5D, 0x7C, 0x34, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x32, 0x39, 0x5D, 0x7C, 0x37, 0x38, 0x7C, 0x38, 0x5B, 0x31, 0x32, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x31, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x34, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x37, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x37, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x33, 0x35, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x35, 0x36, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x38, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x5D, 0x7C, 0x34, 0x5B, 0x33, 0x35, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x38, 0x5D, 0x29, 0x7C, 0x39, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x36, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x31, 0x37, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x35, 0x39, 0x5D, 0x29, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x55, 0x53, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0x9A, 0x01, 0x27, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0A, 0x28, 0x24, 0x31, 0x29, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xA2, 0x01, 0x23, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xB0, 0x01, 0x01, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x6D, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x55, 0x59, 0x50, 0xD6, 0x04, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8C, 0x02, 0x0A, 0x15, 0x12, 0x0A, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x12, 0x30, 0x12, 0x1A, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x31, 0x32, 0x35, 0x36, 0x37, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x1A, 0x24, 0x12, 0x0E, 0x39, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x55, 0x5A, 0x50, 0xE6, 0x07, 0x5A, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0x9A, 0x01, 0x34, 0x0A, 0x1E, 0x28, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x03, 0x38, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC7, 0x01, 0x0A, 0x11, 0x12, 0x07, 0x30, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x12, 0x20, 0x12, 0x0A, 0x30, 0x36, 0x36, 0x39, 0x38, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x30, 0x36, 0x36, 0x39, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x0A, 0x12, 0x03, 0x4E, 0x2F, 0x41, 0x1A, 0x03, 0x4E, 0x2F, 0x41, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x41, 0x50, 0xFB, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x22, 0x0A, 0x12, 0x28, 0x30, 0x36, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0xBA, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x70, 0x12, 0x51, 0x37, 0x38, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x36, 0x36, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5C, 0x64, 0x7C, 0x38, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x33, 0x38, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x35, 0x35, 0x35, 0x7C, 0x36, 0x33, 0x38, 0x7C, 0x37, 0x38, 0x34, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x37, 0x38, 0x34, 0x32, 0x36, 0x36, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x51, 0x12, 0x3B, 0x37, 0x38, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x5D, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x39, 0x33, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x38, 0x34, 0x34, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x43, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x37, 0x38, 0x34, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDB, 0x02, 0x0A, 0x18, 0x12, 0x0C, 0x5B, 0x32, 0x34, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x51, 0x12, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x31, 0x32, 0x7C, 0x33, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x38, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x36, 0x37, 0x5D, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x29, 0x7C, 0x35, 0x30, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x2D, 0x12, 0x17, 0x34, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x32, 0x34, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x34, 0x36, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x34, 0x31, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x45, 0x50, 0x3A, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x0A, 0x28, 0x31, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x7C, 0x30, 0x9A, 0x01, 0x24, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x06, 0x24, 0x43, 0x43, 0x20, 0x24, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAB, 0x03, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x32, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x5D, 0x12, 0x3E, 0x32, 0x38, 0x34, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x39, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x36, 0x7C, 0x39, 0x5B, 0x34, 0x35, 0x5D, 0x29, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x35, 0x32, 0x7C, 0x36, 0x5B, 0x34, 0x35, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x34, 0x39, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x32, 0x38, 0x34, 0x32, 0x32, 0x39, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x55, 0x12, 0x3F, 0x32, 0x38, 0x34, 0x28, 0x3F, 0x3A, 0x28, 0x3F, 0x3A, 0x33, 0x30, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x30, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x38, 0x7C, 0x39, 0x39, 0x29, 0x7C, 0x35, 0x34, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x7C, 0x34, 0x39, 0x36, 0x5B, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x38, 0x34, 0x33, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x47, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x32, 0x38, 0x34, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEE, 0x02, 0x0A, 0x1E, 0x12, 0x0B, 0x5B, 0x33, 0x35, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x12, 0x39, 0x12, 0x1A, 0x33, 0x34, 0x30, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x34, 0x39, 0x5D, 0x32, 0x7C, 0x37, 0x5B, 0x31, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x33, 0x34, 0x30, 0x36, 0x34, 0x32, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x39, 0x12, 0x1A, 0x33, 0x34, 0x30, 0x28, 0x3F, 0x3A, 0x36, 0x5B, 0x34, 0x39, 0x5D, 0x32, 0x7C, 0x37, 0x5B, 0x31, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x33, 0x34, 0x30, 0x36, 0x34, 0x32, 0x31, 0x32, 0x33, 0x34, 0x22, 0x33, 0x12, 0x1D, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x35, 0x35, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x23, 0x12, 0x0D, 0x39, 0x30, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x2D, 0x12, 0x17, 0x35, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x33, 0x33, 0x7C, 0x34, 0x34, 0x29, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x49, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x03, 0x33, 0x34, 0x30, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF2, 0x06, 0x0A, 0x22, 0x12, 0x16, 0x38, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x38, 0x7D, 0x7C, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xAF, 0x01, 0x12, 0x96, 0x01, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x31, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x33, 0x34, 0x38, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x35, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x5B, 0x34, 0x38, 0x5D, 0x5C, 0x64, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x7C, 0x37, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x38, 0x5D, 0x5B, 0x30, 0x31, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x36, 0x39, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x32, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x39, 0x12, 0x22, 0x28, 0x3F, 0x3A, 0x39, 0x5C, 0x64, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x39, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x23, 0x12, 0x0B, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x23, 0x12, 0x0B, 0x31, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x4E, 0x50, 0x54, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2D, 0x0A, 0x14, 0x28, 0x5B, 0x34, 0x38, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x34, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x5B, 0x0A, 0x19, 0x28, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x2D, 0x32, 0x5B, 0x30, 0x32, 0x35, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x31, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x1F, 0x0A, 0x0B, 0x28, 0x38, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x02, 0x38, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x23, 0x0A, 0x0F, 0x28, 0x36, 0x39, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x02, 0x36, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4D, 0x0A, 0x1C, 0x28, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1C, 0x32, 0x5B, 0x31, 0x33, 0x34, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x35, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x36, 0x35, 0x7C, 0x37, 0x5B, 0x31, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x1A, 0x28, 0x39, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x19, 0x28, 0x31, 0x5B, 0x32, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0F, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x38, 0x38, 0x7C, 0x39, 0x39, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x12, 0x28, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x56, 0x55, 0x50, 0xA6, 0x05, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x57, 0x46, 0x50, 0xA9, 0x05, 0x5A, 0x02, 0x31, 0x39, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC0, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x12, 0x2F, 0x12, 0x1D, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x5C, 0x64, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x34, 0x30, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x32, 0x05, 0x32, 0x32, 0x31, 0x32, 0x33, 0x1A, 0x28, 0x12, 0x15, 0x28, 0x3F, 0x3A, 0x36, 0x30, 0x7C, 0x37, 0x5B, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x32, 0x06, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x22, 0x19, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x06, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x57, 0x53, 0x50, 0xAD, 0x05, 0x5A, 0x01, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x29, 0x0A, 0x11, 0x28, 0x38, 0x5B, 0x30, 0x34, 0x5D, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x06, 0x38, 0x5B, 0x30, 0x34, 0x5D, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x10, 0x28, 0x37, 0x5B, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x07, 0x37, 0x5B, 0x32, 0x35, 0x2D, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xEF, 0x02, 0x0A, 0x17, 0x12, 0x0C, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x12, 0x5C, 0x12, 0x48, 0x28, 0x3F, 0x3A, 0x31, 0x28, 0x3F, 0x3A, 0x37, 0x5C, 0x64, 0x7C, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x7C, 0x32, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x32, 0x33, 0x35, 0x38, 0x5D, 0x7C, 0x34, 0x5B, 0x32, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x33, 0x2D, 0x35, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x38, 0x7D, 0x32, 0x07, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x1F, 0x12, 0x0B, 0x37, 0x5B, 0x31, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x59, 0x45, 0x50, 0xC7, 0x07, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3A, 0x0A, 0x17, 0x28, 0x5B, 0x31, 0x2D, 0x37, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0E, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x18, 0x28, 0x37, 0x5B, 0x31, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x37, 0x5B, 0x31, 0x33, 0x37, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD7, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x22, 0x12, 0x0E, 0x32, 0x36, 0x39, 0x36, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x36, 0x39, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1C, 0x12, 0x08, 0x36, 0x33, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x33, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x59, 0x54, 0x50, 0x86, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x06, 0x32, 0x36, 0x39, 0x7C, 0x36, 0x33, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB9, 0x03, 0x0A, 0x10, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x12, 0x44, 0x12, 0x2E, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x34, 0x5C, 0x64, 0x7C, 0x35, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x30, 0x12, 0x1C, 0x28, 0x3F, 0x3A, 0x37, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x20, 0x12, 0x0C, 0x38, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x1C, 0x12, 0x08, 0x38, 0x36, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x1B, 0x12, 0x07, 0x38, 0x37, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x37, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x4A, 0x02, 0x5A, 0x41, 0x50, 0x1B, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2B, 0x0A, 0x13, 0x28, 0x38, 0x36, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x36, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x49, 0x0A, 0x19, 0x28, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x1B, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xB3, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x20, 0x12, 0x0C, 0x32, 0x31, 0x5B, 0x31, 0x2D, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x2E, 0x12, 0x1A, 0x39, 0x28, 0x3F, 0x3A, 0x35, 0x35, 0x7C, 0x36, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x35, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1C, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x5A, 0x4D, 0x50, 0x84, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x0F, 0x28, 0x5B, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x04, 0x5B, 0x32, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x29, 0x0A, 0x13, 0x28, 0x38, 0x30, 0x30, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBB, 0x0B, 0x0A, 0x42, 0x12, 0x36, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x32, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x38, 0x7D, 0x7C, 0x36, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x29, 0x7C, 0x5B, 0x31, 0x33, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x38, 0x7D, 0x7C, 0x38, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0xAB, 0x02, 0x12, 0x95, 0x02, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x5B, 0x31, 0x36, 0x5D, 0x7C, 0x32, 0x5B, 0x32, 0x38, 0x5D, 0x7C, 0x5B, 0x34, 0x39, 0x5D, 0x38, 0x3F, 0x7C, 0x35, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x34, 0x36, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x33, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x38, 0x3F, 0x7C, 0x31, 0x37, 0x3F, 0x7C, 0x33, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x35, 0x36, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x35, 0x36, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x33, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x34, 0x38, 0x33, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x37, 0x3F, 0x7C, 0x38, 0x29, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x32, 0x38, 0x7C, 0x33, 0x37, 0x3F, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x39, 0x38, 0x3F, 0x29, 0x7C, 0x38, 0x34, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x32, 0x28, 0x3F, 0x3A, 0x32, 0x37, 0x7C, 0x35, 0x7C, 0x37, 0x5B, 0x31, 0x33, 0x35, 0x37, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x35, 0x5D, 0x29, 0x7C, 0x33, 0x5B, 0x33, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x36, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x36, 0x7D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x37, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x34, 0x5C, 0x64, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x07, 0x31, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x1A, 0x1F, 0x12, 0x0B, 0x37, 0x5B, 0x31, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x37, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x39, 0x12, 0x23, 0x38, 0x36, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x31, 0x32, 0x5D, 0x7C, 0x32, 0x32, 0x7C, 0x33, 0x30, 0x7C, 0x34, 0x34, 0x7C, 0x38, 0x5B, 0x33, 0x36, 0x37, 0x5D, 0x7C, 0x39, 0x39, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x38, 0x36, 0x38, 0x36, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x4A, 0x02, 0x5A, 0x57, 0x50, 0x87, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x33, 0x0A, 0x16, 0x28, 0x5B, 0x34, 0x39, 0x5D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x34, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x35, 0x0A, 0x19, 0x28, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x31, 0x39, 0x5D, 0x31, 0x7C, 0x37, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xBA, 0x01, 0x0A, 0x14, 0x28, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x93, 0x01, 0x31, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x5B, 0x32, 0x39, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0xC2, 0x01, 0x0A, 0x19, 0x28, 0x5B, 0x31, 0x2D, 0x33, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x93, 0x01, 0x31, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x39, 0x5D, 0x7C, 0x30, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x35, 0x5D, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x31, 0x34, 0x35, 0x5D, 0x7C, 0x5B, 0x32, 0x39, 0x5D, 0x5B, 0x30, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x30, 0x2D, 0x36, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x72, 0x0A, 0x16, 0x28, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x4A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x37, 0x38, 0x5D, 0x7C, 0x30, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x38, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x38, 0x7C, 0x31, 0x37, 0x7C, 0x33, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x5B, 0x31, 0x35, 0x5D, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x39, 0x5D, 0x38, 0x7C, 0x33, 0x37, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x7A, 0x0A, 0x1B, 0x28, 0x5B, 0x32, 0x33, 0x35, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x4A, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x37, 0x38, 0x5D, 0x7C, 0x30, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x34, 0x38, 0x29, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x38, 0x7C, 0x31, 0x37, 0x7C, 0x33, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x7C, 0x35, 0x5B, 0x31, 0x35, 0x5D, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x39, 0x5D, 0x38, 0x7C, 0x33, 0x37, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x5B, 0x37, 0x38, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3E, 0x0A, 0x14, 0x28, 0x5B, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0A, 0x28, 0x3F, 0x3A, 0x32, 0x35, 0x7C, 0x35, 0x34, 0x29, 0x38, 0x1A, 0x0C, 0x32, 0x35, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x35, 0x34, 0x38, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x46, 0x0A, 0x19, 0x28, 0x5B, 0x32, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0A, 0x28, 0x3F, 0x3A, 0x32, 0x35, 0x7C, 0x35, 0x34, 0x29, 0x38, 0x1A, 0x0C, 0x32, 0x35, 0x38, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x35, 0x34, 0x38, 0x33, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x22, 0x0A, 0x0F, 0x28, 0x38, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x38, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, };
-
-int metadata_size() {
- return sizeof(metadata_data) / sizeof(metadata_data[0]);
-}
-
-const void* metadata_get() {
- return metadata_data;
-}
diff --git a/third_party/libphonenumber/cpp/src/metadata.h b/third_party/libphonenumber/cpp/src/metadata.h
deleted file mode 100644
index 59794e6..0000000
--- a/third_party/libphonenumber/cpp/src/metadata.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-#ifndef EMBEDDED_DATA_METADATA_H_
-#define EMBEDDED_DATA_METADATA_H_
-
-int metadata_size();
-const void* metadata_get();
-
-#endif // EMBEDDED_DATA_METADATA_H_
diff --git a/third_party/libphonenumber/cpp/src/phonenumber.cc b/third_party/libphonenumber/cpp/src/phonenumber.cc
deleted file mode 100644
index f622e93..0000000
--- a/third_party/libphonenumber/cpp/src/phonenumber.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (C) 2009 Google Inc.
-//
-// 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.
-
-// Author: Philippe Liard
-
-#include "phonemetadata.pb.h"
-#include "phonenumber.pb.h"
-
-namespace i18n {
-namespace phonenumbers {
-
-bool ExactlySameAs(const PhoneNumber& first_number,
- const PhoneNumber& second_number) {
- if (first_number.has_country_code() != second_number.has_country_code() ||
- first_number.country_code() != second_number.country_code()) {
- return false;
- }
- if (first_number.has_national_number() !=
- second_number.has_national_number() ||
- first_number.national_number() != second_number.national_number()) {
- return false;
- }
- if (first_number.has_extension() != second_number.has_extension() ||
- first_number.extension() != second_number.extension()) {
- return false;
- }
- if (first_number.has_italian_leading_zero() !=
- second_number.has_italian_leading_zero() ||
- first_number.italian_leading_zero() !=
- second_number.italian_leading_zero()) {
- return false;
- }
- if (first_number.has_raw_input() != second_number.has_raw_input() ||
- first_number.raw_input() != second_number.raw_input()) {
- return false;
- }
- if (first_number.has_country_code_source() !=
- second_number.has_country_code_source() ||
- first_number.country_code_source() !=
- second_number.country_code_source()) {
- return false;
- }
- if (first_number.has_preferred_domestic_carrier_code() !=
- second_number.has_preferred_domestic_carrier_code() ||
- first_number.preferred_domestic_carrier_code() !=
- second_number.preferred_domestic_carrier_code()) {
- return false;
- }
- return true;
-}
-
-bool ExactlySameAs(const PhoneNumberDesc& first_number_desc,
- const PhoneNumberDesc& second_number_desc) {
- if (first_number_desc.has_national_number_pattern() !=
- second_number_desc.has_national_number_pattern() ||
- first_number_desc.national_number_pattern() !=
- second_number_desc.national_number_pattern()) {
- return false;
- }
- if (first_number_desc.has_possible_number_pattern() !=
- second_number_desc.has_possible_number_pattern() ||
- first_number_desc.possible_number_pattern() !=
- second_number_desc.possible_number_pattern()) {
- return false;
- }
- if (first_number_desc.has_example_number() !=
- second_number_desc.has_example_number() ||
- first_number_desc.example_number() !=
- second_number_desc.example_number()) {
- return false;
- }
- return true;
-}
-
-} // namespace phonenumbers
-} // namespace i18n
diff --git a/third_party/libphonenumber/cpp/src/phonenumber.h b/third_party/libphonenumber/cpp/src/phonenumber.h
deleted file mode 100644
index 952ca7c..0000000
--- a/third_party/libphonenumber/cpp/src/phonenumber.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (C) 2009 Google Inc.
-//
-// 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.
-
-// Author: Philippe Liard
-
-#ifndef I18N_PHONENUMBERS_PHONENUMBER_H_
-#define I18N_PHONENUMBERS_PHONENUMBER_H_
-
-// Helper functions dealing with PhoneNumber and PhoneNumberDesc comparisons.
-
-namespace i18n {
-namespace phonenumbers {
-
-class PhoneNumber;
-class PhoneNumberDesc;
-
-// Compares two phone numbers.
-bool ExactlySameAs(const PhoneNumber& first_number,
- const PhoneNumber& second_number);
-
-
-// Compares two phone number descriptions.
-bool ExactlySameAs(const PhoneNumberDesc& first_number_desc,
- const PhoneNumberDesc& second_number_desc);
-
-} // namespace phonenumbers
-} // namespace i18n
-
-#endif // I18N_PHONENUMBERS_PHONENUMBER_H_
diff --git a/third_party/libphonenumber/cpp/src/phonenumberutil.cc b/third_party/libphonenumber/cpp/src/phonenumberutil.cc
deleted file mode 100644
index 75ef374..0000000
--- a/third_party/libphonenumber/cpp/src/phonenumberutil.cc
+++ /dev/null
@@ -1,2266 +0,0 @@
-// Copyright (C) 2009 Google Inc.
-//
-// 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.
-
-// Author: Shaopeng Jia
-// Open-sourced by: Philippe Liard
-
-#include "phonenumberutil.h"
-
-#include <algorithm>
-#include <fstream>
-#include <iostream>
-#include <map>
-#include <sstream>
-#include <vector>
-
-#include <google/protobuf/message_lite.h>
-#include <unicode/errorcode.h>
-#include <unicode/translit.h>
-
-#include "base/logging.h"
-#include "base/singleton.h"
-#include "default_logger.h"
-#include "logger_adapter.h"
-#include "metadata.h"
-#include "phonemetadata.pb.h"
-#include "phonenumber.h"
-#include "phonenumber.pb.h"
-#include "regexp_adapter.h"
-#include "stringutil.h"
-#include "utf/unicodetext.h"
-#include "utf/utf.h"
-
-namespace i18n {
-namespace phonenumbers {
-
-using std::cerr;
-using std::endl;
-using std::ifstream;
-using std::make_pair;
-using std::sort;
-using std::stringstream;
-
-using google::protobuf::RepeatedPtrField;
-
-namespace {
-
-scoped_ptr<LoggerAdapter> logger;
-
-// These objects are created in the function InitializeStaticMapsAndSets.
-
-// These mappings map a character (key) to a specific digit that should replace
-// it for normalization purposes.
-scoped_ptr<map<char32, char> > alpha_mappings;
-// For performance reasons, amalgamate both into one map.
-scoped_ptr<map<char32, char> > all_normalization_mappings;
-// Separate map of all symbols that we wish to retain when formatting alpha
-// numbers. This includes digits, ascii letters and number grouping symbols such
-// as "-" and " ".
-scoped_ptr<map<char32, char> > all_plus_number_grouping_symbols;
-
-// The kPlusSign signifies the international prefix.
-const char kPlusSign[] = "+";
-
-const char kPlusChars[] = "++";
-scoped_ptr<const reg_exp::RegularExpression> plus_chars_pattern;
-
-const char kRfc3966ExtnPrefix[] = ";ext=";
-
-// Pattern that makes it easy to distinguish whether a region has a unique
-// international dialing prefix or not. If a region has a unique international
-// prefix (e.g. 011 in USA), it will be represented as a string that contains a
-// sequence of ASCII digits. If there are multiple available international
-// prefixes in a region, they will be represented as a regex string that always
-// contains character(s) other than ASCII digits.
-// Note this regex also includes tilde, which signals waiting for the tone.
-scoped_ptr<const reg_exp::RegularExpression> unique_international_prefix;
-
-// Digits accepted in phone numbers.
-// Both Arabic-Indic and Eastern Arabic-Indic are supported.
-const char kValidDigits[] = "0-90-9٠-٩۰-۹";
-// We accept alpha characters in phone numbers, ASCII only. We store lower-case
-// here only since our regular expressions are case-insensitive.
-const char kValidAlpha[] = "a-z";
-scoped_ptr<const reg_exp::RegularExpression> capturing_digit_pattern;
-scoped_ptr<const reg_exp::RegularExpression> capturing_ascii_digits_pattern;
-
-// Regular expression of acceptable characters that may start a phone number
-// for the purposes of parsing. This allows us to strip away meaningless
-// prefixes to phone numbers that may be mistakenly given to us. This
-// consists of digits, the plus symbol and arabic-indic digits. This does
-// not contain alpha characters, although they may be used later in the
-// number. It also does not include other punctuation, as this will be
-// stripped later during parsing and is of no information value when parsing
-// a number. The string starting with this valid character is captured.
-// This corresponds to VALID_START_CHAR in the java version.
-scoped_ptr<const string> valid_start_char;
-scoped_ptr<const reg_exp::RegularExpression> valid_start_char_pattern;
-
-// Regular expression of characters typically used to start a second phone
-// number for the purposes of parsing. This allows us to strip off parts of
-// the number that are actually the start of another number, such as for:
-// (530) 583-6985 x302/x2303 -> the second extension here makes this actually
-// two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove
-// the second extension so that the first number is parsed correctly. The string
-// preceding this is captured.
-// This corresponds to SECOND_NUMBER_START in the java version.
-const char kCaptureUpToSecondNumberStart[] = "(.*)[\\\\/] *x";
-scoped_ptr<const reg_exp::RegularExpression>
- capture_up_to_second_number_start_pattern;
-
-// Regular expression of trailing characters that we want to remove. We remove
-// all characters that are not alpha or numerical characters. The hash
-// character is retained here, as it may signify the previous block was an
-// extension. Note the capturing block at the start to capture the rest of the
-// number if this was a match.
-// This corresponds to UNWANTED_END_CHARS in the java version.
-const char kUnwantedEndChar[] = "[^\\p{N}\\p{L}#]";
-scoped_ptr<const reg_exp::RegularExpression> unwanted_end_char_pattern;
-
-// Regular expression of acceptable punctuation found in phone numbers. This
-// excludes punctuation found as a leading character only. This consists of
-// dash characters, white space characters, full stops, slashes, square
-// brackets, parentheses and tildes. It also includes the letter 'x' as that is
-// found as a placeholder for carrier information in some phone numbers.
-// Full-width variants are also present.
-// To find out the unicode code-point of the characters below in vim, highlight
-// the character and type 'ga'. Note that the - is used to express ranges of
-// full-width punctuation below, as well as being present in the expression
-// itself. In emacs, you can use M-x unicode-what to query information about the
-// unicode character.
-const char kValidPunctuation[] =
- "-x‐-―−ー--/  ​⁠ ()()[].\\[\\]/~⁓∼~";
-
-// Regular expression of viable phone numbers. This is location independent.
-// Checks we have at least three leading digits, and only valid punctuation,
-// alpha characters and digits in the phone number. Does not include extension
-// data. The symbol 'x' is allowed here as valid punctuation since it is often
-// used as a placeholder for carrier codes, for example in Brazilian phone
-// numbers. We also allow multiple plus-signs at the start.
-// Corresponds to the following:
-// plus_sign*([punctuation]*[digits]){3,}([punctuation]|[digits]|[alpha])*
-scoped_ptr<const string> valid_phone_number;
-
-// Default extension prefix to use when formatting. This will be put in front of
-// any extension component of the number, after the main national number is
-// formatted. For example, if you wish the default extension formatting to be "
-// extn: 3456", then you should specify " extn: " here as the default extension
-// prefix. This can be overridden by region-specific preferences.
-const char kDefaultExtnPrefix[] = " ext. ";
-
-// Regexp of all possible ways to write extensions, for use when parsing. This
-// will be run as a case-insensitive regexp match. Wide character versions are
-// also provided after each ascii version. There are three regular expressions
-// here. The first covers RFC 3966 format, where the extension is added using
-// ";ext=". The second more generic one starts with optional white space and
-// ends with an optional full stop (.), followed by zero or more spaces/tabs and
-// then the numbers themselves. The third one covers the special case of
-// American numbers where the extension is written with a hash at the end, such
-// as "- 503#".
-// Note that the only capturing groups should be around the digits that you want
-// to capture as part of the extension, or else parsing will fail!
-scoped_ptr<const string> known_extn_patterns;
-// Regexp of all known extension prefixes used by different regions followed
-// by 1 or more valid digits, for use when parsing.
-scoped_ptr<const reg_exp::RegularExpression> extn_pattern;
-
-// We append optionally the extension pattern to the end here, as a valid phone
-// number may have an extension prefix appended, followed by 1 or more digits.
-scoped_ptr<const reg_exp::RegularExpression> valid_phone_number_pattern;
-
-// We use this pattern to check if the phone number has at least three letters
-// in it - if so, then we treat it as a number where some phone-number digits
-// are represented by letters.
-scoped_ptr<const reg_exp::RegularExpression> valid_alpha_phone_pattern;
-
-scoped_ptr<const reg_exp::RegularExpression> first_group_capturing_pattern;
-
-scoped_ptr<const reg_exp::RegularExpression> carrier_code_pattern;
-
-void TransformRegularExpressionToRE2Syntax(string* regex) {
- DCHECK(regex);
- StripString(regex, "$", '\\');
-}
-
-// Returns a pointer to the description inside the metadata of the appropriate
-// type.
-const PhoneNumberDesc* GetNumberDescByType(
- const PhoneMetadata& metadata,
- PhoneNumberUtil::PhoneNumberType type) {
- switch (type) {
- case PhoneNumberUtil::PREMIUM_RATE:
- return &metadata.premium_rate();
- case PhoneNumberUtil::TOLL_FREE:
- return &metadata.toll_free();
- case PhoneNumberUtil::MOBILE:
- return &metadata.mobile();
- case PhoneNumberUtil::FIXED_LINE:
- case PhoneNumberUtil::FIXED_LINE_OR_MOBILE:
- return &metadata.fixed_line();
- case PhoneNumberUtil::SHARED_COST:
- return &metadata.shared_cost();
- case PhoneNumberUtil::VOIP:
- return &metadata.voip();
- case PhoneNumberUtil::PERSONAL_NUMBER:
- return &metadata.personal_number();
- case PhoneNumberUtil::PAGER:
- return &metadata.pager();
- case PhoneNumberUtil::UAN:
- return &metadata.uan();
- default:
- return &metadata.general_desc();
- }
-}
-
-// A helper function that is used by Format and FormatByPattern.
-void FormatNumberByFormat(int country_calling_code,
- PhoneNumberUtil::PhoneNumberFormat number_format,
- const string& formatted_national_number,
- const string& formatted_extension,
- string* formatted_number) {
- switch (number_format) {
- case PhoneNumberUtil::E164:
- formatted_number->assign(StrCat(kPlusSign,
- SimpleItoa(country_calling_code),
- formatted_national_number,
- formatted_extension));
- return;
- case PhoneNumberUtil::INTERNATIONAL:
- formatted_number->assign(StrCat(kPlusSign,
- SimpleItoa(country_calling_code),
- " ",
- formatted_national_number,
- formatted_extension));
- return;
- case PhoneNumberUtil::RFC3966:
- formatted_number->assign(StrCat(kPlusSign,
- SimpleItoa(country_calling_code),
- "-",
- formatted_national_number,
- formatted_extension));
- return;
- case PhoneNumberUtil::NATIONAL:
- default:
- formatted_number->assign(StrCat(formatted_national_number,
- formatted_extension));
- }
-}
-
-// The number_for_leading_digits_match is a separate parameter, because for
-// alpha numbers we want to pass in the numeric version to select the right
-// formatting rule, but then we actually apply the formatting pattern to the
-// national_number (which in this case has alpha characters in it).
-//
-// Note that carrier_code is optional - if an empty string, no carrier code
-// replacement will take place.
-void FormatAccordingToFormatsWithCarrier(
- const string& number_for_leading_digits_match,
- const RepeatedPtrField<NumberFormat>& available_formats,
- PhoneNumberUtil::PhoneNumberFormat number_format,
- const string& national_number,
- const string& carrier_code,
- string* formatted_number) {
- DCHECK(formatted_number);
- for (RepeatedPtrField<NumberFormat>::const_iterator
- it = available_formats.begin(); it != available_formats.end(); ++it) {
- int size = it->leading_digits_pattern_size();
- if (size > 0) {
- scoped_ptr<reg_exp::RegularExpressionInput>
- number_copy(reg_exp::CreateRegularExpressionInput(
- number_for_leading_digits_match.c_str()));
- // We always use the last leading_digits_pattern, as it is the most
- // detailed.
- if (!number_copy->ConsumeRegExp(it->leading_digits_pattern(size - 1),
- true, NULL, NULL)) {
- continue;
- }
- }
- scoped_ptr<reg_exp::RegularExpression> pattern_to_match(
- reg_exp::CreateRegularExpression(it->pattern().c_str()));
- if (pattern_to_match->Match(national_number.c_str(), true, NULL)) {
- string formatting_pattern(it->format());
- if (number_format == PhoneNumberUtil::NATIONAL &&
- carrier_code.length() > 0 &&
- it->domestic_carrier_code_formatting_rule().length() > 0) {
- // Replace the $CC in the formatting rule with the desired carrier code.
- string carrier_code_formatting_rule =
- it->domestic_carrier_code_formatting_rule();
- carrier_code_pattern->Replace(&carrier_code_formatting_rule,
- false, carrier_code.c_str());
- TransformRegularExpressionToRE2Syntax(&carrier_code_formatting_rule);
- first_group_capturing_pattern->Replace(&formatting_pattern,
- false,
- carrier_code_formatting_rule.c_str());
- } else {
- // Use the national prefix formatting rule instead.
- string national_prefix_formatting_rule =
- it->national_prefix_formatting_rule();
- if (number_format == PhoneNumberUtil::NATIONAL &&
- national_prefix_formatting_rule.length() > 0) {
- // Apply the national_prefix_formatting_rule as the formatting_pattern
- // contains only information on how the national significant number
- // should be formatted at this point.
- TransformRegularExpressionToRE2Syntax(
- &national_prefix_formatting_rule);
- first_group_capturing_pattern->Replace(&formatting_pattern,
- false,
- national_prefix_formatting_rule.c_str());
- }
- }
- TransformRegularExpressionToRE2Syntax(&formatting_pattern);
- formatted_number->assign(national_number);
- pattern_to_match->Replace(formatted_number, true,
- formatting_pattern.c_str());
- return;
- }
- }
- // If no pattern above is matched, we format the number as a whole.
- formatted_number->assign(national_number);
-}
-
-// Simple wrapper of FormatAccordingToFormatsWithCarrier for the common case of
-// no carrier code.
-void FormatAccordingToFormats(
- const string& number_for_leading_digits_match,
- const RepeatedPtrField<NumberFormat>& available_formats,
- PhoneNumberUtil::PhoneNumberFormat number_format,
- const string& national_number,
- string* formatted_number) {
- DCHECK(formatted_number);
- FormatAccordingToFormatsWithCarrier(number_for_leading_digits_match,
- available_formats, number_format,
- national_number, "", formatted_number);
-}
-
-// Returns true when one national number is the suffix of the other or both are
-// the same.
-bool IsNationalNumberSuffixOfTheOther(const PhoneNumber& first_number,
- const PhoneNumber& second_number) {
- const string& first_number_national_number =
- SimpleItoa(first_number.national_number());
- const string& second_number_national_number =
- SimpleItoa(second_number.national_number());
- // Note that HasSuffixString returns true if the numbers are equal.
- return HasSuffixString(first_number_national_number,
- second_number_national_number) ||
- HasSuffixString(second_number_national_number,
- first_number_national_number);
-}
-
-bool IsNumberMatchingDesc(const string& national_number,
- const PhoneNumberDesc& number_desc) {
- scoped_ptr<const reg_exp::RegularExpression>
- possible_pattern(reg_exp::CreateRegularExpression(
- number_desc.possible_number_pattern().c_str()));
- scoped_ptr<const reg_exp::RegularExpression>
- national_pattern(reg_exp::CreateRegularExpression(
- number_desc.national_number_pattern().c_str()));
- return (possible_pattern->Match(national_number.c_str(), true, NULL) &&
- national_pattern->Match(national_number.c_str(), true, NULL));
-}
-
-PhoneNumberUtil::PhoneNumberType GetNumberTypeHelper(
- const string& national_number, const PhoneMetadata& metadata) {
- const PhoneNumberDesc& general_desc = metadata.general_desc();
- if (!general_desc.has_national_number_pattern() ||
- !IsNumberMatchingDesc(national_number, general_desc)) {
- logger->Debug("Number type unknown - "
- "doesn't match general national number pattern.");
- return PhoneNumberUtil::UNKNOWN;
- }
- if (IsNumberMatchingDesc(national_number, metadata.premium_rate())) {
- logger->Debug("Number is a premium number.");
- return PhoneNumberUtil::PREMIUM_RATE;
- }
- if (IsNumberMatchingDesc(national_number, metadata.toll_free())) {
- logger->Debug("Number is a toll-free number.");
- return PhoneNumberUtil::TOLL_FREE;
- }
- if (IsNumberMatchingDesc(national_number, metadata.shared_cost())) {
- logger->Debug("Number is a shared cost number.");
- return PhoneNumberUtil::SHARED_COST;
- }
- if (IsNumberMatchingDesc(national_number, metadata.voip())) {
- logger->Debug("Number is a VOIP (Voice over IP) number.");
- return PhoneNumberUtil::VOIP;
- }
- if (IsNumberMatchingDesc(national_number, metadata.personal_number())) {
- logger->Debug("Number is a personal number.");
- return PhoneNumberUtil::PERSONAL_NUMBER;
- }
- if (IsNumberMatchingDesc(national_number, metadata.pager())) {
- logger->Debug("Number is a pager number.");
- return PhoneNumberUtil::PAGER;
- }
- if (IsNumberMatchingDesc(national_number, metadata.uan())) {
- logger->Debug("Number is a UAN.");
- return PhoneNumberUtil::UAN;
- }
-
- bool is_fixed_line =
- IsNumberMatchingDesc(national_number, metadata.fixed_line());
- if (is_fixed_line) {
- if (metadata.same_mobile_and_fixed_line_pattern()) {
- logger->Debug("Fixed-line and mobile patterns equal, "
- "number is fixed-line or mobile");
- return PhoneNumberUtil::FIXED_LINE_OR_MOBILE;
- } else if (IsNumberMatchingDesc(national_number, metadata.mobile())) {
- logger->Debug("Fixed-line and mobile patterns differ, but number is "
- "still fixed-line or mobile");
- return PhoneNumberUtil::FIXED_LINE_OR_MOBILE;
- }
- logger->Debug("Number is a fixed line number.");
- return PhoneNumberUtil::FIXED_LINE;
- }
- // Otherwise, test to see if the number is mobile. Only do this if certain
- // that the patterns for mobile and fixed line aren't the same.
- if (!metadata.same_mobile_and_fixed_line_pattern() &&
- IsNumberMatchingDesc(national_number, metadata.mobile())) {
- logger->Debug("Number is a mobile number.");
- return PhoneNumberUtil::MOBILE;
- }
- logger->Debug("Number type unknown - doesn't match any specific number type"
- " pattern.");
- return PhoneNumberUtil::UNKNOWN;
-}
-
-int DecodeUTF8Char(const char* in, char32* out) {
- Rune r;
- int len = chartorune(&r, in);
- *out = r;
-
- return len;
-}
-
-char32 ToUnicodeCodepoint(const char* unicode_char) {
- char32 codepoint;
- DecodeUTF8Char(unicode_char, &codepoint);
-
- return codepoint;
-}
-
-// Initialisation helper function used to populate the regular expressions in a
-// defined order.
-void CreateRegularExpressions() {
- unique_international_prefix.reset(
- reg_exp::CreateRegularExpression("[\\d]+(?:[~⁓∼~][\\d]+)?"));
- first_group_capturing_pattern.reset(
- reg_exp::CreateRegularExpression("(\\$1)"));
- carrier_code_pattern.reset(
- reg_exp::CreateRegularExpression("\\$CC"));
- capturing_digit_pattern.reset(
- reg_exp::CreateRegularExpression(
- StrCat("([", kValidDigits, "])").c_str()));
- capturing_ascii_digits_pattern.reset(
- reg_exp::CreateRegularExpression("(\\d+)"));
- valid_start_char.reset(new string(StrCat(
- "[", kPlusChars, kValidDigits, "]")));
- valid_start_char_pattern.reset(
- reg_exp::CreateRegularExpression(valid_start_char->c_str()));
- capture_up_to_second_number_start_pattern.reset(
- reg_exp::CreateRegularExpression(kCaptureUpToSecondNumberStart));
- unwanted_end_char_pattern.reset(
- reg_exp::CreateRegularExpression(kUnwantedEndChar));
- valid_phone_number.reset(new string(
- StrCat("[", kPlusChars, "]*(?:[", kValidPunctuation, "]*[", kValidDigits,
- "]){3,}[", kValidAlpha, kValidPunctuation, kValidDigits, "]*")));
- // Canonical-equivalence doesn't seem to be an option with RE2, so we allow
- // two options for representing the ó - the character itself, and one in the
- // unicode decomposed form with the combining acute accent. Note that there
- // are currently three capturing groups for the extension itself - if this
- // number is changed, MaybeStripExtension needs to be updated.
- const string capturing_extn_digits = StrCat("([", kValidDigits, "]{1,7})");
- known_extn_patterns.reset(new string(
- StrCat(kRfc3966ExtnPrefix, capturing_extn_digits, "|"
- "[  \\t,]*(?:ext(?:ensi(?:ó?|ó))?n?|extn?|[,xx##~~]|"
- "int|int|anexo)"
- "[:\\..]?[  \\t,-]*", capturing_extn_digits, "#?|"
- "[- ]+([", kValidDigits, "]{1,5})#")));
- extn_pattern.reset(reg_exp::CreateRegularExpression(
- StrCat("(?i)(?:", *known_extn_patterns, ")$").c_str()));
- valid_phone_number_pattern.reset(reg_exp::CreateRegularExpression(
- StrCat("(?i)", *valid_phone_number, "(?:", *known_extn_patterns,
- ")?").c_str()));
- valid_alpha_phone_pattern.reset(reg_exp::CreateRegularExpression(
- StrCat("(?i)(?:.*?[", kValidAlpha, "]){3}").c_str()));
- plus_chars_pattern.reset(reg_exp::CreateRegularExpression(
- StrCat("[", kPlusChars, "]+").c_str()));
-}
-
-void InitializeStaticMapsAndSets() {
- // Create global objects.
- all_plus_number_grouping_symbols.reset(new map<char32, char>);
- alpha_mappings.reset(new map<char32, char>);
- all_normalization_mappings.reset(new map<char32, char>);
-
- // Punctuation that we wish to respect in alpha numbers, as they show number
- // groupings are mapped here.
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("-"), '-'));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("-"), '-'));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("‐"), '-'));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("‑"), '-'));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("‒"), '-'));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("–"), '-'));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("—"), '-'));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("―"), '-'));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("−"), '-'));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("/"), '/'));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("/"), '/'));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint(" "), ' '));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint(" "), ' '));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("⁠"), ' '));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("."), '.'));
- all_plus_number_grouping_symbols->insert(
- make_pair(ToUnicodeCodepoint("."), '.'));
- // Only the upper-case letters are added here - the lower-case versions are
- // added programmatically.
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("A"), '2'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("B"), '2'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("C"), '2'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("D"), '3'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("E"), '3'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("F"), '3'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("G"), '4'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("H"), '4'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("I"), '4'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("J"), '5'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("K"), '5'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("L"), '5'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("M"), '6'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("N"), '6'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("O"), '6'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("P"), '7'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("Q"), '7'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("R"), '7'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("S"), '7'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("T"), '8'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("U"), '8'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("V"), '8'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("W"), '9'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("X"), '9'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("Y"), '9'));
- alpha_mappings->insert(make_pair(ToUnicodeCodepoint("Z"), '9'));
- map<char32, char> lower_case_mappings;
- map<char32, char> alpha_letters;
- for (map<char32, char>::const_iterator it = alpha_mappings->begin();
- it != alpha_mappings->end();
- ++it) {
- // Convert all the upper-case ASCII letters to lower-case.
- if (it->first < 128) {
- char letter_as_upper = static_cast<char>(it->first);
- char32 letter_as_lower = static_cast<char32>(tolower(letter_as_upper));
- lower_case_mappings.insert(make_pair(letter_as_lower, it->second));
- // Add the letters in both variants to the alpha_letters map. This just
- // pairs each letter with its upper-case representation so that it can be
- // retained when normalising alpha numbers.
- alpha_letters.insert(make_pair(letter_as_lower, letter_as_upper));
- alpha_letters.insert(make_pair(it->first, letter_as_upper));
- }
- }
- // In the Java version we don't insert the lower-case mappings in the map,
- // because we convert to upper case on the fly. Doing this here would involve
- // pulling in all of ICU, which we don't want to do if we don't have to.
- alpha_mappings->insert(lower_case_mappings.begin(),
- lower_case_mappings.end());
- all_normalization_mappings->insert(alpha_mappings->begin(),
- alpha_mappings->end());
- all_plus_number_grouping_symbols->insert(alpha_letters.begin(),
- alpha_letters.end());
- // Add the ASCII digits so that they don't get deleted by NormalizeHelper().
- for (char c = '0'; c <= '9'; ++c) {
- all_normalization_mappings->insert(make_pair(c, c));
- all_plus_number_grouping_symbols->insert(make_pair(c, c));
- }
- CreateRegularExpressions();
-}
-
-// Normalizes a string of characters representing a phone number by replacing
-// all characters found in the accompanying map with the values therein, and
-// stripping all other characters if remove_non_matches is true.
-// Parameters:
-// number - a pointer to a string of characters representing a phone number to
-// be normalized.
-// normalization_replacements - a mapping of characters to what they should be
-// replaced by in the normalized version of the phone number
-// remove_non_matches - indicates whether characters that are not able to be
-// replaced should be stripped from the number. If this is false, they will be
-// left unchanged in the number.
-void NormalizeHelper(const map<char32, char>& normalization_replacements,
- bool remove_non_matches,
- string* number) {
- DCHECK(number);
- UnicodeText number_as_unicode;
- number_as_unicode.PointToUTF8(number->data(), number->size());
- string normalized_number;
- for (UnicodeText::const_iterator it = number_as_unicode.begin();
- it != number_as_unicode.end();
- ++it) {
- map<char32, char>::const_iterator found_glyph_pair =
- normalization_replacements.find(*it);
- if (found_glyph_pair != normalization_replacements.end()) {
- normalized_number.push_back(found_glyph_pair->second);
- } else if (!remove_non_matches) {
- normalized_number.append(it.utf8_data());
- }
- // If neither of the above are true, we remove this character.
- }
- number->assign(normalized_number);
-}
-
-// Strips the IDD from the start of the number if present. Helper function used
-// by MaybeStripInternationalPrefixAndNormalize.
-bool ParsePrefixAsIdd(const reg_exp::RegularExpression* idd_pattern,
- string* number) {
- DCHECK(number);
- scoped_ptr<reg_exp::RegularExpressionInput> number_copy(
- reg_exp::CreateRegularExpressionInput(number->c_str()));
- // First attempt to strip the idd_pattern at the start, if present. We make a
- // copy so that we can revert to the original string if necessary.
- if (idd_pattern->Consume(number_copy.get(), true, NULL, NULL)) {
- // Only strip this if the first digit after the match is not a 0, since
- // country calling codes cannot begin with 0.
- string extracted_digit;
- if (capturing_digit_pattern->Match(number_copy->ToString().c_str(), false,
- &extracted_digit)) {
- PhoneNumberUtil::NormalizeDigitsOnly(&extracted_digit);
- if (extracted_digit == "0") {
- return false;
- }
- }
- number->assign(number_copy->ToString());
- return true;
- }
- return false;
-}
-
-PhoneNumberUtil::ValidationResult TestNumberLengthAgainstPattern(
- const reg_exp::RegularExpression* number_pattern, const string& number) {
- string extracted_number;
- if (number_pattern->Match(number.c_str(), true, &extracted_number)) {
- return PhoneNumberUtil::IS_POSSIBLE;
- }
- if (number_pattern->Match(number.c_str(), false, &extracted_number)) {
- return PhoneNumberUtil::TOO_LONG;
- } else {
- return PhoneNumberUtil::TOO_SHORT;
- }
-}
-
-} // namespace
-
-// Fetch the metadata which are actually already available in the address space
-// (embedded).
-class DefaultMetadataProvider : public PhoneNumberUtil::MetadataProvider {
- public:
- virtual ~DefaultMetadataProvider() {}
-
- virtual pair<const void*, unsigned> operator()() {
- return make_pair(metadata_get(), metadata_size());
- }
-};
-
-bool PhoneNumberUtil::LoadMetadata(PhoneMetadataCollection* metadata,
- MetadataProvider& provider) {
-
- pair<const void*, unsigned> p = provider();
- const void* metadata_start = p.first;
- unsigned size = p.second;
-
- if (!metadata->ParseFromArray(metadata_start, size)) {
- cerr << "Could not parse binary data." << endl;
- return false;
- }
- return true;
-}
-
-void PhoneNumberUtil::SetLoggerAdapter(LoggerAdapter* logger_adapter) {
- logger.reset(logger_adapter);
-}
-
-// Private constructor. Also takes care of initialisation.
-PhoneNumberUtil::PhoneNumberUtil(MetadataProvider* provider)
- : country_calling_code_to_region_code_map_(new vector<IntRegionsPair>()),
- nanpa_regions_(new set<string>()),
- region_to_metadata_map_(new map<string, PhoneMetadata>()) {
-
- if (logger == NULL) {
- SetLoggerAdapter(new DefaultLogger());
- }
- PhoneMetadataCollection metadata_collection;
- DefaultMetadataProvider default_provider;
-
- if (!LoadMetadata(&metadata_collection, provider ? *provider
- : default_provider)) {
- logger->Fatal("Could not load metadata");
- return;
- }
- // Storing data in a temporary map to make it easier to find other regions
- // that share a country calling code when inserting data.
- map<int, list<string>* > country_calling_code_to_region_map;
- for (RepeatedPtrField<PhoneMetadata>::const_iterator it =
- metadata_collection.metadata().begin();
- it != metadata_collection.metadata().end();
- ++it) {
- const PhoneMetadata& phone_metadata = *it;
- const string& region_code = phone_metadata.id();
- region_to_metadata_map_->insert(make_pair(region_code, *it));
- int country_calling_code = it->country_code();
- map<int, list<string>*>::iterator calling_code_in_map =
- country_calling_code_to_region_map.find(country_calling_code);
- if (calling_code_in_map != country_calling_code_to_region_map.end()) {
- if (it->main_country_for_code()) {
- calling_code_in_map->second->push_front(region_code);
- } else {
- calling_code_in_map->second->push_back(region_code);
- }
- } else {
- // For most country calling codes, there will be only one region code.
- list<string>* list_with_region_code = new list<string>();
- list_with_region_code->push_back(region_code);
- country_calling_code_to_region_map.insert(
- make_pair(country_calling_code, list_with_region_code));
- }
- if (country_calling_code == kNanpaCountryCode) {
- nanpa_regions_->insert(region_code);
- }
- }
-
- country_calling_code_to_region_code_map_->insert(
- country_calling_code_to_region_code_map_->begin(),
- country_calling_code_to_region_map.begin(),
- country_calling_code_to_region_map.end());
- // Sort all the pairs in ascending order according to country calling code.
- sort(country_calling_code_to_region_code_map_->begin(),
- country_calling_code_to_region_code_map_->end(),
- CompareFirst());
-
- InitializeStaticMapsAndSets();
-}
-
-PhoneNumberUtil::~PhoneNumberUtil() {
- for (vector<IntRegionsPair>::const_iterator it =
- country_calling_code_to_region_code_map_->begin();
- it != country_calling_code_to_region_code_map_->end();
- ++it) {
- delete it->second;
- }
-}
-
-// Public wrapper function to get a PhoneNumberUtil instance with the default
-// metadata file.
-// static
-PhoneNumberUtil* PhoneNumberUtil::GetInstance() {
- return Singleton<PhoneNumberUtil>::get();
-}
-
-void PhoneNumberUtil::GetSupportedRegions(set<string>* regions) const {
- DCHECK(regions);
- for (map<string, PhoneMetadata>::const_iterator it =
- region_to_metadata_map_->begin(); it != region_to_metadata_map_->end();
- ++it) {
- regions->insert(it->first);
- }
-}
-
-void PhoneNumberUtil::GetNddPrefixForRegion(const string& region_code,
- bool strip_non_digits,
- string* national_prefix) const {
- DCHECK(national_prefix);
- if (!IsValidRegionCode(region_code)) {
- logger->Error("Invalid region code provided.");
- return;
- }
- const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
- national_prefix->assign(metadata->national_prefix());
- if (strip_non_digits) {
- // Note: if any other non-numeric symbols are ever used in national
- // prefixes, these would have to be removed here as well.
- strrmm(national_prefix, "~");
- }
-}
-
-bool PhoneNumberUtil::IsValidRegionCode(const string& region_code) const {
- return (region_to_metadata_map_->find(region_code) !=
- region_to_metadata_map_->end());
-}
-
-bool PhoneNumberUtil::HasValidRegionCode(const string& region_code,
- int country_code,
- const string& number) const {
- if (!IsValidRegionCode(region_code)) {
- logger->Info(string("Number ") + number +
- " has invalid or missing country code (" + country_code + ")");
- return false;
- }
- return true;
-}
-
-// Returns a pointer to the phone metadata for the appropriate region.
-const PhoneMetadata* PhoneNumberUtil::GetMetadataForRegion(
- const string& region_code) const {
- map<string, PhoneMetadata>::const_iterator it =
- region_to_metadata_map_->find(region_code);
- if (it != region_to_metadata_map_->end()) {
- return &it->second;
- }
- return NULL;
-}
-
-void PhoneNumberUtil::Format(const PhoneNumber& number,
- PhoneNumberFormat number_format,
- string* formatted_number) const {
- DCHECK(formatted_number);
- int country_calling_code = number.country_code();
- string national_significant_number;
- GetNationalSignificantNumber(number, &national_significant_number);
- if (number_format == E164) {
- // Early exit for E164 case since no formatting of the national number needs
- // to be applied. Extensions are not formatted.
- FormatNumberByFormat(country_calling_code, E164,
- national_significant_number, "", formatted_number);
- return;
- }
- // Note here that all NANPA formatting rules are contained by US, so we use
- // that to format NANPA numbers. The same applies to Russian Fed regions -
- // rules are contained by Russia. French Indian Ocean country rules are
- // contained by Réunion.
- string region_code;
- GetRegionCodeForCountryCode(country_calling_code, &region_code);
- if (!HasValidRegionCode(region_code, country_calling_code,
- national_significant_number)) {
- formatted_number->assign(national_significant_number);
- return;
- }
- string formatted_extension;
- MaybeGetFormattedExtension(number, region_code, number_format,
- &formatted_extension);
- string formatted_national_number;
- FormatNationalNumber(national_significant_number, region_code, number_format,
- &formatted_national_number);
- FormatNumberByFormat(country_calling_code, number_format,
- formatted_national_number,
- formatted_extension, formatted_number);
-}
-
-void PhoneNumberUtil::FormatByPattern(
- const PhoneNumber& number,
- PhoneNumberFormat number_format,
- const RepeatedPtrField<NumberFormat>& user_defined_formats,
- string* formatted_number) const {
- static scoped_ptr<const reg_exp::RegularExpression>
- national_prefix_pattern(reg_exp::CreateRegularExpression("\\$NP"));
- static scoped_ptr<const reg_exp::RegularExpression>
- first_group_pattern(reg_exp::CreateRegularExpression("\\$FG"));
- DCHECK(formatted_number);
- int country_calling_code = number.country_code();
- // Note GetRegionCodeForCountryCode() is used because formatting information
- // for regions which share a country calling code is contained by only one
- // region for performance reasons. For example, for NANPA regions it will be
- // contained in the metadata for US.
- string region_code;
- GetRegionCodeForCountryCode(country_calling_code, &region_code);
- string national_significant_number;
- GetNationalSignificantNumber(number, &national_significant_number);
- if (!HasValidRegionCode(region_code, country_calling_code,
- national_significant_number)) {
- formatted_number->assign(national_significant_number);
- return;
- }
- RepeatedPtrField<NumberFormat> user_defined_formats_copy;
- for (RepeatedPtrField<NumberFormat>::const_iterator it =
- user_defined_formats.begin();
- it != user_defined_formats.end();
- ++it) {
- string national_prefix_formatting_rule(
- it->national_prefix_formatting_rule());
- if (!national_prefix_formatting_rule.empty()) {
- const string& national_prefix =
- GetMetadataForRegion(region_code)->national_prefix();
- NumberFormat* num_format_copy = user_defined_formats_copy.Add();
- num_format_copy->MergeFrom(*it);
- if (!national_prefix.empty()) {
- // Replace $NP with national prefix and $FG with the first group ($1).
- national_prefix_pattern->Replace(&national_prefix_formatting_rule,
- false,
- national_prefix.c_str());
- first_group_pattern->Replace(&national_prefix_formatting_rule,
- false,
- "$1");
- num_format_copy->set_national_prefix_formatting_rule(
- national_prefix_formatting_rule);
- } else {
- // We don't want to have a rule for how to format the national prefix if
- // there isn't one.
- num_format_copy->clear_national_prefix_formatting_rule();
- }
- } else {
- user_defined_formats_copy.Add()->MergeFrom(*it);
- }
- }
-
- string formatted_number_without_extension;
- FormatAccordingToFormats(national_significant_number,
- user_defined_formats_copy,
- number_format, national_significant_number,
- &formatted_number_without_extension);
- string formatted_extension;
- MaybeGetFormattedExtension(number, region_code, NATIONAL,
- &formatted_extension);
- FormatNumberByFormat(country_calling_code, number_format,
- formatted_number_without_extension, formatted_extension,
- formatted_number);
-}
-
-void PhoneNumberUtil::FormatNationalNumberWithCarrierCode(
- const PhoneNumber& number,
- const string& carrier_code,
- string* formatted_number) const {
- int country_calling_code = number.country_code();
- string national_significant_number;
- GetNationalSignificantNumber(number, &national_significant_number);
- // Note GetRegionCodeForCountryCode() is used because formatting information
- // for regions which share a country calling code is contained by only one
- // region for performance reasons. For example, for NANPA regions it will be
- // contained in the metadata for US.
- string region_code;
- GetRegionCodeForCountryCode(country_calling_code, &region_code);
- if (!HasValidRegionCode(region_code, country_calling_code,
- national_significant_number)) {
- formatted_number->assign(national_significant_number);
- }
- string formatted_extension;
- MaybeGetFormattedExtension(number, region_code, NATIONAL,
- &formatted_extension);
- string formatted_national_number;
- FormatNationalNumberWithCarrier(national_significant_number, region_code,
- NATIONAL, carrier_code,
- &formatted_national_number);
- FormatNumberByFormat(country_calling_code, NATIONAL,
- formatted_national_number, formatted_extension,
- formatted_number);
-}
-
-void PhoneNumberUtil::FormatNationalNumberWithPreferredCarrierCode(
- const PhoneNumber& number,
- const string& fallback_carrier_code,
- string* formatted_number) const {
- FormatNationalNumberWithCarrierCode(
- number,
- number.has_preferred_domestic_carrier_code()
- ? number.preferred_domestic_carrier_code()
- : fallback_carrier_code,
- formatted_number);
-}
-
-void PhoneNumberUtil::FormatOutOfCountryCallingNumber(
- const PhoneNumber& number,
- const string& calling_from,
- string* formatted_number) const {
- DCHECK(formatted_number);
- if (!IsValidRegionCode(calling_from)) {
- logger->Info("Trying to format number from invalid region. International"
- " formatting applied.");
- Format(number, INTERNATIONAL, formatted_number);
- return;
- }
- int country_code = number.country_code();
- string region_code;
- GetRegionCodeForCountryCode(country_code, &region_code);
- string national_significant_number;
- GetNationalSignificantNumber(number, &national_significant_number);
- if (!HasValidRegionCode(region_code, country_code,
- national_significant_number)) {
- formatted_number->assign(national_significant_number);
- return;
- }
- if (country_code == kNanpaCountryCode) {
- if (IsNANPACountry(calling_from)) {
- // For NANPA regions, return the national format for these regions but
- // prefix it with the country calling code.
- string national_number;
- Format(number, NATIONAL, &national_number);
- formatted_number->assign(StrCat(country_code, " ", national_number));
- return;
- }
- } else if (country_code == GetCountryCodeForRegion(calling_from)) {
- // If neither region is a NANPA region, then we check to see if the
- // country calling code of the number and the country calling code of the
- // region we are calling from are the same.
- // For regions that share a country calling code, the country calling code
- // need not be dialled. This also applies when dialling within a region, so
- // this if clause covers both these cases.
- // Technically this is the case for dialling from la Réunion to other
- // overseas departments of France (French Guiana, Martinique, Guadeloupe),
- // but not vice versa - so we don't cover this edge case for now and for
- // those cases return the version including country calling code.
- // Details here:
- // http://www.petitfute.com/voyage/225-info-pratiques-reunion
- Format(number, NATIONAL, formatted_number);
- return;
- }
- string formatted_national_number;
- FormatNationalNumber(national_significant_number, region_code, INTERNATIONAL,
- &formatted_national_number);
- const PhoneMetadata* metadata = GetMetadataForRegion(calling_from);
- const string& international_prefix = metadata->international_prefix();
- string formatted_extension;
- MaybeGetFormattedExtension(number, region_code, INTERNATIONAL,
- &formatted_extension);
- // For regions that have multiple international prefixes, the international
- // format of the number is returned, unless there is a preferred international
- // prefix.
- string international_prefix_for_formatting(
- unique_international_prefix->Match(international_prefix.c_str(),
- true, NULL)
- ? international_prefix
- : metadata->preferred_international_prefix());
- if (!international_prefix_for_formatting.empty()) {
- formatted_number->assign(
- StrCat(international_prefix_for_formatting, " ", country_code, " ",
- formatted_national_number, formatted_extension));
- } else {
- FormatNumberByFormat(country_code, INTERNATIONAL, formatted_national_number,
- formatted_extension, formatted_number);
- }
-}
-
-void PhoneNumberUtil::FormatInOriginalFormat(const PhoneNumber& number,
- const string& region_calling_from,
- string* formatted_number) const {
- DCHECK(formatted_number);
-
- if (!number.has_country_code_source()) {
- Format(number, NATIONAL, formatted_number);
- return;
- }
- switch (number.country_code_source()) {
- case PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN:
- Format(number, INTERNATIONAL, formatted_number);
- return;
- case PhoneNumber::FROM_NUMBER_WITH_IDD:
- FormatOutOfCountryCallingNumber(number, region_calling_from,
- formatted_number);
- return;
- case PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN:
- Format(number, INTERNATIONAL, formatted_number);
- formatted_number->erase(formatted_number->begin());
- return;
- case PhoneNumber::FROM_DEFAULT_COUNTRY:
- default:
- Format(number, NATIONAL, formatted_number);
- }
-}
-
-void PhoneNumberUtil::FormatOutOfCountryKeepingAlphaChars(
- const PhoneNumber& number,
- const string& calling_from,
- string* formatted_number) const {
- // If there is no raw input, then we can't keep alpha characters because there
- // aren't any. In this case, we return FormatOutOfCountryCallingNumber.
- if (number.raw_input().empty()) {
- FormatOutOfCountryCallingNumber(number, calling_from, formatted_number);
- return;
- }
- string region_code;
- GetRegionCodeForCountryCode(number.country_code(), &region_code);
- if (!HasValidRegionCode(region_code, number.country_code(),
- number.raw_input())) {
- formatted_number->assign(number.raw_input());
- return;
- }
- // Strip any prefix such as country calling code, IDD, that was present. We do
- // this by comparing the number in raw_input with the parsed number.
- string raw_input_copy(number.raw_input());
- // Normalize punctuation. We retain number grouping symbols such as " " only.
- NormalizeHelper(*all_plus_number_grouping_symbols, true, &raw_input_copy);
- // Now we trim everything before the first three digits in the parsed number.
- // We choose three because all valid alpha numbers have 3 digits at the start
- // - if it does not, then we don't trim anything at all. Similarly, if the
- // national number was less than three digits, we don't trim anything at all.
- string national_number;
- GetNationalSignificantNumber(number, &national_number);
- if (national_number.length() > 3) {
- size_t first_national_number_digit =
- raw_input_copy.find(national_number.substr(0, 3));
- if (first_national_number_digit != string::npos) {
- raw_input_copy = raw_input_copy.substr(first_national_number_digit);
- }
- }
- const PhoneMetadata* metadata = GetMetadataForRegion(calling_from);
- if (number.country_code() == kNanpaCountryCode) {
- if (IsNANPACountry(calling_from)) {
- formatted_number->assign(StrCat(number.country_code(), " ",
- raw_input_copy));
- return;
- }
- } else if (number.country_code() == GetCountryCodeForRegion(calling_from)) {
- // Here we copy the formatting rules so we can modify the pattern we expect
- // to match against.
- RepeatedPtrField<NumberFormat> available_formats = metadata->number_format();
- for (RepeatedPtrField<NumberFormat>::iterator
- it = available_formats.begin(); it != available_formats.end(); ++it) {
- // The first group is the first group of digits that the user determined.
- it->set_pattern("(\\d+)(.*)");
- // Here we just concatenate them back together after the national prefix
- // has been fixed.
- it->set_format("$1$2");
- }
- // Now we format using these patterns instead of the default pattern, but
- // with the national prefix prefixed if necessary, by choosing the format
- // rule based on the leading digits present in the unformatted national
- // number.
- // This will not work in the cases where the pattern (and not the
- // leading digits) decide whether a national prefix needs to be used, since
- // we have overridden the pattern to match anything, but that is not the
- // case in the metadata to date.
- FormatAccordingToFormats(national_number, available_formats,
- NATIONAL, raw_input_copy, formatted_number);
- return;
- }
-
- const string& international_prefix = metadata->international_prefix();
- // For regions that have multiple international prefixes, the international
- // format of the number is returned, unless there is a preferred international
- // prefix.
- string international_prefix_for_formatting(
- unique_international_prefix->Match(international_prefix.c_str(),
- true, NULL)
- ? international_prefix
- : metadata->preferred_international_prefix());
- if (!international_prefix_for_formatting.empty()) {
- formatted_number->assign(
- StrCat(international_prefix_for_formatting, " ", number.country_code(),
- " ", raw_input_copy));
- } else {
- FormatNumberByFormat(number.country_code(), INTERNATIONAL, raw_input_copy,
- "", formatted_number);
- }
-}
-
-void PhoneNumberUtil::FormatNationalNumber(
- const string& number,
- const string& region_code,
- PhoneNumberFormat number_format,
- string* formatted_number) const {
- DCHECK(formatted_number);
- FormatNationalNumberWithCarrier(number, region_code, number_format, "",
- formatted_number);
-}
-
-// Note in some regions, the national number can be written in two completely
-// different ways depending on whether it forms part of the NATIONAL format or
-// INTERNATIONAL format. The number_format parameter here is used to specify
-// which format to use for those cases. If a carrier_code is specified, this
-// will be inserted into the formatted string to replace $CC.
-void PhoneNumberUtil::FormatNationalNumberWithCarrier(
- const string& number,
- const string& region_code,
- PhoneNumberFormat number_format,
- const string& carrier_code,
- string* formatted_number) const {
- DCHECK(formatted_number);
- const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
- // When the intl_number_formats exists, we use that to format national number
- // for the INTERNATIONAL format instead of using the number_formats.
- const RepeatedPtrField<NumberFormat> available_formats =
- (metadata->intl_number_format_size() == 0 || number_format == NATIONAL)
- ? metadata->number_format()
- : metadata->intl_number_format();
- FormatAccordingToFormatsWithCarrier(number, available_formats, number_format,
- number, carrier_code, formatted_number);
- if (number_format == RFC3966) {
- // Replace all separators with a "-".
- scoped_ptr<const reg_exp::RegularExpression> separator_pattern(
- reg_exp::CreateRegularExpression(
- StrCat("[", kValidPunctuation, "]+").c_str()));
- separator_pattern->Replace(formatted_number, true, "-");
- }
-}
-
-// Gets the formatted extension of a phone number, if the phone number had an
-// extension specified. If not, it returns an empty string.
-void PhoneNumberUtil::MaybeGetFormattedExtension(
- const PhoneNumber& number,
- const string& region_code,
- PhoneNumberFormat number_format,
- string* extension) const {
- DCHECK(extension);
- if (!number.has_extension() || number.extension().length() == 0) {
- extension->assign("");
- } else {
- if (number_format == RFC3966) {
- StrAppend(extension, kRfc3966ExtnPrefix, number.extension());
- return;
- }
- FormatExtension(number.extension(), region_code, extension);
- }
-}
-
-// Formats the extension part of the phone number by prefixing it with the
-// appropriate extension prefix. This will be the default extension prefix,
-// unless overridden by a preferred extension prefix for this region.
-void PhoneNumberUtil::FormatExtension(const string& extension_digits,
- const string& region_code,
- string* extension) const {
- DCHECK(extension);
- const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
- if (metadata->has_preferred_extn_prefix()) {
- extension->assign(StrCat(metadata->preferred_extn_prefix(),
- extension_digits));
- } else {
- extension->assign(StrCat(kDefaultExtnPrefix, extension_digits));
- }
-}
-
-bool PhoneNumberUtil::IsNANPACountry(const string& region_code) const {
- return nanpa_regions_->find(region_code) != nanpa_regions_->end();
-}
-
-// Returns the region codes that matches the specific country calling code. In
-// the case of no region code being found, region_codes will be left empty.
-void PhoneNumberUtil::GetRegionCodesForCountryCallingCode(
- int country_calling_code,
- list<string>* region_codes) const {
- DCHECK(region_codes);
- // Create a IntRegionsPair with the country_code passed in, and use it to
- // locate the pair with the same country_code in the sorted vector.
- IntRegionsPair target_pair;
- target_pair.first = country_calling_code;
- typedef vector<IntRegionsPair>::const_iterator ConstIterator;
- pair<ConstIterator, ConstIterator> range = equal_range(
- country_calling_code_to_region_code_map_->begin(),
- country_calling_code_to_region_code_map_->end(),
- target_pair, CompareFirst());
- if (range.first != range.second) {
- region_codes->insert(region_codes->begin(),
- range.first->second->begin(),
- range.first->second->end());
- }
-}
-
-// Returns the region code that matches the specific country calling code. In
-// the case of no region code being found, ZZ will be returned.
-void PhoneNumberUtil::GetRegionCodeForCountryCode(
- int country_calling_code,
- string* region_code) const {
- DCHECK(region_code);
- list<string> region_codes;
-
- GetRegionCodesForCountryCallingCode(country_calling_code, &region_codes);
- *region_code = region_codes.size() != 0 ? region_codes.front() : "ZZ";
-}
-
-void PhoneNumberUtil::GetRegionCodeForNumber(const PhoneNumber& number,
- string* region_code) const {
- DCHECK(region_code);
- int country_calling_code = number.country_code();
- list<string> region_codes;
- GetRegionCodesForCountryCallingCode(country_calling_code, &region_codes);
- if (region_codes.size() == 0) {
- string number_string;
- GetNationalSignificantNumber(number, &number_string);
- logger->Warning(string("Missing/invalid country code (") +
- SimpleItoa(country_calling_code) + ") for number " + number_string);
- *region_code = "ZZ";
- return;
- }
- if (region_codes.size() == 1) {
- *region_code = region_codes.front();
- } else {
- GetRegionCodeForNumberFromRegionList(number, region_codes, region_code);
- }
-}
-
-void PhoneNumberUtil::GetRegionCodeForNumberFromRegionList(
- const PhoneNumber& number, const list<string>& region_codes,
- string* region_code) const {
- DCHECK(region_code);
- string national_number;
- GetNationalSignificantNumber(number, &national_number);
- for (list<string>::const_iterator it = region_codes.begin();
- it != region_codes.end(); ++it) {
- const PhoneMetadata* metadata = GetMetadataForRegion(*it);
- if (metadata->has_leading_digits()) {
- scoped_ptr<reg_exp::RegularExpressionInput> number(
- reg_exp::CreateRegularExpressionInput(national_number.c_str()));
- if (number->ConsumeRegExp(metadata->leading_digits(), true, NULL, NULL)) {
- *region_code = *it;
- return;
- }
- } else if (GetNumberTypeHelper(national_number, *metadata) != UNKNOWN) {
- *region_code = *it;
- return;
- }
- }
- *region_code = "ZZ";
-}
-
-int PhoneNumberUtil::GetCountryCodeForRegion(const string& region_code) const {
- if (!IsValidRegionCode(region_code)) {
- logger->Info("Invalid or unknown country code provided.");
- return 0;
- }
- const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
- if (!metadata) {
- logger->Error("Unsupported country code provided.");
- return 0;
- }
- return metadata->country_code();
-}
-
-// Gets a valid fixed-line number for the specified region_code. Returns false
-// if the country was unknown or if no number exists.
-bool PhoneNumberUtil::GetExampleNumber(const string& region_code,
- PhoneNumber* number) const {
- DCHECK(number);
- return GetExampleNumberForType(region_code,
- FIXED_LINE,
- number);
-}
-
-// Gets a valid number for the specified region_code and type. Returns false if
-// the country was unknown or if no number exists.
-bool PhoneNumberUtil::GetExampleNumberForType(
- const string& region_code,
- PhoneNumberUtil::PhoneNumberType type,
- PhoneNumber* number) const {
- DCHECK(number);
- const PhoneMetadata* region_metadata = GetMetadataForRegion(region_code);
- const PhoneNumberDesc* description =
- GetNumberDescByType(*region_metadata, type);
- if (description && description->has_example_number()) {
- return (Parse(description->example_number(),
- region_code,
- number) == NO_PARSING_ERROR);
- }
- return false;
-}
-
-PhoneNumberUtil::ErrorType PhoneNumberUtil::Parse(const string& number_to_parse,
- const string& default_region,
- PhoneNumber* number) const {
- DCHECK(number);
- return ParseHelper(number_to_parse, default_region, false, true, number);
-}
-
-PhoneNumberUtil::ErrorType PhoneNumberUtil::ParseAndKeepRawInput(
- const string& number_to_parse,
- const string& default_region,
- PhoneNumber* number) const {
- DCHECK(number);
- return ParseHelper(number_to_parse, default_region, true, true, number);
-}
-
-// Checks to see that the region code used is valid, or if it is not valid, that
-// the number to parse starts with a + symbol so that we can attempt to infer
-// the country from the number. Returns false if it cannot use the region
-// provided and the region cannot be inferred.
-bool PhoneNumberUtil::CheckRegionForParsing(
- const string& number_to_parse,
- const string& default_region) const {
- if (!IsValidRegionCode(default_region) && !number_to_parse.empty()) {
- scoped_ptr<reg_exp::RegularExpressionInput> number_as_string_piece(
- reg_exp::CreateRegularExpressionInput(number_to_parse.c_str()));
- if (!plus_chars_pattern->Consume(number_as_string_piece.get(),
- true, NULL, NULL)) {
- return false;
- }
- }
- return true;
-}
-
-PhoneNumberUtil::ErrorType PhoneNumberUtil::ParseHelper(
- const string& number_to_parse,
- const string& default_region,
- bool keep_raw_input,
- bool check_region,
- PhoneNumber* phone_number) const {
- DCHECK(phone_number);
- // Extract a possible number from the string passed in (this strips leading
- // characters that could not be the start of a phone number.)
- string national_number;
- ExtractPossibleNumber(number_to_parse, &national_number);
- if (!IsViablePhoneNumber(national_number)) {
- logger->Debug("The string supplied did not seem to be a phone number.");
- return NOT_A_NUMBER;
- }
-
- if (check_region &&
- !CheckRegionForParsing(national_number, default_region)) {
- logger->Info("Missing or invalid default country.");
- return INVALID_COUNTRY_CODE_ERROR;
- }
- PhoneNumber temp_number;
- if (keep_raw_input) {
- temp_number.set_raw_input(number_to_parse);
- }
- // Attempt to parse extension first, since it doesn't require country-specific
- // data and we want to have the non-normalised number here.
- string extension;
- MaybeStripExtension(&national_number, &extension);
- if (!extension.empty()) {
- temp_number.set_extension(extension);
- }
- const PhoneMetadata* country_metadata = GetMetadataForRegion(default_region);
- // Check to see if the number is given in international format so we know
- // whether this number is from the default country or not.
- string normalized_national_number(national_number);
- ErrorType country_code_error =
- MaybeExtractCountryCode(country_metadata, keep_raw_input,
- &normalized_national_number, &temp_number);
- int country_code = temp_number.country_code();
- if (country_code_error != NO_PARSING_ERROR) {
- return country_code_error;
- }
- if (country_code != 0) {
- string phone_number_region;
- GetRegionCodeForCountryCode(country_code, &phone_number_region);
- if (phone_number_region != default_region) {
- country_metadata = GetMetadataForRegion(phone_number_region);
- }
- } else if (country_metadata) {
- // If no extracted country calling code, use the region supplied instead.
- // Note that the national number was already normalized by
- // MaybeExtractCountryCode.
- country_code = country_metadata->country_code();
- }
- if (normalized_national_number.length() < kMinLengthForNsn) {
- logger->Debug("The string supplied is too short to be a phone number.");
- return TOO_SHORT_NSN;
- }
- if (country_metadata) {
- string* carrier_code = keep_raw_input ?
- temp_number.mutable_preferred_domestic_carrier_code() : NULL;
- MaybeStripNationalPrefixAndCarrierCode(*country_metadata,
- &normalized_national_number,
- carrier_code);
- }
- size_t normalized_national_number_length =
- normalized_national_number.length();
- if (normalized_national_number_length < kMinLengthForNsn) {
- logger->Debug("The string supplied is too short to be a phone number.");
- return TOO_SHORT_NSN;
- }
- if (normalized_national_number_length > kMaxLengthForNsn) {
- logger->Debug("The string supplied is too long to be a phone number.");
- return TOO_LONG_NSN;
- }
- temp_number.set_country_code(country_code);
- if (country_metadata &&
- country_metadata->leading_zero_possible() &&
- normalized_national_number[0] == '0') {
- temp_number.set_italian_leading_zero(true);
- }
- uint64 number_as_int;
- safe_strtou64(normalized_national_number, &number_as_int);
- temp_number.set_national_number(number_as_int);
- phone_number->MergeFrom(temp_number);
- return NO_PARSING_ERROR;
-}
-
-// Attempts to extract a possible number from the string passed in. This
-// currently strips all leading characters that could not be used to start a
-// phone number. Characters that can be used to start a phone number are
-// defined in the valid_start_char_pattern. If none of these characters are
-// found in the number passed in, an empty string is returned. This function
-// also attempts to strip off any alternative extensions or endings if two or
-// more are present, such as in the case of: (530) 583-6985 x302/x2303. The
-// second extension here makes this actually two phone numbers, (530) 583-6985
-// x302 and (530) 583-6985 x2303. We remove the second extension so that the
-// first number is parsed correctly.
-// static
-void PhoneNumberUtil::ExtractPossibleNumber(const string& number,
- string* extracted_number) {
- DCHECK(extracted_number);
-
- UnicodeText number_as_unicode;
- number_as_unicode.PointToUTF8(number.data(), number.size());
- char current_char[5];
- int len;
- UnicodeText::const_iterator it;
- for (it = number_as_unicode.begin(); it != number_as_unicode.end(); ++it) {
- len = it.get_utf8(current_char);
- current_char[len] = '\0';
- if (valid_start_char_pattern->Match(current_char, true, NULL)) {
- break;
- }
- }
-
- if (it == number_as_unicode.end()) {
- // No valid start character was found. extracted_number should be set to
- // empty string.
- extracted_number->assign("");
- return;
- }
-
- UnicodeText::const_reverse_iterator reverse_it(number_as_unicode.end());
- for (; reverse_it.base() != it; ++reverse_it) {
- len = reverse_it.get_utf8(current_char);
- current_char[len] = '\0';
- if (!unwanted_end_char_pattern->Match(current_char, true, NULL)) {
- break;
- }
- }
-
- if (reverse_it.base() == it) {
- extracted_number->assign("");
- return;
- }
-
- extracted_number->assign(UnicodeText::UTF8Substring(it, reverse_it.base()));
-
- logger->Debug("After stripping starting and trailing characters,"
- " left with: " + *extracted_number);
-
- // Now remove any extra numbers at the end.
- capture_up_to_second_number_start_pattern->Match(extracted_number->c_str(),
- false,
- extracted_number);
-}
-
-bool PhoneNumberUtil::IsPossibleNumber(const PhoneNumber& number) const {
- return IsPossibleNumberWithReason(number) == IS_POSSIBLE;
-}
-
-bool PhoneNumberUtil::IsPossibleNumberForString(
- const string& number,
- const string& region_dialing_from) const {
- PhoneNumber number_proto;
- if (Parse(number, region_dialing_from, &number_proto) == NO_PARSING_ERROR) {
- return IsPossibleNumber(number_proto);
- } else {
- return false;
- }
-}
-
-PhoneNumberUtil::ValidationResult PhoneNumberUtil::IsPossibleNumberWithReason(
- const PhoneNumber& number) const {
- string national_number;
- GetNationalSignificantNumber(number, &national_number);
- int country_code = number.country_code();
- // Note: For Russian Fed and NANPA numbers, we just use the rules from the
- // default region (US or Russia) since the GetRegionCodeForNumber will not
- // work if the number is possible but not valid. This would need to be
- // revisited if the possible number pattern ever differed between various
- // regions within those plans.
- string region_code;
- GetRegionCodeForCountryCode(country_code, &region_code);
- if (!HasValidRegionCode(region_code, country_code, national_number)) {
- return INVALID_COUNTRY_CODE;
- }
- const PhoneNumberDesc& general_num_desc =
- GetMetadataForRegion(region_code)->general_desc();
- // Handling case of numbers with no metadata.
- if (!general_num_desc.has_national_number_pattern()) {
- size_t number_length = national_number.length();
- if (number_length < kMinLengthForNsn) {
- return TOO_SHORT;
- } else if (number_length > kMaxLengthForNsn) {
- return TOO_LONG;
- } else {
- return IS_POSSIBLE;
- }
- }
- scoped_ptr<reg_exp::RegularExpression> possible_number_pattern(
- reg_exp::CreateRegularExpression(
- StrCat("(", general_num_desc.possible_number_pattern(), ")").c_str()));
- return TestNumberLengthAgainstPattern(possible_number_pattern.get(),
- national_number);
-}
-
-bool PhoneNumberUtil::TruncateTooLongNumber(PhoneNumber* number) const {
- if (IsValidNumber(*number)) {
- return true;
- }
- PhoneNumber number_copy(*number);
- uint64 national_number = number->national_number();
- do {
- national_number /= 10;
- number_copy.set_national_number(national_number);
- if (IsPossibleNumberWithReason(number_copy) == TOO_SHORT ||
- national_number == 0) {
- return false;
- }
- } while (!IsValidNumber(number_copy));
- number->set_national_number(national_number);
- return true;
-}
-
-PhoneNumberUtil::PhoneNumberType PhoneNumberUtil::GetNumberType(
- const PhoneNumber& number) const {
- string region_code;
- GetRegionCodeForNumber(number, &region_code);
- if (!IsValidRegionCode(region_code)) {
- return UNKNOWN;
- }
- string national_significant_number;
- GetNationalSignificantNumber(number, &national_significant_number);
- return GetNumberTypeHelper(national_significant_number,
- *GetMetadataForRegion(region_code));
-}
-
-bool PhoneNumberUtil::IsValidNumber(const PhoneNumber& number) const {
- string region_code;
- GetRegionCodeForNumber(number, &region_code);
- return IsValidRegionCode(region_code) &&
- IsValidNumberForRegion(number, region_code);
-}
-
-bool PhoneNumberUtil::IsValidNumberForRegion(const PhoneNumber& number,
- const string& region_code) const {
- if (number.country_code() != GetCountryCodeForRegion(region_code)) {
- return false;
- }
- const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
- const PhoneNumberDesc& general_desc = metadata->general_desc();
- string national_number;
- GetNationalSignificantNumber(number, &national_number);
-
- // For regions where we don't have metadata for PhoneNumberDesc, we treat
- // any number passed in as a valid number if its national significant number
- // is between the minimum and maximum lengths defined by ITU for a national
- // significant number.
- if (!general_desc.has_national_number_pattern()) {
- logger->Info("Validating number with incomplete metadata.");
- size_t number_length = national_number.length();
- return number_length > kMinLengthForNsn &&
- number_length <= kMaxLengthForNsn;
- }
- return GetNumberTypeHelper(national_number, *metadata) != UNKNOWN;
-}
-
-bool PhoneNumberUtil::IsLeadingZeroPossible(int country_calling_code) const {
- string region_code;
- GetRegionCodeForCountryCode(country_calling_code, &region_code);
- const PhoneMetadata* main_metadata_for_calling_code =
- GetMetadataForRegion(region_code);
- if (!main_metadata_for_calling_code) return false;
- return main_metadata_for_calling_code->leading_zero_possible();
-}
-
-void PhoneNumberUtil::GetNationalSignificantNumber(
- const PhoneNumber& number,
- string* national_number) const {
- // The leading zero in the national (significant) number of an Italian phone
- // number has a special meaning. Unlike the rest of the world, it indicates
- // the number is a landline number. There have been plans to migrate landline
- // numbers to start with the digit two since December 2000, but it has not yet
- // happened.
- // See http://en.wikipedia.org/wiki/%2B39 for more details.
- // Other regions such as Cote d'Ivoire and Gabon use this for their mobile
- // numbers.
- DCHECK(national_number);
- StrAppend(national_number,
- (IsLeadingZeroPossible(number.country_code()) &&
- number.has_italian_leading_zero() &&
- number.italian_leading_zero())
- ? "0"
- : "");
- StrAppend(national_number, number.national_number());
-}
-
-int PhoneNumberUtil::GetLengthOfGeographicalAreaCode(
- const PhoneNumber& number) const {
- string region_code;
- GetRegionCodeForNumber(number, &region_code);
- if (!IsValidRegionCode(region_code)) {
- return 0;
- }
- const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
- DCHECK(metadata);
- if (!metadata->has_national_prefix()) {
- return 0;
- }
-
- string national_significant_number;
- GetNationalSignificantNumber(number, &national_significant_number);
- PhoneNumberType type = GetNumberTypeHelper(national_significant_number,
- *metadata);
- // Most numbers other than the two types below have to be dialled in full.
- if (type != FIXED_LINE && type != FIXED_LINE_OR_MOBILE) {
- return 0;
- }
-
- return GetLengthOfNationalDestinationCode(number);
-}
-
-int PhoneNumberUtil::GetLengthOfNationalDestinationCode(
- const PhoneNumber& number) const {
- PhoneNumber copied_proto(number);
- if (number.has_extension()) {
- // Clear the extension so it's not included when formatting.
- copied_proto.clear_extension();
- }
-
- string formatted_number;
- Format(copied_proto, INTERNATIONAL, &formatted_number);
- scoped_ptr<reg_exp::RegularExpressionInput> i18n_number(
- reg_exp::CreateRegularExpressionInput(formatted_number.c_str()));
- string digit_group;
- string ndc;
- string third_group;
- for (int i = 0; i < 3; ++i) {
- if (!capturing_ascii_digits_pattern->Consume(i18n_number.get(),
- false,
- &digit_group,
- NULL)) {
- // We should find at least three groups.
- return 0;
- }
- if (i == 1) {
- ndc = digit_group;
- } else if (i == 2) {
- third_group = digit_group;
- }
- }
- string region_code;
- GetRegionCodeForNumber(number, &region_code);
- if (region_code == "AR" &&
- GetNumberType(number) == MOBILE) {
- // Argentinian mobile numbers, when formatted in the international format,
- // are in the form of +54 9 NDC XXXX.... As a result, we take the length of
- // the third group (NDC) and add 1 for the digit 9, which also forms part of
- // the national significant number.
- return third_group.size() + 1;
- }
- return ndc.size();
-}
-
-// static
-void PhoneNumberUtil::NormalizeDigitsOnly(string* number) {
- DCHECK(number);
- // Delete everything that isn't valid digits.
- static scoped_ptr<reg_exp::RegularExpression> invalid_digits_pattern(
- reg_exp::CreateRegularExpression(StrCat("[^", kValidDigits,
- "]").c_str()));
- static const char *empty = "";
- invalid_digits_pattern->Replace(number, true, empty);
- // Normalize all decimal digits to ASCII digits.
- UParseError error;
- icu::ErrorCode status;
-
- scoped_ptr<icu::Transliterator> transliterator(
- icu::Transliterator::createFromRules(
- "NormalizeDecimalDigits",
- "[[:nv=0:]-[0]-[:^nt=de:]]>0;"
- "[[:nv=1:]-[1]-[:^nt=de:]]>1;"
- "[[:nv=2:]-[2]-[:^nt=de:]]>2;"
- "[[:nv=3:]-[3]-[:^nt=de:]]>3;"
- "[[:nv=4:]-[4]-[:^nt=de:]]>4;"
- "[[:nv=5:]-[5]-[:^nt=de:]]>5;"
- "[[:nv=6:]-[6]-[:^nt=de:]]>6;"
- "[[:nv=7:]-[7]-[:^nt=de:]]>7;"
- "[[:nv=8:]-[8]-[:^nt=de:]]>8;"
- "[[:nv=9:]-[9]-[:^nt=de:]]>9;",
- UTRANS_FORWARD,
- error,
- status
- )
- );
- if (!status.isSuccess()) {
- logger->Error("Error creating ICU Transliterator");
- return;
- }
- icu::UnicodeString utf16(icu::UnicodeString::fromUTF8(number->c_str()));
- transliterator->transliterate(utf16);
- number->clear();
- utf16.toUTF8String(*number);
-}
-
-bool PhoneNumberUtil::IsAlphaNumber(const string& number) const {
- if (!IsViablePhoneNumber(number)) {
- // Number is too short, or doesn't match the basic phone number pattern.
- return false;
- }
- // Copy the number, since we are going to try and strip the extension from it.
- string number_copy(number);
- string extension;
- MaybeStripExtension(&number_copy, &extension);
- return valid_alpha_phone_pattern->Match(number_copy.c_str(), true, NULL);
-}
-
-void PhoneNumberUtil::ConvertAlphaCharactersInNumber(string* number) const {
- DCHECK(number);
- NormalizeHelper(*all_normalization_mappings, false, number);
-}
-
-// Normalizes a string of characters representing a phone number. This performs
-// the following conversions:
-// - Wide-ascii digits are converted to normal ASCII (European) digits.
-// - Letters are converted to their numeric representation on a telephone
-// keypad. The keypad used here is the one defined in ITU Recommendation
-// E.161. This is only done if there are 3 or more letters in the number, to
-// lessen the risk that such letters are typos - otherwise alpha characters
-// are stripped.
-// - Punctuation is stripped.
-// - Arabic-Indic numerals are converted to European numerals.
-void PhoneNumberUtil::Normalize(string* number) const {
- DCHECK(number);
- if (valid_alpha_phone_pattern->Match(number->c_str(), false, NULL)) {
- NormalizeHelper(*all_normalization_mappings, true, number);
- }
- NormalizeDigitsOnly(number);
-}
-
-// Checks to see if the string of characters could possibly be a phone number at
-// all. At the moment, checks to see that the string begins with at least 3
-// digits, ignoring any punctuation commonly found in phone numbers. This
-// method does not require the number to be normalized in advance - but does
-// assume that leading non-number symbols have been removed, such as by the
-// method ExtractPossibleNumber.
-// static
-bool PhoneNumberUtil::IsViablePhoneNumber(const string& number) {
- if (number.length() < kMinLengthForNsn) {
- logger->Debug("Number too short to be viable:" + number);
- return false;
- }
- return valid_phone_number_pattern->Match(number.c_str(), true, NULL);
-}
-
-// Strips any international prefix (such as +, 00, 011) present in the number
-// provided, normalizes the resulting number, and indicates if an international
-// prefix was present.
-//
-// possible_idd_prefix represents the international direct dialing prefix from
-// the region we think this number may be dialed in.
-// Returns true if an international dialing prefix could be removed from the
-// number, otherwise false if the number did not seem to be in international
-// format.
-PhoneNumber::CountryCodeSource
-PhoneNumberUtil::MaybeStripInternationalPrefixAndNormalize(
- const string& possible_idd_prefix,
- string* number) const {
- DCHECK(number);
- if (number->empty()) {
- return PhoneNumber::FROM_DEFAULT_COUNTRY;
- }
- scoped_ptr<reg_exp::RegularExpressionInput> number_string_piece(
- reg_exp::CreateRegularExpressionInput(number->c_str()));
- if (plus_chars_pattern->Consume(number_string_piece.get(), true,
- NULL, NULL)) {
- number->assign(number_string_piece->ToString());
- // Can now normalize the rest of the number since we've consumed the "+"
- // sign at the start.
- Normalize(number);
- return PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN;
- }
- // Attempt to parse the first digits as an international prefix.
- scoped_ptr<reg_exp::RegularExpression> idd_pattern(
- reg_exp::CreateRegularExpression(possible_idd_prefix.c_str()));
- if (ParsePrefixAsIdd(idd_pattern.get(), number)) {
- Normalize(number);
- return PhoneNumber::FROM_NUMBER_WITH_IDD;
- }
- // If still not found, then try and normalize the number and then try again.
- // This shouldn't be done before, since non-numeric characters (+ and ~) may
- // legally be in the international prefix.
- Normalize(number);
- return ParsePrefixAsIdd(idd_pattern.get(), number)
- ? PhoneNumber::FROM_NUMBER_WITH_IDD
- : PhoneNumber::FROM_DEFAULT_COUNTRY;
-}
-
-// Strips any national prefix (such as 0, 1) present in the number provided.
-// The number passed in should be the normalized telephone number that we wish
-// to strip any national dialing prefix from. The metadata should be for the
-// region that we think this number is from.
-// static
-void PhoneNumberUtil::MaybeStripNationalPrefixAndCarrierCode(
- const PhoneMetadata& metadata,
- string* number,
- string* carrier_code) {
- DCHECK(number);
- string carrier_code_temp;
- const string& possible_national_prefix =
- metadata.national_prefix_for_parsing();
- if (number->empty() || possible_national_prefix.empty()) {
- // Early return for numbers of zero length or with no national prefix
- // possible.
- return;
- }
- // We use two copies here since Consume modifies the phone number, and if the
- // first if-clause fails the number will already be changed.
- scoped_ptr<reg_exp::RegularExpressionInput> number_copy(
- reg_exp::CreateRegularExpressionInput(number->c_str()));
- scoped_ptr<reg_exp::RegularExpressionInput> number_copy_without_transform(
- reg_exp::CreateRegularExpressionInput(number->c_str()));
-
- string number_string_copy(*number);
- string captured_part_of_prefix;
- scoped_ptr<reg_exp::RegularExpression> national_number_rule(
- reg_exp::CreateRegularExpression(
- metadata.general_desc().national_number_pattern().c_str()));
- // Attempt to parse the first digits as a national prefix. We make a
- // copy so that we can revert to the original string if necessary.
- const string& transform_rule = metadata.national_prefix_transform_rule();
- if (!transform_rule.empty() &&
- (number_copy->ConsumeRegExp(possible_national_prefix, true,
- &carrier_code_temp,
- &captured_part_of_prefix) ||
- number_copy->ConsumeRegExp(possible_national_prefix, true,
- &captured_part_of_prefix, NULL)) &&
- !captured_part_of_prefix.empty()) {
- string re2_transform_rule(transform_rule);
- TransformRegularExpressionToRE2Syntax(&re2_transform_rule);
- // If this succeeded, then we must have had a transform rule and there must
- // have been some part of the prefix that we captured.
- // We make the transformation and check that the resultant number is viable.
- // If so, replace the number and return.
- scoped_ptr<reg_exp::RegularExpression> possible_national_prefix_rule(
- reg_exp::CreateRegularExpression(possible_national_prefix.c_str()));
- possible_national_prefix_rule->Replace(&number_string_copy, false,
- re2_transform_rule.c_str());
- if (national_number_rule->Match(number_string_copy.c_str(), true, NULL)) {
- number->assign(number_string_copy);
- if (carrier_code) {
- carrier_code->assign(carrier_code_temp);
- }
- }
- } else if (number_copy_without_transform->ConsumeRegExp(
- possible_national_prefix, true, &carrier_code_temp, NULL) ||
- number_copy_without_transform->ConsumeRegExp(
- possible_national_prefix, true, NULL, NULL)) {
- logger->Debug("Parsed the first digits as a national prefix.");
- string unconsumed_part(number_copy_without_transform->ToString());
- // If captured_part_of_prefix is empty, this implies nothing was captured by
- // the capturing groups in possible_national_prefix; therefore, no
- // transformation is necessary, and we just remove the national prefix.
- if (national_number_rule->Match(unconsumed_part.c_str(), true, NULL)) {
- number->assign(unconsumed_part);
- if (carrier_code) {
- carrier_code->assign(carrier_code_temp);
- }
- }
- } else {
- logger->Debug("The first digits did not match the national prefix.");
- }
-}
-
-// Strips any extension (as in, the part of the number dialled after the call is
-// connected, usually indicated with extn, ext, x or similar) from the end of
-// the number, and returns it. The number passed in should be non-normalized.
-// static
-bool PhoneNumberUtil::MaybeStripExtension(string* number, string* extension) {
- DCHECK(number);
- DCHECK(extension);
- // There are three extension capturing groups in the regular expression.
- string possible_extension_one;
- string possible_extension_two;
- string possible_extension_three;
- string number_copy(*number);
- scoped_ptr<reg_exp::RegularExpressionInput> number_copy_regex_input(
- reg_exp::CreateRegularExpressionInput(number_copy.c_str()));
- if (extn_pattern->Consume(number_copy_regex_input.get(), false,
- &possible_extension_one, &possible_extension_two,
- &possible_extension_three)) {
- // Replace the extensions in the original string here.
- extn_pattern->Replace(&number_copy, false, "");
- logger->Debug("Found an extension. Possible extension one: "
- + possible_extension_one
- + ". Possible extension two: " + possible_extension_two
- + ". Remaining number: " + number_copy);
- // If we find a potential extension, and the number preceding this is a
- // viable number, we assume it is an extension.
- if ((!possible_extension_one.empty() || !possible_extension_two.empty() ||
- !possible_extension_three.empty()) &&
- IsViablePhoneNumber(number_copy)) {
- number->assign(number_copy);
- if (!possible_extension_one.empty()) {
- extension->assign(possible_extension_one);
- } else if (!possible_extension_two.empty()) {
- extension->assign(possible_extension_two);
- } else if (!possible_extension_three.empty()) {
- extension->assign(possible_extension_three);
- }
- return true;
- }
- }
- return false;
-}
-
-// Extracts country calling code from national_number, and returns it. It
-// assumes that the leading plus sign or IDD has already been removed. Returns 0
-// if national_number doesn't start with a valid country calling code, and
-// leaves national_number unmodified. Assumes the national_number is at least 3
-// characters long.
-int PhoneNumberUtil::ExtractCountryCode(string* national_number) const {
- int potential_country_code;
- for (int i = 1; i <= 3; ++i) {
- safe_strto32(national_number->substr(0, i), &potential_country_code);
- string region_code;
- GetRegionCodeForCountryCode(potential_country_code, &region_code);
- if (region_code != "ZZ") {
- national_number->erase(0, i);
- return potential_country_code;
- }
- }
- return 0;
-}
-
-// Tries to extract a country calling code from a number. Country calling codes
-// are extracted in the following ways:
-// - by stripping the international dialing prefix of the region the person
-// is dialing from, if this is present in the number, and looking at the next
-// digits
-// - by stripping the '+' sign if present and then looking at the next digits
-// - by comparing the start of the number and the country calling code of the
-// default region. If the number is not considered possible for the numbering
-// plan of the default region initially, but starts with the country calling
-// code of this region, validation will be reattempted after stripping this
-// country calling code. If this number is considered a possible number, then
-// the first digits will be considered the country calling code and removed as
-// such.
-//
-// Returns NO_PARSING_ERROR if a country calling code was successfully
-// extracted or none was present, or the appropriate error otherwise, such as
-// if a + was present but it was not followed by a valid country calling code.
-// If NO_PARSING_ERROR is returned, the national_number without the country
-// calling code is populated, and the country_code passed in is set to the
-// country calling code if found, otherwise to 0.
-PhoneNumberUtil::ErrorType PhoneNumberUtil::MaybeExtractCountryCode(
- const PhoneMetadata* default_region_metadata,
- bool keep_raw_input,
- string* national_number,
- PhoneNumber* phone_number) const {
- DCHECK(national_number);
- DCHECK(phone_number);
- // Set the default prefix to be something that will never match if there is no
- // default region.
- string possible_country_idd_prefix = default_region_metadata
- ? default_region_metadata->international_prefix()
- : "NonMatch";
- PhoneNumber::CountryCodeSource country_code_source =
- MaybeStripInternationalPrefixAndNormalize(possible_country_idd_prefix,
- national_number);
- if (keep_raw_input) {
- phone_number->set_country_code_source(country_code_source);
- }
- if (country_code_source != PhoneNumber::FROM_DEFAULT_COUNTRY) {
- if (national_number->length() < kMinLengthForNsn) {
- logger->Debug("Phone number had an IDD, but after this was not "
- "long enough to be a viable phone number.");
- return TOO_SHORT_AFTER_IDD;
- }
- int potential_country_code = ExtractCountryCode(national_number);
- if (potential_country_code != 0) {
- phone_number->set_country_code(potential_country_code);
- return NO_PARSING_ERROR;
- }
- // If this fails, they must be using a strange country calling code that we
- // don't recognize, or that doesn't exist.
- return INVALID_COUNTRY_CODE_ERROR;
- } else if (default_region_metadata) {
- // Check to see if the number starts with the country calling code for the
- // default region. If so, we remove the country calling code, and do some
- // checks on the validity of the number before and after.
- int default_country_code = default_region_metadata->country_code();
- string default_country_code_string(SimpleItoa(default_country_code));
- logger->Debug("Possible country code: " + default_country_code_string);
- string potential_national_number;
- if (TryStripPrefixString(*national_number,
- default_country_code_string,
- &potential_national_number)) {
- const PhoneNumberDesc& general_num_desc =
- default_region_metadata->general_desc();
- scoped_ptr<reg_exp::RegularExpression> valid_number_pattern(
- reg_exp::CreateRegularExpression(
- general_num_desc.national_number_pattern().c_str()));
-
- MaybeStripNationalPrefixAndCarrierCode(*default_region_metadata,
- &potential_national_number,
- NULL);
- logger->Debug("Number without country code prefix: "
- + potential_national_number);
- string extracted_number;
- scoped_ptr<reg_exp::RegularExpression> possible_number_pattern(
- reg_exp::CreateRegularExpression(
- StrCat("(", general_num_desc.possible_number_pattern(),
- ")").c_str()));
- // If the number was not valid before but is valid now, or if it was too
- // long before, we consider the number with the country code stripped to
- // be a better result and keep that instead.
- if ((!valid_number_pattern->Match(national_number->c_str(),
- true, NULL) &&
- valid_number_pattern->Match(potential_national_number.c_str(),
- true, NULL)) ||
- TestNumberLengthAgainstPattern(possible_number_pattern.get(),
- *national_number)
- == TOO_LONG) {
- national_number->assign(potential_national_number);
- if (keep_raw_input) {
- phone_number->set_country_code_source(
- PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN);
- }
- phone_number->set_country_code(default_country_code);
- return NO_PARSING_ERROR;
- }
- }
- }
- // No country calling code present. Set the country_code to 0.
- phone_number->set_country_code(0);
- return NO_PARSING_ERROR;
-}
-
-PhoneNumberUtil::MatchType PhoneNumberUtil::IsNumberMatch(
- const PhoneNumber& first_number_in,
- const PhoneNumber& second_number_in) const {
- // Make copies of the phone number so that the numbers passed in are not
- // edited.
- PhoneNumber first_number(first_number_in);
- PhoneNumber second_number(second_number_in);
- // First clear raw_input and country_code_source and
- // preferred_domestic_carrier_code fields and any empty-string extensions so
- // that we can use the proto-buffer equality method.
- first_number.clear_raw_input();
- first_number.clear_country_code_source();
- first_number.clear_preferred_domestic_carrier_code();
- second_number.clear_raw_input();
- second_number.clear_country_code_source();
- second_number.clear_preferred_domestic_carrier_code();
- if (first_number.extension().empty()) {
- first_number.clear_extension();
- }
- if (second_number.extension().empty()) {
- second_number.clear_extension();
- }
- // Early exit if both had extensions and these are different.
- if (first_number.has_extension() && second_number.has_extension() &&
- first_number.extension() != second_number.extension()) {
- return NO_MATCH;
- }
- int first_number_country_code = first_number.country_code();
- int second_number_country_code = second_number.country_code();
- // Both had country calling code specified.
- if (first_number_country_code != 0 && second_number_country_code != 0) {
- if (ExactlySameAs(first_number, second_number)) {
- return EXACT_MATCH;
- } else if (first_number_country_code == second_number_country_code &&
- IsNationalNumberSuffixOfTheOther(first_number, second_number)) {
- // A SHORT_NSN_MATCH occurs if there is a difference because of the
- // presence or absence of an 'Italian leading zero', the presence or
- // absence of an extension, or one NSN being a shorter variant of the
- // other.
- return SHORT_NSN_MATCH;
- }
- // This is not a match.
- return NO_MATCH;
- }
- // Checks cases where one or both country calling codes were not specified. To
- // make equality checks easier, we first set the country_code fields to be
- // equal.
- first_number.set_country_code(second_number_country_code);
- // If all else was the same, then this is an NSN_MATCH.
- if (ExactlySameAs(first_number, second_number)) {
- return NSN_MATCH;
- }
- if (IsNationalNumberSuffixOfTheOther(first_number, second_number)) {
- return SHORT_NSN_MATCH;
- }
- return NO_MATCH;
-}
-
-PhoneNumberUtil::MatchType PhoneNumberUtil::IsNumberMatchWithTwoStrings(
- const string& first_number,
- const string& second_number) const {
- PhoneNumber first_number_as_proto;
- ErrorType error_type =
- Parse(first_number, "ZZ", &first_number_as_proto);
- if (error_type == NO_PARSING_ERROR) {
- return IsNumberMatchWithOneString(first_number_as_proto, second_number);
- }
- if (error_type == INVALID_COUNTRY_CODE_ERROR) {
- PhoneNumber second_number_as_proto;
- ErrorType error_type = Parse(second_number, "ZZ",
- &second_number_as_proto);
- if (error_type == NO_PARSING_ERROR) {
- return IsNumberMatchWithOneString(second_number_as_proto, first_number);
- }
- if (error_type == INVALID_COUNTRY_CODE_ERROR) {
- error_type = ParseHelper(first_number, "ZZ", false, false,
- &first_number_as_proto);
- if (error_type == NO_PARSING_ERROR) {
- error_type = ParseHelper(second_number, "ZZ", false, false,
- &second_number_as_proto);
- if (error_type == NO_PARSING_ERROR) {
- return IsNumberMatch(first_number_as_proto, second_number_as_proto);
- }
- }
- }
- }
- // One or more of the phone numbers we are trying to match is not a viable
- // phone number.
- return INVALID_NUMBER;
-}
-
-PhoneNumberUtil::MatchType PhoneNumberUtil::IsNumberMatchWithOneString(
- const PhoneNumber& first_number,
- const string& second_number) const {
- // First see if the second number has an implicit country calling code, by
- // attempting to parse it.
- PhoneNumber second_number_as_proto;
- ErrorType error_type =
- Parse(second_number, "ZZ", &second_number_as_proto);
- if (error_type == NO_PARSING_ERROR) {
- return IsNumberMatch(first_number, second_number_as_proto);
- }
- if (error_type == INVALID_COUNTRY_CODE_ERROR) {
- // The second number has no country calling code. EXACT_MATCH is no longer
- // possible. We parse it as if the region was the same as that for the
- // first number, and if EXACT_MATCH is returned, we replace this with
- // NSN_MATCH.
- string first_number_region;
- GetRegionCodeForCountryCode(first_number.country_code(),
- &first_number_region);
- if (first_number_region != "ZZ") {
- PhoneNumber second_number_with_first_number_region;
- Parse(second_number, first_number_region,
- &second_number_with_first_number_region);
- MatchType match = IsNumberMatch(first_number,
- second_number_with_first_number_region);
- if (match == EXACT_MATCH) {
- return NSN_MATCH;
- }
- return match;
- } else {
- // If the first number didn't have a valid country calling code, then we
- // parse the second number without one as well.
- error_type = ParseHelper(second_number, "ZZ", false, false,
- &second_number_as_proto);
- if (error_type == NO_PARSING_ERROR) {
- return IsNumberMatch(first_number, second_number_as_proto);
- }
- }
- }
- // One or more of the phone numbers we are trying to match is not a viable
- // phone number.
- return INVALID_NUMBER;
-}
-
-} // namespace phonenumbers
-} // namespace i18n
diff --git a/third_party/libphonenumber/cpp/src/phonenumberutil.h b/third_party/libphonenumber/cpp/src/phonenumberutil.h
deleted file mode 100644
index 6a766df..0000000
--- a/third_party/libphonenumber/cpp/src/phonenumberutil.h
+++ /dev/null
@@ -1,678 +0,0 @@
-// Copyright (C) 2009 Google Inc.
-//
-// 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.
-
-// Utility for international phone numbers.
-//
-// Author: Shaopeng Jia
-// Open-sourced by: Philippe Liard
-
-#ifndef I18N_PHONENUMBERS_PHONENUMBERUTIL_H_
-#define I18N_PHONENUMBERS_PHONENUMBERUTIL_H_
-
-#include <list>
-#include <map>
-#include <set>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "base/scoped_ptr.h"
-#include "base/singleton.h"
-#include "phonenumber.pb.h"
-
-class TelephoneNumber;
-
-namespace i18n {
-namespace phonenumbers {
-
-using std::list;
-using std::map;
-using std::pair;
-using std::set;
-using std::string;
-using std::vector;
-
-using google::protobuf::RepeatedPtrField;
-
-class LoggerAdapter;
-class NumberFormat;
-class PhoneMetadata;
-class PhoneMetadataCollection;
-class PhoneNumber;
-
-class PhoneNumberUtil {
- friend struct DefaultSingletonTraits<PhoneNumberUtil>;
- friend class PhoneNumberUtilTest;
- public:
- // INTERNATIONAL and NATIONAL formats are consistent with the definition
- // in ITU-T Recommendation E. 123. For example, the number of the Google
- // Zürich office will be written as "+41 44 668 1800" in INTERNATIONAL
- // format, and as "044 668 1800" in NATIONAL format. E164 format is as per
- // INTERNATIONAL format but with no formatting applied e.g. +41446681800.
- // RFC3966 is as per INTERNATIONAL format, but with all spaces and other
- // separating symbols replaced with a hyphen, and with any phone number
- // extension appended with ";ext=".
- enum PhoneNumberFormat {
- E164,
- INTERNATIONAL,
- NATIONAL,
- RFC3966
- };
-
- // Type of phone numbers.
- enum PhoneNumberType {
- FIXED_LINE,
- MOBILE,
- // In some regions (e.g. the USA), it is impossible to distinguish between
- // fixed-line and mobile numbers by looking at the phone number itself.
- FIXED_LINE_OR_MOBILE,
- // Freephone lines
- TOLL_FREE,
- PREMIUM_RATE,
- // The cost of this call is shared between the caller and the recipient, and
- // is hence typically less than PREMIUM_RATE calls. See
- // http://en.wikipedia.org/wiki/Shared_Cost_Service for more information.
- SHARED_COST,
- // Voice over IP numbers. This includes TSoIP (Telephony Service over IP).
- VOIP,
- // A personal number is associated with a particular person, and may be
- // routed to either a MOBILE or FIXED_LINE number. Some more information can
- // be found here: http://en.wikipedia.org/wiki/Personal_Numbers
- PERSONAL_NUMBER,
- PAGER,
- // Used for "Universal Access Numbers" or "Company Numbers". They may be
- // further routed to specific offices, but allow one number to be used for a
- // company.
- UAN,
- // A phone number is of type UNKNOWN when it does not fit any of the known
- // patterns for a specific region.
- UNKNOWN
- };
-
- // Types of phone number matches. See detailed description beside the
- // IsNumberMatch() method.
- enum MatchType {
- INVALID_NUMBER, // NOT_A_NUMBER in the java version.
- NO_MATCH,
- SHORT_NSN_MATCH,
- NSN_MATCH,
- EXACT_MATCH,
- };
-
- enum ErrorType {
- NO_PARSING_ERROR,
- INVALID_COUNTRY_CODE_ERROR, // INVALID_COUNTRY_CODE in the java version.
- NOT_A_NUMBER,
- TOO_SHORT_AFTER_IDD,
- TOO_SHORT_NSN,
- TOO_LONG_NSN, // TOO_LONG in the java version.
- };
-
- // Possible outcomes when testing if a PhoneNumber is possible.
- enum ValidationResult {
- IS_POSSIBLE,
- INVALID_COUNTRY_CODE,
- TOO_SHORT,
- TOO_LONG,
- };
-
- // Gets a PhoneNumberUtil instance to carry out international phone number
- // formatting, parsing, or validation. The instance is loaded with phone
- // number metadata for a number of most commonly used regions, as specified by
- // DEFAULT_REGIONS_.
- //
- // The PhoneNumberUtil is implemented as a singleton. Therefore, calling
- // getInstance multiple times will only result in one instance being created.
- static PhoneNumberUtil* GetInstance();
-
- // Returns true if the number is a valid vanity (alpha) number such as 800
- // MICROSOFT. A valid vanity number will start with at least 3 digits and will
- // have three or more alpha characters. This does not do region-specific
- // checks - to work out if this number is actually valid for a region, it
- // should be parsed and methods such as IsPossibleNumberWithReason or
- // IsValidNumber should be used.
- bool IsAlphaNumber(const string& number) const;
-
- // Converts all alpha characters in a number to their respective digits on
- // a keypad, but retains existing formatting.
- void ConvertAlphaCharactersInNumber(string* number) const;
-
- // Normalizes a string of characters representing a phone number. This
- // converts wide-ascii and arabic-indic numerals to European numerals, and
- // strips punctuation and alpha characters.
- static void NormalizeDigitsOnly(string* number);
-
- // Gets the national significant number of a phone number. Note a national
- // significant number doesn't contain a national prefix or any formatting.
- void GetNationalSignificantNumber(const PhoneNumber& number,
- string* national_significant_num) const;
-
- // Gets the length of the geographical area code from the PhoneNumber object
- // passed in, so that clients could use it to split a national significant
- // number into geographical area code and subscriber number. It works in such
- // a way that the resultant subscriber number should be diallable, at least on
- // some devices. An example of how this could be used:
- //
- // const PhoneNumberUtil& phone_util(PhoneNumberUtil::GetInstance());
- // PhoneNumber number;
- // phone_util.Parse("16502530000", "US", &number);
- // string national_significant_number;
- // phone_util.GetNationalSignificantNumber(number,
- // &national_significant_number);
- // string area_code;
- // string subscriber_number;
- //
- // int area_code_length = phone_util.GetLengthOfGeographicalAreaCode(number);
- // if (area_code_length > 0) {
- // area_code = national_significant_number.substring(0, area_code_length);
- // subscriber_number = national_significant_number.substring(
- // area_code_length, string::npos);
- // else {
- // area_code = "";
- // subscriber_number = national_significant_number;
- // }
- //
- // N.B.: area code is a very ambiguous concept, so the I18N team generally
- // recommends against using it for most purposes, but recommends using the
- // more general national_number instead. Read the following carefully before
- // deciding to use this method:
- //
- // - geographical area codes change over time, and this method honors those
- // changes; therefore, it doesn't guarantee the stability of the result it
- // produces.
- // - subscriber numbers may not be diallable from all devices (notably mobile
- // devices, which typically requires the full national_number to be dialled
- // in most regions).
- // - most non-geographical numbers have no area codes.
- // - some geographical numbers have no area codes.
- int GetLengthOfGeographicalAreaCode(const PhoneNumber& number) const;
-
- // Gets the length of the national destination code (NDC) from the PhoneNumber
- // object passed in, so that clients could use it to split a national
- // significant number into NDC and subscriber number. The NDC of a phone
- // number is normally the first group of digit(s) right after the country
- // calling code when the number is formatted in the international format, if
- // there is a subscriber number part that follows. An example of how this
- // could be used:
- //
- // const PhoneNumberUtil& phone_util(PhoneNumberUtil::GetInstance());
- // PhoneNumber number;
- // phone_util.Parse("16502530000", "US", &number);
- // string national_significant_number;
- // phone_util.GetNationalSignificantNumber(number,
- // &national_significant_number);
- // string national_destination_code;
- // string subscriber_number;
- //
- // int national_destination_code_length =
- // phone_util.GetLengthOfGeographicalAreaCode(number);
- // if (national_destination_code_length > 0) {
- // national_destination_code = national_significant_number.substring(
- // 0, national_destination_code_length);
- // subscriber_number = national_significant_number.substring(
- // national_destination_code_length, string::npos);
- // else {
- // national_destination_code = "";
- // subscriber_number = national_significant_number;
- // }
- //
- // Refer to the unittests to see the difference between this function and
- // GetLengthOfGeographicalAreaCode().
- int GetLengthOfNationalDestinationCode(const PhoneNumber& number) const;
-
- // Formats a phone number in the specified format using default rules. Note
- // that this does not promise to produce a phone number that the user can
- // dial from where they are - although we do format in either NATIONAL or
- // INTERNATIONAL format depending on what the client asks for, we do not
- // currently support a more abbreviated format, such as for users in the
- // same area who could potentially dial the number without area code.
- void Format(const PhoneNumber& number,
- PhoneNumberFormat number_format,
- string* formatted_number) const;
-
- // Formats a phone number in the specified format using client-defined
- // formatting rules.
- void FormatByPattern(
- const PhoneNumber& number,
- PhoneNumberFormat number_format,
- const RepeatedPtrField<NumberFormat>& user_defined_formats,
- string* formatted_number) const;
-
- // Formats a phone number in national format for dialing using the carrier as
- // specified in the carrier_code. The carrier_code will always be used
- // regardless of whether the phone number already has a preferred domestic
- // carrier code stored. If carrier_code contains an empty string, return the
- // number in national format without any carrier code.
- void FormatNationalNumberWithCarrierCode(const PhoneNumber& number,
- const string& carrier_code,
- string* formatted_number) const;
-
- // Formats a phone number in national format for dialing using the carrier as
- // specified in the preferred_domestic_carrier_code field of the PhoneNumber
- // object passed in. If that is missing, use the fallback_carrier_code passed
- // in instead. If there is no preferred_domestic_carrier_code, and the
- // fallback_carrier_code contains an empty string, return the number in
- // national format without any carrier code.
- //
- // Use FormatNationalNumberWithCarrierCode instead if the carrier code passed
- // in should take precedence over the number's preferred_domestic_carrier_code
- // when formatting.
- void FormatNationalNumberWithPreferredCarrierCode(
- const PhoneNumber& number,
- const string& fallback_carrier_code,
- string* formatted_number) const;
-
- // Formats a phone number for out-of-country dialing purposes.
- //
- // Note this function takes care of the case for calling inside of NANPA
- // and between Russia and Kazakhstan (who share the same country calling
- // code). In those cases, no international prefix is used. For regions which
- // have multiple international prefixes, the number in its INTERNATIONAL
- // format will be returned instead.
- void FormatOutOfCountryCallingNumber(
- const PhoneNumber& number,
- const string& calling_from,
- string* formatted_number) const;
-
- // Formats a phone number using the original phone number format that the
- // number is parsed from. The original format is embedded in the
- // country_code_source field of the PhoneNumber object passed in. If such
- // information is missing, the number will be formatted into the NATIONAL
- // format by default.
- void FormatInOriginalFormat(const PhoneNumber& number,
- const string& region_calling_from,
- string* formatted_number) const;
-
- // Formats a phone number for out-of-country dialing purposes.
- //
- // Note that in this version, if the number was entered originally using alpha
- // characters and this version of the number is stored in raw_input, this
- // representation of the number will be used rather than the digit
- // representation. Grouping information, as specified by characters such as
- // "-" and " ", will be retained.
- //
- // Caveats:
- // 1) This will not produce good results if the country calling code is both
- // present in the raw input _and_ is the start of the national number. This
- // is not a problem in the regions which typically use alpha numbers.
- // 2) This will also not produce good results if the raw input has any
- // grouping information within the first three digits of the national number,
- // and if the function needs to strip preceding digits/words in the raw input
- // before these digits. Normally people group the first three digits together
- // so this is not a huge problem - and will be fixed if it proves to be so.
- void FormatOutOfCountryKeepingAlphaChars(
- const PhoneNumber& number,
- const string& calling_from,
- string* formatted_number) const;
-
- // Attempts to extract a valid number from a phone number that is too long to
- // be valid, and resets the PhoneNumber object passed in to that valid
- // version. If no valid number could be extracted, the PhoneNumber object
- // passed in will not be modified. It returns true if a valid phone number can
- // be successfully extracted.
- bool TruncateTooLongNumber(PhoneNumber* number) const;
-
- // Gets the type of a phone number.
- PhoneNumberType GetNumberType(const PhoneNumber& number) const;
-
- // Tests whether a phone number matches a valid pattern. Note this doesn't
- // verify the number is actually in use, which is impossible to tell by just
- // looking at a number itself.
- bool IsValidNumber(const PhoneNumber& number) const;
-
- // Tests whether a phone number is valid for a certain region. Note this
- // doesn't verify the number is actually in use, which is impossible to tell
- // by just looking at a number itself. If the country calling code is not the
- // same as the country calling code for the region, this immediately exits
- // with false. After this, the specific number pattern rules for the region
- // are examined.
- // This is useful for determining for example whether a particular number is
- // valid for Canada, rather than just a valid NANPA number.
- //
- // The region_code parameter is an ISO 3166-1 two-letter country code string.
- bool IsValidNumberForRegion(
- const PhoneNumber& number,
- const string& region_code) const;
-
- // Returns the region where a phone number is from. This could be used for
- // geo-coding at the region level.
- // The country/region is returned as an ISO 3166-1 two-letter country code
- // string.
- void GetRegionCodeForNumber(const PhoneNumber& number,
- string* region_code) const;
-
- // Returns the country calling code for a specific region. For example,
- // this would be 1 for the United States, and 64 for New Zealand.
- //
- // The region_code parameter is an ISO 3166-1 two-letter country code string.
- int GetCountryCodeForRegion(const string& region_code) const;
-
- // Returns the region code that matches the specific country code. Note that
- // it is possible that several regions share the same country code (e.g. US
- // and Canada), and in that case, only one of the regions (normally the one
- // with the largest population) is returned.
- //
- // The region code is returned as an ISO 3166-1 two-letter country code
- // string.
- void GetRegionCodeForCountryCode(int country_code, string* region_code) const;
-
- // Checks if this is a region under the North American Numbering Plan
- // Administration (NANPA).
- //
- // The region_code parameter is an ISO 3166-1 two-letter country code string.
- bool IsNANPACountry(const string& region_code) const;
-
- // Checks whether a phone number is a possible number. It provides a more
- // lenient check than IsValidNumber() in the following sense:
- // 1. It only checks the length of phone numbers. In particular, it doesn't
- // check starting digits of the number.
- // 2. It doesn't attempt to figure out the type of the number, but uses
- // general rules which applies to all types of phone numbers in a
- // region. Therefore, it is much faster than IsValidNumber().
- // 3. For fixed line numbers, many regions have the concept of area code,
- // which together with subscriber number constitute the national
- // significant number. It is sometimes okay to dial the subscriber
- // number only when dialing in the same area. This function will return
- // true if the subscriber-number-only version is passed in. On the other
- // hand, because IsValidNumber() validates using information on both
- // starting digits (for fixed line numbers, that would most likely be
- // area codes) and length (obviously includes the length of area codes
- // for fixed line numbers), it will return false for the
- // subscriber-number-only version.
- ValidationResult IsPossibleNumberWithReason(const PhoneNumber& number) const;
-
- // Convenience wrapper around IsPossibleNumberWithReason. Instead of returning
- // the reason for failure, this method returns a boolean value.
- bool IsPossibleNumber(const PhoneNumber& number) const;
-
- // Checks whether a phone number is a possible number given a number in the
- // form of a string, and the country where the number could be dialed from.
- // It provides a more lenient check than IsValidNumber(). See
- // IsPossibleNumber(const PhoneNumber& number) for details.
- //
- // This method first parses the number, then invokes
- // IsPossibleNumber(const PhoneNumber& number) with the resultant PhoneNumber
- // object.
- //
- // region_dialing_from represents the region that we are expecting the number
- // to be dialed from. Note this is different from the region where the number
- // belongs. For example, the number +1 650 253 0000 is a number that belongs
- // to US. When written in this form, it could be dialed from any region. When
- // it is written as 00 1 650 253 0000, it could be dialed from any region
- // which uses an international dialling prefix of 00. When it is written as
- // 650 253 0000, it could only be dialed from within the US, and when written
- // as 253 0000, it could only be dialed from within a smaller area in the US
- // (Mountain View, CA, to be more specific).
- //
- // The country_dialing_from parameter is an ISO 3166-1 two-letter country code
- // string.
- bool IsPossibleNumberForString(
- const string& number,
- const string& country_dialing_from) const;
-
- // Gets a valid fixed-line number for the specified region. Returns false if
- // the region was unknown.
- bool GetExampleNumber(const string& region_code,
- PhoneNumber* number) const;
-
- // Gets a valid number of the specified type for the specified region.
- // Returns false if the region was unknown or if no example number of that
- // type could be found.
- //
- // The region_code parameter is an ISO 3166-1 two-letter country code string.
- bool GetExampleNumberForType(const string& region_code,
- PhoneNumberType type,
- PhoneNumber* number) const;
-
- // Parses a string and returns it in proto buffer format. This method will
- // return an error like INVALID_COUNTRY_CODE if the number is not considered
- // to be a possible number, and NO_PARSING_ERROR if it parsed correctly. Note
- // that validation of whether the number is actually a valid number for a
- // particular region is not performed. This can be done separately with
- // IsValidNumber().
- //
- // default_region represents the country that we are expecting the number to
- // be from. This is only used if the number being parsed is not written in
- // international format. The country_code for the number in this case would be
- // stored as that of the default country supplied. If the number is guaranteed
- // to start with a '+' followed by the country calling code, then
- // "ZZ" can be supplied.
- //
- // The default_country parameter is an ISO 3166-1 two-letter country code
- // string.
- ErrorType Parse(const string& number_to_parse,
- const string& default_country,
- PhoneNumber* number) const;
- // Parses a string and returns it in proto buffer format. This method differs
- // from Parse() in that it always populates the raw_input field of the
- // protocol buffer with number_to_parse as well as the country_code_source
- // field.
- //
- // The default_country parameter is an ISO 3166-1 two-letter country code
- // string.
- ErrorType ParseAndKeepRawInput(const string& number_to_parse,
- const string& default_country,
- PhoneNumber* number) const;
-
- // Takes two phone numbers and compares them for equality.
- //
- // Returns EXACT_MATCH if the country calling code, NSN, presence of a leading
- // zero for Italian numbers and any extension present are the same.
- // Returns NSN_MATCH if either or both has no country calling code specified,
- // and the NSNs and extensions are the same.
- // Returns SHORT_NSN_MATCH if either or both has no country calling code
- // specified, or the country calling code specified is the same, and one NSN
- // could be a shorter version of the other number. This includes the case
- // where one has an extension specified, and the other does not.
- // Returns NO_MATCH otherwise.
- // For example, the numbers +1 345 657 1234 and 657 1234 are a
- // SHORT_NSN_MATCH. The numbers +1 345 657 1234 and 345 657 are a NO_MATCH.
- MatchType IsNumberMatch(const PhoneNumber& first_number,
- const PhoneNumber& second_number) const;
-
- // Takes two phone numbers as strings and compares them for equality. This
- // is a convenience wrapper for IsNumberMatch(PhoneNumber firstNumber,
- // PhoneNumber secondNumber). No default region is known.
- // Returns INVALID_NUMBER if either number cannot be parsed into a phone
- // number.
- MatchType IsNumberMatchWithTwoStrings(const string& first_number,
- const string& second_number) const;
-
- // Takes two phone numbers and compares them for equality. This is a
- // convenience wrapper for IsNumberMatch(PhoneNumber firstNumber,
- // PhoneNumber secondNumber). No default region is known.
- // Returns INVALID_NUMBER if second_number cannot be parsed into a phone
- // number.
- MatchType IsNumberMatchWithOneString(const PhoneNumber& first_number,
- const string& second_number) const;
-
- // Implement this 'interface' to override the way metadatas are fetched.
- // Useful for testing injecting stable metadatas.
- class MetadataProvider {
- public:
- virtual ~MetadataProvider() {}
-
- // Returns a pair containing a pointer to the data and its size
- virtual pair<const void*, unsigned> operator()() = 0;
- };
-
- // Override the default logging system. The provided adapter destruction is
- // handled by this class (don't delete it).
- static void SetLoggerAdapter(LoggerAdapter* logger_adapter);
-
- friend bool ConvertFromTelephoneNumberProto(
- const TelephoneNumber& proto_to_convert,
- PhoneNumber* new_proto);
- friend bool ConvertToTelephoneNumberProto(const PhoneNumber& proto_to_convert,
- TelephoneNumber* resulting_proto);
-
- protected:
- // Check whether the country_calling_code is from a country whose national
- // significant number could contain a leading zero. An example of such a
- // country is Italy.
- bool IsLeadingZeroPossible(int country_calling_code) const;
-
- private:
- typedef pair<int, list<string>*> IntRegionsPair;
-
- // The minimum and maximum length of the national significant number.
- static const size_t kMinLengthForNsn = 3;
- static const size_t kMaxLengthForNsn = 15;
-
- // A mapping from a country calling code to a region code which denotes the
- // region represented by that country calling code. Note countries under
- // NANPA share the country calling code 1 and Russia and Kazakhstan share the
- // country calling code 7. Under this map, 1 is mapped to region code "US" and
- // 7 is mapped to region code "RU". This is implemented as a sorted vector to
- // achieve better performance.
- //
- // Region codes are ISO 3166-1 two-letter country code strings.
- scoped_ptr<vector<IntRegionsPair> > country_calling_code_to_region_code_map_;
-
- struct CompareFirst {
- bool operator()(const IntRegionsPair& p1,
- const IntRegionsPair& p2) const {
- return p1.first < p2.first;
- }
- };
-
- // The set of regions that share country calling code 1.
- scoped_ptr<set<string> > nanpa_regions_;
- static const int kNanpaCountryCode = 1;
-
- // A mapping from a region code to a PhoneMetadata for that region.
- // Region codes are ISO 3166-1 two-letter country code strings.
- scoped_ptr<map<string, PhoneMetadata> > region_to_metadata_map_;
-
- bool LoadMetadata(PhoneMetadataCollection* metadata,
- MetadataProvider& provider);
-
- explicit PhoneNumberUtil(MetadataProvider* provider = 0);
- ~PhoneNumberUtil();
-
- // Gets all the supported regions.
- void GetSupportedRegions(set<string>* regions) const;
-
- // Returns the national dialling prefix for a specific region. For example,
- // this would be 1 for the United States, and 0 for New Zealand. Set
- // stripNonDigits to true to strip symbols like "~" (which indicates a wait
- // for a dialling tone) from the prefix returned. If no national prefix is
- // present, we return an empty string.
- //
- // Set strip_non_digits to true to strip non-digits from the national
- // dialling prefix.
- void GetNddPrefixForRegion(const string& region_code,
- bool strip_non_digits,
- string* national_prefix) const;
-
- // Helper function to check region code is not unknown or null.
- //
- // The region_code parameter is an ISO 3166-1 two-letter country code string.
- bool IsValidRegionCode(const string& region_code) const;
-
- // Helper function to check region code is not unknown. The
- // country_calling_code and number supplied is used only for the resultant log
- // message.
- //
- // The region_code parameter is an ISO 3166-1 two-letter country code string.
- bool HasValidRegionCode(const string& region_code,
- int country_code,
- const string& number) const;
-
- // The region_code parameter is an ISO 3166-1 two-letter country code string.
- const i18n::phonenumbers::PhoneMetadata* GetMetadataForRegion(
- const string& region_code) const;
-
- void GetRegionCodesForCountryCallingCode(
- int country_calling_code,
- list<string>* region_codes) const;
-
- // Simple wrapper of FormatNationalNumberWithCarrier for the common case of
- // no carrier code.
- //
- // The region_code parameter is an ISO 3166-1 two-letter country code string.
- void FormatNationalNumber(const string& number,
- const string& region_code,
- PhoneNumberFormat number_format,
- string* formatted_number) const;
-
- // The region_code parameter is an ISO 3166-1 two-letter country code string.
- void FormatNationalNumberWithCarrier(const string& number,
- const string& region_code,
- PhoneNumberFormat number_format,
- const string& carrier_code,
- string* formatted_number) const;
-
- // The region_code parameter is an ISO 3166-1 two-letter country code string.
- void MaybeGetFormattedExtension(
- const PhoneNumber& number,
- const string& region_code,
- PhoneNumberFormat number_format,
- string* extension) const;
-
- // The region_code parameter is an ISO 3166-1 two-letter country code string.
- void FormatExtension(const string& extension_digits,
- const string& region_code,
- string* extension) const;
-
- void GetRegionCodeForNumberFromRegionList(
- const PhoneNumber& number,
- const list<string>& region_codes,
- string* region_code) const;
-
- void Normalize(string* number) const;
- PhoneNumber::CountryCodeSource MaybeStripInternationalPrefixAndNormalize(
- const string& possible_idd_prefix,
- string* number) const;
-
- static void MaybeStripNationalPrefixAndCarrierCode(
- const PhoneMetadata& metadata,
- string* number,
- string* carrier_code);
-
- static void ExtractPossibleNumber(const string& number,
- string* extracted_number);
-
- static bool IsViablePhoneNumber(const string& number);
-
- static bool MaybeStripExtension(string* number, string* extension);
-
- int ExtractCountryCode(string* national_number) const;
- ErrorType MaybeExtractCountryCode(
- const PhoneMetadata* default_region_metadata,
- bool keepRawInput,
- string* national_number,
- PhoneNumber* phone_number) const;
-
- // The default_region parameter is an ISO 3166-1 two-letter country code
- // string.
- bool CheckRegionForParsing(
- const string& number_to_parse,
- const string& default_region) const;
-
- // The default_region parameter is an ISO 3166-1 two-letter country code
- // string.
- ErrorType ParseHelper(const string& number_to_parse,
- const string& default_region,
- bool keep_raw_input,
- bool check_region,
- PhoneNumber* phone_number) const;
-
- DISALLOW_COPY_AND_ASSIGN(PhoneNumberUtil);
-};
-
-} // namespace phonenumbers
-} // namespace i18n
-
-#endif // I18N_PHONENUMBERS_PHONENUMBERUTIL_H_
diff --git a/third_party/libphonenumber/cpp/src/phonenumberutil_test.cc b/third_party/libphonenumber/cpp/src/phonenumberutil_test.cc
deleted file mode 100644
index 3ef3fa7..0000000
--- a/third_party/libphonenumber/cpp/src/phonenumberutil_test.cc
+++ /dev/null
@@ -1,2866 +0,0 @@
-// Copyright (C) 2009 Google Inc.
-//
-// 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.
-
-// Author: Shaopeng Jia
-// Author: Lara Rennie
-// Open-sourced by: Philippe Liard
-
-#include <iostream>
-#include <set>
-#include <string>
-
-#include <gtest/gtest.h>
-
-#include "phonemetadata.pb.h"
-#include "phonenumber.h"
-#include "phonenumber.pb.h"
-#include "phonenumberutil.h"
-#include "regexp_adapter.h"
-#include "test_metadata.h"
-
-namespace i18n {
-namespace phonenumbers {
-
-using std::endl;
-using std::make_pair;
-using std::ostream;
-
-using google::protobuf::RepeatedPtrField;
-
-namespace {
-
-// Class containing string constants of region codes for easier testing.
-class RegionCode {
- public:
- static const string& AD() {
- static const string s = "AD";
- return s;
- }
-
- static const string& AO() {
- static const string s = "AO";
- return s;
- }
-
- static const string& AR() {
- static const string s = "AR";
- return s;
- }
-
- static const string& AU() {
- static const string s = "AU";
- return s;
- }
-
- static const string& BS() {
- static const string s = "BS";
- return s;
- }
-
- static const string& CN() {
- static const string s = "CN";
- return s;
- }
-
- static const string& CS() {
- static const string s = "CS";
- return s;
- }
-
- static const string& DE() {
- static const string s = "DE";
- return s;
- }
-
- static const string& GB() {
- static const string s = "GB";
- return s;
- }
-
- static const string& IT() {
- static const string s = "IT";
- return s;
- }
-
- static const string& KR() {
- static const string s = "KR";
- return s;
- }
-
- static const string& MX() {
- static const string s = "MX";
- return s;
- }
-
- static const string& NZ() {
- static const string s = "NZ";
- return s;
- }
-
- static const string& PL() {
- static const string s = "PL";
- return s;
- }
-
- static const string& RE() {
- static const string s = "RE";
- return s;
- }
-
- static const string& SG() {
- static const string s = "SG";
- return s;
- }
-
- static const string& US() {
- static const string s = "US";
- return s;
- }
-
- static const string& YT() {
- static const string s = "YT";
- return s;
- }
-
- // Official code for the unknown region.
- static const string& ZZ() {
- static const string s = "ZZ";
- return s;
- }
-};
-
-} // namespace
-
-class TestMetadataProvider : public PhoneNumberUtil::MetadataProvider {
- public:
- virtual ~TestMetadataProvider() {}
-
- pair<const void*, unsigned> operator()() {
- return make_pair(test_metadata_get(), test_metadata_size());
- }
-};
-
-class PhoneNumberUtilTest : public testing::Test {
- protected:
- PhoneNumberUtilTest() : phone_util_(&provider_) {}
-
- // Wrapper functions for private functions that we want to test.
- const PhoneMetadata* GetPhoneMetadata(const string& region_code) const {
- return phone_util_.GetMetadataForRegion(region_code);
- }
-
- void GetSupportedRegions(set<string>* regions) {
- phone_util_.GetSupportedRegions(regions);
- }
-
- void ExtractPossibleNumber(const string& number,
- string* extracted_number) const {
- PhoneNumberUtil::ExtractPossibleNumber(number, extracted_number);
- }
-
- bool IsViablePhoneNumber(const string& number) const {
- return PhoneNumberUtil::IsViablePhoneNumber(number);
- }
-
- void Normalize(string* number) const {
- phone_util_.Normalize(number);
- }
-
- bool IsLeadingZeroPossible(int country_calling_code) const {
- return phone_util_.IsLeadingZeroPossible(country_calling_code);
- }
-
- PhoneNumber::CountryCodeSource MaybeStripInternationalPrefixAndNormalize(
- const string& possible_idd_prefix,
- string* number) const {
- return phone_util_.MaybeStripInternationalPrefixAndNormalize(
- possible_idd_prefix,
- number);
- }
-
- void MaybeStripNationalPrefixAndCarrierCode(const PhoneMetadata& metadata,
- string* number,
- string* carrier_code) const {
- PhoneNumberUtil::MaybeStripNationalPrefixAndCarrierCode(metadata, number,
- carrier_code);
- }
-
- bool MaybeStripExtension(string* number, string* extension) const {
- return PhoneNumberUtil::MaybeStripExtension(number, extension);
- }
-
- PhoneNumberUtil::ErrorType MaybeExtractCountryCode(
- const PhoneMetadata* default_region_metadata,
- bool keep_raw_input,
- string* national_number,
- PhoneNumber* phone_number) const {
- return phone_util_.MaybeExtractCountryCode(default_region_metadata,
- keep_raw_input,
- national_number,
- phone_number);
- }
-
- void GetNddPrefixForRegion(const string& region,
- bool strip_non_digits,
- string* ndd_prefix) const {
- // For testing purposes, we check this is empty first.
- ndd_prefix->clear();
- phone_util_.GetNddPrefixForRegion(region, strip_non_digits, ndd_prefix);
- }
-
- static bool Equals(const PhoneNumberDesc& expected_number,
- const PhoneNumberDesc& actual_number) {
- return ExactlySameAs(expected_number, actual_number);
- }
-
- TestMetadataProvider provider_;
- PhoneNumberUtil phone_util_;
-};
-
-// Provides PhoneNumber comparison operators to support the use of EXPECT_EQ and
-// EXPECT_NE in the unittests.
-bool operator==(const PhoneNumber& number1, const PhoneNumber& number2) {
- return ExactlySameAs(number1, number2);
-}
-
-bool operator!=(const PhoneNumber& number1, const PhoneNumber& number2) {
- return !(number1 == number2);
-}
-
-// Needed by Google Test to display errors.
-ostream& operator<<(ostream& os, const PhoneNumber& number) {
- os << endl
- << "country_code: " << number.country_code() << endl
- << "national_number: " << number.national_number() << endl;
- if (number.has_extension()) {
- os << "extension: " << number.extension() << endl;
- }
- if (number.has_italian_leading_zero()) {
- os << "italian_leading_zero: " << number.italian_leading_zero() << endl;
- }
- if (number.has_raw_input()) {
- os << "raw_input: " << number.raw_input() << endl;
- }
- if (number.has_country_code_source()) {
- os << "country_code_source: " << number.country_code_source() << endl;
- }
- if (number.has_preferred_domestic_carrier_code()) {
- os << "preferred_domestic_carrier_code: "
- << number.preferred_domestic_carrier_code() << endl;
- }
- return os;
-}
-
-TEST_F(PhoneNumberUtilTest, GetSupportedRegions) {
- set<string> regions;
-
- GetSupportedRegions(&regions);
- EXPECT_GT(regions.size(), 0U);
-}
-
-TEST_F(PhoneNumberUtilTest, GetInstanceLoadUSMetadata) {
- const PhoneMetadata* metadata = GetPhoneMetadata(RegionCode::US());
- EXPECT_EQ("US", metadata->id());
- EXPECT_EQ(1, metadata->country_code());
- EXPECT_EQ("011", metadata->international_prefix());
- EXPECT_TRUE(metadata->has_national_prefix());
- ASSERT_EQ(2, metadata->number_format_size());
- EXPECT_EQ("(\\d{3})(\\d{3})(\\d{4})",
- metadata->number_format(0).pattern());
- EXPECT_EQ("$1 $2 $3", metadata->number_format(0).format());
- EXPECT_EQ("[13-9]\\d{9}|2[0-35-9]\\d{8}",
- metadata->general_desc().national_number_pattern());
- EXPECT_EQ("\\d{7}(?:\\d{3})?",
- metadata->general_desc().possible_number_pattern());
- EXPECT_TRUE(Equals(metadata->general_desc(), metadata->fixed_line()));
- EXPECT_EQ("\\d{10}", metadata->toll_free().possible_number_pattern());
- EXPECT_EQ("900\\d{7}", metadata->premium_rate().national_number_pattern());
- // No shared-cost data is available, so it should be initialised to "NA".
- EXPECT_EQ("NA", metadata->shared_cost().national_number_pattern());
- EXPECT_EQ("NA", metadata->shared_cost().possible_number_pattern());
-}
-
-TEST_F(PhoneNumberUtilTest, GetInstanceLoadDEMetadata) {
- const PhoneMetadata* metadata = GetPhoneMetadata(RegionCode::DE());
- EXPECT_EQ("DE", metadata->id());
- EXPECT_EQ(49, metadata->country_code());
- EXPECT_EQ("00", metadata->international_prefix());
- EXPECT_EQ("0", metadata->national_prefix());
- ASSERT_EQ(6, metadata->number_format_size());
- EXPECT_EQ(1, metadata->number_format(5).leading_digits_pattern_size());
- EXPECT_EQ("900", metadata->number_format(5).leading_digits_pattern(0));
- EXPECT_EQ("(\\d{3})(\\d{3,4})(\\d{4})",
- metadata->number_format(5).pattern());
- EXPECT_EQ("$1 $2 $3", metadata->number_format(5).format());
- EXPECT_EQ("(?:[24-6]\\d{2}|3[03-9]\\d|[789](?:[1-9]\\d|0[2-9]))\\d{3,8}",
- metadata->fixed_line().national_number_pattern());
- EXPECT_EQ("\\d{2,14}", metadata->fixed_line().possible_number_pattern());
- EXPECT_EQ("30123456", metadata->fixed_line().example_number());
- EXPECT_EQ("\\d{10}", metadata->toll_free().possible_number_pattern());
- EXPECT_EQ("900([135]\\d{6}|9\\d{7})",
- metadata->premium_rate().national_number_pattern());
-}
-
-TEST_F(PhoneNumberUtilTest, GetInstanceLoadARMetadata) {
- const PhoneMetadata* metadata = GetPhoneMetadata(RegionCode::AR());
- EXPECT_EQ("AR", metadata->id());
- EXPECT_EQ(54, metadata->country_code());
- EXPECT_EQ("00", metadata->international_prefix());
- EXPECT_EQ("0", metadata->national_prefix());
- EXPECT_EQ("0(?:(11|343|3715)15)?", metadata->national_prefix_for_parsing());
- EXPECT_EQ("9$1", metadata->national_prefix_transform_rule());
- ASSERT_EQ(5, metadata->number_format_size());
- EXPECT_EQ("$1 15 $2-$3", metadata->number_format(2).format());
- EXPECT_EQ("9(\\d{4})(\\d{2})(\\d{4})", metadata->number_format(3).pattern());
- EXPECT_EQ("(9)(\\d{4})(\\d{2})(\\d{4})",
- metadata->intl_number_format(3).pattern());
- EXPECT_EQ("$1 $2 $3 $4", metadata->intl_number_format(3).format());
-}
-
-TEST_F(PhoneNumberUtilTest, GetNationalSignificantNumber) {
- PhoneNumber number;
- number.set_country_code(1);
- number.set_national_number(6502530000ULL);
- string national_significant_number;
- phone_util_.GetNationalSignificantNumber(number,
- &national_significant_number);
- EXPECT_EQ("6502530000", national_significant_number);
-
- // An Italian mobile number.
- national_significant_number.clear();
- number.set_country_code(39);
- number.set_national_number(312345678ULL);
- phone_util_.GetNationalSignificantNumber(number,
- &national_significant_number);
- EXPECT_EQ("312345678", national_significant_number);
-
- // An Italian fixed line number.
- national_significant_number.clear();
- number.set_country_code(39);
- number.set_national_number(236618300ULL);
- number.set_italian_leading_zero(true);
- phone_util_.GetNationalSignificantNumber(number,
- &national_significant_number);
- EXPECT_EQ("0236618300", national_significant_number);
-}
-
-TEST_F(PhoneNumberUtilTest, GetExampleNumber) {
- PhoneNumber de_number;
- de_number.set_country_code(49);
- de_number.set_national_number(30123456ULL);
- PhoneNumber test_number;
- bool success = phone_util_.GetExampleNumber(RegionCode::DE(), &test_number);
- EXPECT_TRUE(success);
- EXPECT_EQ(de_number, test_number);
- success = phone_util_.GetExampleNumberForType(RegionCode::DE(),
- PhoneNumberUtil::FIXED_LINE,
- &test_number);
- EXPECT_TRUE(success);
- EXPECT_EQ(de_number, test_number);
- test_number.Clear();
- success = phone_util_.GetExampleNumberForType(RegionCode::DE(),
- PhoneNumberUtil::MOBILE,
- &test_number);
- // Here we test that an example number was not returned, and that the number
- // passed in was not modified.
- EXPECT_FALSE(success);
- EXPECT_EQ(PhoneNumber::default_instance(), test_number);
- // For the US, the example number is placed under general description, and
- // hence should be used for both fixed line and mobile, so neither of these
- // should return null.
- test_number.Clear();
- success = phone_util_.GetExampleNumberForType(RegionCode::US(),
- PhoneNumberUtil::FIXED_LINE,
- &test_number);
- // Here we test that the call to get an example number succeeded, and that the
- // number passed in was modified.
- EXPECT_TRUE(success);
- EXPECT_NE(PhoneNumber::default_instance(), test_number);
- test_number.Clear();
- success = phone_util_.GetExampleNumberForType(RegionCode::US(),
- PhoneNumberUtil::MOBILE,
- &test_number);
- EXPECT_TRUE(success);
- EXPECT_NE(PhoneNumber::default_instance(), test_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatUSNumber) {
- PhoneNumber test_number;
- string formatted_number;
- test_number.set_country_code(1);
- test_number.set_national_number(6502530000ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("650 253 0000", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+1 650 253 0000", formatted_number);
-
- test_number.set_national_number(8002530000ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("800 253 0000", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+1 800 253 0000", formatted_number);
-
- test_number.set_national_number(9002530000ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("900 253 0000", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+1 900 253 0000", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::RFC3966, &formatted_number);
- EXPECT_EQ("+1-900-253-0000", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatBSNumber) {
- PhoneNumber test_number;
- string formatted_number;
- test_number.set_country_code(1);
- test_number.set_national_number(2421234567ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("242 123 4567", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+1 242 123 4567", formatted_number);
-
- test_number.set_national_number(8002530000ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("800 253 0000", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+1 800 253 0000", formatted_number);
-
- test_number.set_national_number(9002530000ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("900 253 0000", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+1 900 253 0000", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatGBNumber) {
- PhoneNumber test_number;
- string formatted_number;
- test_number.set_country_code(44);
- test_number.set_national_number(2087389353ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("(020) 8738 9353", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+44 20 8738 9353", formatted_number);
-
- test_number.set_national_number(7912345678ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("(07912) 345 678", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+44 7912 345 678", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatDENumber) {
- PhoneNumber test_number;
- string formatted_number;
- test_number.set_country_code(49);
- test_number.set_national_number(301234ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("030/1234", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+49 30/1234", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::RFC3966, &formatted_number);
- EXPECT_EQ("+49-30-1234", formatted_number);
-
- test_number.set_national_number(291123ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("0291 123", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+49 291 123", formatted_number);
-
- test_number.set_national_number(29112345678ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("0291 12345678", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+49 291 12345678", formatted_number);
-
- test_number.set_national_number(9123123ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("09123 123", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+49 9123 123", formatted_number);
-
- test_number.set_national_number(80212345ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("08021 2345", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+49 8021 2345", formatted_number);
-
- test_number.set_national_number(1234ULL);
- // Note this number is correctly formatted without national prefix. Most of
- // the numbers that are treated as invalid numbers by the library are short
- // numbers, and they are usually not dialed with national prefix.
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("1234", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+49 1234", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatITNumber) {
- PhoneNumber test_number;
- string formatted_number;
- test_number.set_country_code(39);
- test_number.set_national_number(236618300ULL);
- test_number.set_italian_leading_zero(true);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("02 3661 8300", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+39 02 3661 8300", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::E164,
- &formatted_number);
- EXPECT_EQ("+390236618300", formatted_number);
-
- test_number.set_national_number(345678901ULL);
- test_number.set_italian_leading_zero(false);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("345 678 901", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+39 345 678 901", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::E164,
- &formatted_number);
- EXPECT_EQ("+39345678901", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatAUNumber) {
- PhoneNumber test_number;
- string formatted_number;
- test_number.set_country_code(61);
- test_number.set_national_number(236618300ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("02 3661 8300", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+61 2 3661 8300", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::E164,
- &formatted_number);
- EXPECT_EQ("+61236618300", formatted_number);
-
- test_number.set_national_number(1800123456ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("1800 123 456", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+61 1800 123 456", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::E164,
- &formatted_number);
- EXPECT_EQ("+611800123456", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatARNumber) {
- PhoneNumber test_number;
- string formatted_number;
- test_number.set_country_code(54);
- test_number.set_national_number(1187654321ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("011 8765-4321", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+54 11 8765-4321", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::E164,
- &formatted_number);
- EXPECT_EQ("+541187654321", formatted_number);
-
- test_number.set_national_number(91187654321ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("011 15 8765-4321", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+54 9 11 8765 4321", formatted_number);
- phone_util_.Format(test_number, PhoneNumberUtil::E164,
- &formatted_number);
- EXPECT_EQ("+5491187654321", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatOutOfCountryCallingNumber) {
- PhoneNumber test_number;
- string formatted_number;
- test_number.set_country_code(1);
- test_number.set_national_number(9002530000ULL);
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::DE(),
- &formatted_number);
- EXPECT_EQ("00 1 900 253 0000", formatted_number);
-
- test_number.set_national_number(6502530000ULL);
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::BS(),
- &formatted_number);
- EXPECT_EQ("1 650 253 0000", formatted_number);
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::PL(),
- &formatted_number);
- EXPECT_EQ("0~0 1 650 253 0000", formatted_number);
-
- test_number.set_country_code(44);
- test_number.set_national_number(7912345678ULL);
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::US(),
- &formatted_number);
- EXPECT_EQ("011 44 7912 345 678", formatted_number);
-
- test_number.set_country_code(49);
- test_number.set_national_number(1234ULL);
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::GB(),
- &formatted_number);
- EXPECT_EQ("00 49 1234", formatted_number);
- // Note this number is correctly formatted without national prefix. Most of
- // the numbers that are treated as invalid numbers by the library are short
- // numbers, and they are usually not dialed with national prefix.
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::DE(),
- &formatted_number);
- EXPECT_EQ("1234", formatted_number);
-
- test_number.set_country_code(39);
- test_number.set_national_number(236618300ULL);
- test_number.set_italian_leading_zero(true);
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::US(),
- &formatted_number);
- EXPECT_EQ("011 39 02 3661 8300", formatted_number);
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::IT(),
- &formatted_number);
- EXPECT_EQ("02 3661 8300", formatted_number);
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::SG(),
- &formatted_number);
- EXPECT_EQ("+39 02 3661 8300", formatted_number);
-
- test_number.set_country_code(65);
- test_number.set_national_number(94777892ULL);
- test_number.set_italian_leading_zero(false);
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::SG(),
- &formatted_number);
- EXPECT_EQ("9477 7892", formatted_number);
-
- test_number.set_country_code(54);
- test_number.set_national_number(91187654321ULL);
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::US(),
- &formatted_number);
- EXPECT_EQ("011 54 9 11 8765 4321", formatted_number);
-
- test_number.set_extension("1234");
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::US(),
- &formatted_number);
- EXPECT_EQ("011 54 9 11 8765 4321 ext. 1234", formatted_number);
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::AU(),
- &formatted_number);
- EXPECT_EQ("0011 54 9 11 8765 4321 ext. 1234", formatted_number);
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::AR(),
- &formatted_number);
- EXPECT_EQ("011 15 8765-4321 ext. 1234", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatOutOfCountryWithPreferredIntlPrefix) {
- PhoneNumber test_number;
- string formatted_number;
- test_number.set_country_code(39);
- test_number.set_national_number(236618300ULL);
- test_number.set_italian_leading_zero(true);
- // This should use 0011, since that is the preferred international prefix
- // (both 0011 and 0012 are accepted as possible international prefixes in our
- // test metadta.)
- phone_util_.FormatOutOfCountryCallingNumber(test_number, RegionCode::AU(),
- &formatted_number);
- EXPECT_EQ("0011 39 02 3661 8300", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatOutOfCountryKeepingAlphaChars) {
- PhoneNumber alpha_numeric_number;
- string formatted_number;
- alpha_numeric_number.set_country_code(1);
- alpha_numeric_number.set_national_number(8007493524ULL);
- alpha_numeric_number.set_raw_input("1800 six-flag");
- phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number,
- RegionCode::AU(),
- &formatted_number);
- EXPECT_EQ("0011 1 800 SIX-FLAG", formatted_number);
-
- formatted_number.clear();
- alpha_numeric_number.set_raw_input("1-800-SIX-flag");
- phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number,
- RegionCode::AU(),
- &formatted_number);
- EXPECT_EQ("0011 1 800-SIX-FLAG", formatted_number);
-
- formatted_number.clear();
- alpha_numeric_number.set_raw_input("Call us from UK: 00 1 800 SIX-flag");
- phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number,
- RegionCode::AU(),
- &formatted_number);
- EXPECT_EQ("0011 1 800 SIX-FLAG", formatted_number);
-
- formatted_number.clear();
- alpha_numeric_number.set_raw_input("800 SIX-flag");
- phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number,
- RegionCode::AU(),
- &formatted_number);
- EXPECT_EQ("0011 1 800 SIX-FLAG", formatted_number);
-
- // Formatting from within the NANPA region.
- formatted_number.clear();
- phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number,
- RegionCode::US(),
- &formatted_number);
- EXPECT_EQ("1 800 SIX-FLAG", formatted_number);
- formatted_number.clear();
- phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number,
- RegionCode::BS(),
- &formatted_number);
- EXPECT_EQ("1 800 SIX-FLAG", formatted_number);
-
- // Testing that if the raw input doesn't exist, it is formatted using
- // FormatOutOfCountryCallingNumber.
- alpha_numeric_number.clear_raw_input();
- formatted_number.clear();
- phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number,
- RegionCode::DE(),
- &formatted_number);
- EXPECT_EQ("00 1 800 749 3524", formatted_number);
-
- // Testing AU alpha number formatted from Australia.
- alpha_numeric_number.set_country_code(61);
- alpha_numeric_number.set_national_number(827493524ULL);
- alpha_numeric_number.set_raw_input("+61 82749-FLAG");
- formatted_number.clear();
- phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number,
- RegionCode::AU(),
- &formatted_number);
- // This number should have the national prefix prefixed.
- EXPECT_EQ("082749-FLAG", formatted_number);
-
- alpha_numeric_number.set_raw_input("082749-FLAG");
- formatted_number.clear();
- phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number,
- RegionCode::AU(),
- &formatted_number);
- EXPECT_EQ("082749-FLAG", formatted_number);
-
- alpha_numeric_number.set_national_number(18007493524ULL);
- alpha_numeric_number.set_raw_input("1-800-SIX-flag");
- formatted_number.clear();
- phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number,
- RegionCode::AU(),
- &formatted_number);
- // This number should not have the national prefix prefixed, in accordance
- // with the override for this specific formatting rule.
- EXPECT_EQ("1-800-SIX-FLAG", formatted_number);
- // The metadata should not be permanently changed, since we copied it before
- // modifying patterns. Here we check this.
- formatted_number.clear();
- alpha_numeric_number.set_national_number(1800749352ULL);
- phone_util_.FormatOutOfCountryCallingNumber(alpha_numeric_number,
- RegionCode::AU(),
- &formatted_number);
- EXPECT_EQ("1800 749 352", formatted_number);
-
- // Testing a country with multiple international prefixes.
- formatted_number.clear();
- phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number,
- RegionCode::SG(),
- &formatted_number);
- EXPECT_EQ("+61 1-800-SIX-FLAG", formatted_number);
-
- // Testing the case with an invalid country code.
- formatted_number.clear();
- alpha_numeric_number.set_country_code(0);
- alpha_numeric_number.set_national_number(18007493524ULL);
- alpha_numeric_number.set_raw_input("1-800-SIX-flag");
- phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number,
- RegionCode::DE(),
- &formatted_number);
- // Uses the raw input only.
- EXPECT_EQ("1-800-SIX-flag", formatted_number);
-
- // Testing the case of an invalid alpha number.
- formatted_number.clear();
- alpha_numeric_number.set_country_code(1);
- alpha_numeric_number.set_national_number(80749ULL);
- alpha_numeric_number.set_raw_input("180-SIX");
- phone_util_.FormatOutOfCountryKeepingAlphaChars(alpha_numeric_number,
- RegionCode::DE(),
- &formatted_number);
- // No country-code stripping can be done.
- EXPECT_EQ("00 1 180-SIX", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatWithCarrierCode) {
- // We only support this for AR in our test metadata.
- PhoneNumber ar_number;
- string formatted_number;
- ar_number.set_country_code(54);
- ar_number.set_national_number(91234125678ULL);
- phone_util_.Format(ar_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("01234 12-5678", formatted_number);
- // Test formatting with a carrier code.
- phone_util_.FormatNationalNumberWithCarrierCode(ar_number, "15",
- &formatted_number);
- EXPECT_EQ("01234 15 12-5678", formatted_number);
- phone_util_.FormatNationalNumberWithCarrierCode(ar_number, "",
- &formatted_number);
- EXPECT_EQ("01234 12-5678", formatted_number);
- // Here the international rule is used, so no carrier code should be present.
- phone_util_.Format(ar_number, PhoneNumberUtil::E164, &formatted_number);
- EXPECT_EQ("+5491234125678", formatted_number);
- // We don't support this for the US so there should be no change.
- PhoneNumber us_number;
- us_number.set_country_code(1);
- us_number.set_national_number(4241231234ULL);
- phone_util_.Format(us_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("424 123 1234", formatted_number);
- phone_util_.FormatNationalNumberWithCarrierCode(us_number, "15",
- &formatted_number);
- EXPECT_EQ("424 123 1234", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatWithPreferredCarrierCode) {
- // We only support this for AR in our test metadata.
- PhoneNumber ar_number;
- string formatted_number;
- ar_number.set_country_code(54);
- ar_number.set_national_number(91234125678ULL);
- // Test formatting with no preferred carrier code stored in the number itself.
- phone_util_.FormatNationalNumberWithPreferredCarrierCode(ar_number, "15",
- &formatted_number);
- EXPECT_EQ("01234 15 12-5678", formatted_number);
- phone_util_.FormatNationalNumberWithPreferredCarrierCode(ar_number, "",
- &formatted_number);
- EXPECT_EQ("01234 12-5678", formatted_number);
- // Test formatting with preferred carrier code present.
- ar_number.set_preferred_domestic_carrier_code("19");
- phone_util_.Format(ar_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("01234 12-5678", formatted_number);
- phone_util_.FormatNationalNumberWithPreferredCarrierCode(ar_number, "15",
- &formatted_number);
- EXPECT_EQ("01234 19 12-5678", formatted_number);
- phone_util_.FormatNationalNumberWithPreferredCarrierCode(ar_number, "",
- &formatted_number);
- EXPECT_EQ("01234 19 12-5678", formatted_number);
- // When the preferred_domestic_carrier_code is present (even when it contains
- // an empty string), use it instead of the default carrier code passed in.
- ar_number.set_preferred_domestic_carrier_code("");
- phone_util_.FormatNationalNumberWithPreferredCarrierCode(ar_number, "15",
- &formatted_number);
- EXPECT_EQ("01234 12-5678", formatted_number);
- // We don't support this for the US so there should be no change.
- PhoneNumber us_number;
- us_number.set_country_code(1);
- us_number.set_national_number(4241231234ULL);
- us_number.set_preferred_domestic_carrier_code("99");
- phone_util_.Format(us_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("424 123 1234", formatted_number);
- phone_util_.FormatNationalNumberWithPreferredCarrierCode(us_number, "15",
- &formatted_number);
- EXPECT_EQ("424 123 1234", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatByPattern) {
- PhoneNumber test_number;
- string formatted_number;
- test_number.set_country_code(1);
- test_number.set_national_number(6502530000ULL);
-
- RepeatedPtrField<NumberFormat> number_formats;
- NumberFormat* number_format = number_formats.Add();
- number_format->set_pattern("(\\d{3})(\\d{3})(\\d{4})");
- number_format->set_format("($1) $2-$3");
- phone_util_.FormatByPattern(test_number, PhoneNumberUtil::NATIONAL,
- number_formats,
- &formatted_number);
- EXPECT_EQ("(650) 253-0000", formatted_number);
- phone_util_.FormatByPattern(test_number, PhoneNumberUtil::INTERNATIONAL,
- number_formats,
- &formatted_number);
- EXPECT_EQ("+1 (650) 253-0000", formatted_number);
-
- // $NP is set to '1' for the US. Here we check that for other NANPA countries
- // the US rules are followed.
- number_format->set_national_prefix_formatting_rule("$NP ($FG)");
- number_format->set_format("$1 $2-$3");
- test_number.set_country_code(1);
- test_number.set_national_number(4168819999ULL);
- phone_util_.FormatByPattern(test_number, PhoneNumberUtil::NATIONAL,
- number_formats,
- &formatted_number);
- EXPECT_EQ("1 (416) 881-9999", formatted_number);
- phone_util_.FormatByPattern(test_number, PhoneNumberUtil::INTERNATIONAL,
- number_formats,
- &formatted_number);
- EXPECT_EQ("+1 416 881-9999", formatted_number);
-
- test_number.set_country_code(39);
- test_number.set_national_number(236618300ULL);
- test_number.set_italian_leading_zero(true);
- number_format->set_pattern("(\\d{2})(\\d{5})(\\d{3})");
- number_format->set_format("$1-$2 $3");
- phone_util_.FormatByPattern(test_number, PhoneNumberUtil::NATIONAL,
- number_formats,
- &formatted_number);
- EXPECT_EQ("02-36618 300", formatted_number);
- phone_util_.FormatByPattern(test_number, PhoneNumberUtil::INTERNATIONAL,
- number_formats,
- &formatted_number);
- EXPECT_EQ("+39 02-36618 300", formatted_number);
-
- test_number.set_country_code(44);
- test_number.set_national_number(2012345678ULL);
- test_number.set_italian_leading_zero(false);
- number_format->set_national_prefix_formatting_rule("$NP$FG");
- number_format->set_pattern("(\\d{2})(\\d{4})(\\d{4})");
- number_format->set_format("$1 $2 $3");
- phone_util_.FormatByPattern(test_number, PhoneNumberUtil::NATIONAL,
- number_formats,
- &formatted_number);
- EXPECT_EQ("020 1234 5678", formatted_number);
-
- number_format->set_national_prefix_formatting_rule("($NP$FG)");
- phone_util_.FormatByPattern(test_number, PhoneNumberUtil::NATIONAL,
- number_formats,
- &formatted_number);
- EXPECT_EQ("(020) 1234 5678", formatted_number);
- number_format->set_national_prefix_formatting_rule("");
- phone_util_.FormatByPattern(test_number, PhoneNumberUtil::NATIONAL,
- number_formats,
- &formatted_number);
- EXPECT_EQ("20 1234 5678", formatted_number);
- number_format->set_national_prefix_formatting_rule("");
- phone_util_.FormatByPattern(test_number, PhoneNumberUtil::INTERNATIONAL,
- number_formats,
- &formatted_number);
- EXPECT_EQ("+44 20 1234 5678", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatE164Number) {
- PhoneNumber test_number;
- string formatted_number;
- test_number.set_country_code(1);
- test_number.set_national_number(6502530000ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::E164, &formatted_number);
- EXPECT_EQ("+16502530000", formatted_number);
-
- test_number.set_country_code(49);
- test_number.set_national_number(301234ULL);
- phone_util_.Format(test_number, PhoneNumberUtil::E164, &formatted_number);
- EXPECT_EQ("+49301234", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FormatNumberWithExtension) {
- PhoneNumber nz_number;
- nz_number.set_country_code(64);
- nz_number.set_national_number(33316005ULL);
- nz_number.set_extension("1234");
- string formatted_number;
- // Uses default extension prefix:
- phone_util_.Format(nz_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("03-331 6005 ext. 1234", formatted_number);
- // Uses RFC 3966 syntax.
- phone_util_.Format(nz_number, PhoneNumberUtil::RFC3966, &formatted_number);
- EXPECT_EQ("+64-3-331-6005;ext=1234", formatted_number);
- // Extension prefix overridden in the territory information for the US:
- PhoneNumber us_number_with_extension;
- us_number_with_extension.set_country_code(1);
- us_number_with_extension.set_national_number(6502530000ULL);
- us_number_with_extension.set_extension("4567");
- phone_util_.Format(us_number_with_extension,
- PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("650 253 0000 extn. 4567", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, GetLengthOfGeographicalAreaCode) {
- PhoneNumber number;
- // Google MTV, which has area code "650".
- number.set_country_code(1);
- number.set_national_number(6502530000ULL);
- EXPECT_EQ(3, phone_util_.GetLengthOfGeographicalAreaCode(number));
-
- // A North America toll-free number, which has no area code.
- number.set_country_code(1);
- number.set_national_number(8002530000ULL);
- EXPECT_EQ(0, phone_util_.GetLengthOfGeographicalAreaCode(number));
-
- // An invalid US number (1 digit shorter), which has no area code.
- number.set_country_code(1);
- number.set_national_number(650253000ULL);
- EXPECT_EQ(0, phone_util_.GetLengthOfGeographicalAreaCode(number));
-
- // Google London, which has area code "20".
- number.set_country_code(44);
- number.set_national_number(2070313000ULL);
- EXPECT_EQ(2, phone_util_.GetLengthOfGeographicalAreaCode(number));
-
- // A UK mobile phone, which has no area code.
- number.set_country_code(44);
- number.set_national_number(7123456789ULL);
- EXPECT_EQ(0, phone_util_.GetLengthOfGeographicalAreaCode(number));
-
- // Google Buenos Aires, which has area code "11".
- number.set_country_code(54);
- number.set_national_number(1155303000ULL);
- EXPECT_EQ(2, phone_util_.GetLengthOfGeographicalAreaCode(number));
-
- // Google Sydney, which has area code "2".
- number.set_country_code(61);
- number.set_national_number(293744000ULL);
- EXPECT_EQ(1, phone_util_.GetLengthOfGeographicalAreaCode(number));
-
- // Google Singapore. Singapore has no area code and no national prefix.
- number.set_country_code(65);
- number.set_national_number(65218000ULL);
- EXPECT_EQ(0, phone_util_.GetLengthOfGeographicalAreaCode(number));
-}
-
-TEST_F(PhoneNumberUtilTest, GetLengthOfNationalDestinationCode) {
- PhoneNumber number;
- // Google MTV, which has national destination code (NDC) "650".
- number.set_country_code(1);
- number.set_national_number(6502530000ULL);
- EXPECT_EQ(3, phone_util_.GetLengthOfNationalDestinationCode(number));
-
- // A North America toll-free number, which has NDC "800".
- number.set_country_code(1);
- number.set_national_number(8002530000ULL);
- EXPECT_EQ(3, phone_util_.GetLengthOfNationalDestinationCode(number));
-
- // Google London, which has NDC "20".
- number.set_country_code(44);
- number.set_national_number(2070313000ULL);
- EXPECT_EQ(2, phone_util_.GetLengthOfNationalDestinationCode(number));
-
- // A UK mobile phone, which has NDC "7123"
- number.set_country_code(44);
- number.set_national_number(7123456789ULL);
- EXPECT_EQ(4, phone_util_.GetLengthOfNationalDestinationCode(number));
-
- // Google Buenos Aires, which has NDC "11".
- number.set_country_code(54);
- number.set_national_number(1155303000ULL);
- EXPECT_EQ(2, phone_util_.GetLengthOfNationalDestinationCode(number));
-
- // Google Sydney, which has NDC "2".
- number.set_country_code(61);
- number.set_national_number(293744000ULL);
- EXPECT_EQ(1, phone_util_.GetLengthOfNationalDestinationCode(number));
-
- // Google Singapore. Singapore has NDC "6521".
- number.set_country_code(65);
- number.set_national_number(65218000ULL);
- EXPECT_EQ(4, phone_util_.GetLengthOfNationalDestinationCode(number));
-
- // An invalid US number (1 digit shorter), which has no NDC.
- number.set_country_code(1);
- number.set_national_number(650253000ULL);
- EXPECT_EQ(0, phone_util_.GetLengthOfNationalDestinationCode(number));
-
- // A number containing an invalid country code, which shouldn't have any NDC.
- number.set_country_code(123);
- number.set_national_number(650253000ULL);
- EXPECT_EQ(0, phone_util_.GetLengthOfNationalDestinationCode(number));
-
- // A number that has only one group of digits after country code when
- // formatted in the international format.
- number.set_country_code(376);
- number.set_national_number(12345ULL);
- EXPECT_EQ(0, phone_util_.GetLengthOfNationalDestinationCode(number));
-
- // The same number above, but with an extension.
- number.set_country_code(376);
- number.set_national_number(12345ULL);
- number.set_extension("321");
- EXPECT_EQ(0, phone_util_.GetLengthOfNationalDestinationCode(number));
-}
-
-TEST_F(PhoneNumberUtilTest, ExtractPossibleNumber) {
- // Removes preceding funky punctuation and letters but leaves the rest
- // untouched.
- string extracted_number;
- ExtractPossibleNumber("Tel:0800-345-600", &extracted_number);
- EXPECT_EQ("0800-345-600", extracted_number);
- ExtractPossibleNumber("Tel:0800 FOR PIZZA", &extracted_number);
- EXPECT_EQ("0800 FOR PIZZA", extracted_number);
-
- // Should not remove plus sign.
- ExtractPossibleNumber("Tel:+800-345-600", &extracted_number);
- EXPECT_EQ("+800-345-600", extracted_number);
- // Should recognise wide digits as possible start values.
- ExtractPossibleNumber("023", &extracted_number);
- EXPECT_EQ("023", extracted_number);
- // Dashes are not possible start values and should be removed.
- ExtractPossibleNumber("Num-123", &extracted_number);
- EXPECT_EQ("123", extracted_number);
- // If not possible number present, return empty string.
- ExtractPossibleNumber("Num-....", &extracted_number);
- EXPECT_EQ("", extracted_number);
- // Leading brackets are stripped - these are not used when parsing.
- ExtractPossibleNumber("(650) 253-0000", &extracted_number);
- EXPECT_EQ("650) 253-0000", extracted_number);
-
- // Trailing non-alpha-numeric characters should be removed.
- ExtractPossibleNumber("(650) 253-0000..- ..", &extracted_number);
- EXPECT_EQ("650) 253-0000", extracted_number);
- ExtractPossibleNumber("(650) 253-0000.", &extracted_number);
- EXPECT_EQ("650) 253-0000", extracted_number);
- // This case has a trailing RTL char.
- ExtractPossibleNumber("(650) 253-0000‏", &extracted_number);
- EXPECT_EQ("650) 253-0000", extracted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, IsNANPACountry) {
- EXPECT_TRUE(phone_util_.IsNANPACountry(RegionCode::US()));
- EXPECT_TRUE(phone_util_.IsNANPACountry(RegionCode::BS()));
-}
-
-TEST_F(PhoneNumberUtilTest, IsValidNumber) {
- PhoneNumber us_number;
- us_number.set_country_code(1);
- us_number.set_national_number(6502530000ULL);
- EXPECT_TRUE(phone_util_.IsValidNumber(us_number));
-
- PhoneNumber it_number;
- it_number.set_country_code(39);
- it_number.set_national_number(236618300ULL);
- it_number.set_italian_leading_zero(true);
- EXPECT_TRUE(phone_util_.IsValidNumber(it_number));
-
- PhoneNumber gb_number;
- gb_number.set_country_code(44);
- gb_number.set_national_number(7912345678ULL);
- EXPECT_TRUE(phone_util_.IsValidNumber(gb_number));
-
- PhoneNumber nz_number;
- nz_number.set_country_code(64);
- nz_number.set_national_number(21387835ULL);
- EXPECT_TRUE(phone_util_.IsValidNumber(nz_number));
-}
-
-TEST_F(PhoneNumberUtilTest, IsValidForRegion) {
- // This number is valid for the Bahamas, but is not a valid US number.
- PhoneNumber bs_number;
- bs_number.set_country_code(1);
- bs_number.set_national_number(2423232345ULL);
- EXPECT_TRUE(phone_util_.IsValidNumber(bs_number));
- EXPECT_TRUE(phone_util_.IsValidNumberForRegion(bs_number, RegionCode::BS()));
- EXPECT_FALSE(phone_util_.IsValidNumberForRegion(bs_number, RegionCode::US()));
- bs_number.set_national_number(2421232345ULL);
- // This number is no longer valid.
- EXPECT_FALSE(phone_util_.IsValidNumber(bs_number));
-
- // La Mayotte and Réunion use 'leadingDigits' to differentiate them.
- PhoneNumber re_number;
- re_number.set_country_code(262);
- re_number.set_national_number(262123456ULL);
- EXPECT_TRUE(phone_util_.IsValidNumber(re_number));
- EXPECT_TRUE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::RE()));
- EXPECT_FALSE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::YT()));
- // Now change the number to be a number for La Mayotte.
- re_number.set_national_number(269601234ULL);
- EXPECT_TRUE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::YT()));
- EXPECT_FALSE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::RE()));
- // This number is no longer valid.
- re_number.set_national_number(269123456ULL);
- EXPECT_FALSE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::YT()));
- EXPECT_FALSE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::RE()));
- EXPECT_FALSE(phone_util_.IsValidNumber(re_number));
- // However, it should be recognised as from La Mayotte.
- string region_code;
- phone_util_.GetRegionCodeForNumber(re_number, &region_code);
- EXPECT_EQ("YT", region_code);
- // This number is valid in both places.
- re_number.set_national_number(800123456ULL);
- EXPECT_TRUE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::YT()));
- EXPECT_TRUE(phone_util_.IsValidNumberForRegion(re_number, RegionCode::RE()));
-}
-
-TEST_F(PhoneNumberUtilTest, IsNotValidNumber) {
- PhoneNumber us_number;
- us_number.set_country_code(1);
- us_number.set_national_number(2530000ULL);
- EXPECT_FALSE(phone_util_.IsValidNumber(us_number));
-
- PhoneNumber it_number;
- it_number.set_country_code(39);
- it_number.set_national_number(23661830000ULL);
- it_number.set_italian_leading_zero(true);
- EXPECT_FALSE(phone_util_.IsValidNumber(it_number));
-
- PhoneNumber gb_number;
- gb_number.set_country_code(44);
- gb_number.set_national_number(791234567ULL);
- EXPECT_FALSE(phone_util_.IsValidNumber(gb_number));
-
- PhoneNumber de_number;
- de_number.set_country_code(49);
- de_number.set_national_number(1234ULL);
- EXPECT_FALSE(phone_util_.IsValidNumber(de_number));
-
- PhoneNumber nz_number;
- nz_number.set_country_code(64);
- nz_number.set_national_number(3316005ULL);
- EXPECT_FALSE(phone_util_.IsValidNumber(nz_number));
-}
-
-TEST_F(PhoneNumberUtilTest, IsPossibleNumber) {
- PhoneNumber number;
- number.set_country_code(1);
- number.set_national_number(6502530000ULL);
- EXPECT_TRUE(phone_util_.IsPossibleNumber(number));
-
- number.set_country_code(1);
- number.set_national_number(2530000ULL);
- EXPECT_TRUE(phone_util_.IsPossibleNumber(number));
-
- number.set_country_code(44);
- number.set_national_number(2070313000ULL);
- EXPECT_TRUE(phone_util_.IsPossibleNumber(number));
-
- EXPECT_TRUE(phone_util_.IsPossibleNumberForString("+1 650 253 0000",
- RegionCode::US()));
- EXPECT_TRUE(phone_util_.IsPossibleNumberForString("+1 650 GOO OGLE",
- RegionCode::US()));
- EXPECT_TRUE(phone_util_.IsPossibleNumberForString("(650) 253-0000",
- RegionCode::US()));
- EXPECT_TRUE(phone_util_.IsPossibleNumberForString("253-0000",
- RegionCode::US()));
- EXPECT_TRUE(phone_util_.IsPossibleNumberForString("+1 650 253 0000",
- RegionCode::GB()));
- EXPECT_TRUE(phone_util_.IsPossibleNumberForString("+44 20 7031 3000",
- RegionCode::GB()));
- EXPECT_TRUE(phone_util_.IsPossibleNumberForString("(020) 7031 3000",
- RegionCode::GB()));
- EXPECT_TRUE(phone_util_.IsPossibleNumberForString("7031 3000",
- RegionCode::GB()));
- EXPECT_TRUE(phone_util_.IsPossibleNumberForString("3331 6005",
- RegionCode::NZ()));
-}
-
-TEST_F(PhoneNumberUtilTest, IsPossibleNumberWithReason) {
- // FYI, national numbers for country code +1 that are within 7 to 10 digits
- // are possible.
- PhoneNumber number;
- number.set_country_code(1);
- number.set_national_number(6502530000ULL);
- EXPECT_EQ(PhoneNumberUtil::IS_POSSIBLE,
- phone_util_.IsPossibleNumberWithReason(number));
-
- number.set_country_code(1);
- number.set_national_number(2530000ULL);
- EXPECT_EQ(PhoneNumberUtil::IS_POSSIBLE,
- phone_util_.IsPossibleNumberWithReason(number));
-
- number.set_country_code(0);
- number.set_national_number(2530000ULL);
- EXPECT_EQ(PhoneNumberUtil::INVALID_COUNTRY_CODE,
- phone_util_.IsPossibleNumberWithReason(number));
-
- number.set_country_code(1);
- number.set_national_number(253000ULL);
- EXPECT_EQ(PhoneNumberUtil::TOO_SHORT,
- phone_util_.IsPossibleNumberWithReason(number));
-
- number.set_country_code(1);
- number.set_national_number(65025300000ULL);
- EXPECT_EQ(PhoneNumberUtil::TOO_LONG,
- phone_util_.IsPossibleNumberWithReason(number));
-
- number.set_country_code(44);
- number.set_national_number(2070310000ULL);
- EXPECT_EQ(PhoneNumberUtil::IS_POSSIBLE,
- phone_util_.IsPossibleNumberWithReason(number));
-
- number.set_country_code(49);
- number.set_national_number(30123456ULL);
- EXPECT_EQ(PhoneNumberUtil::IS_POSSIBLE,
- phone_util_.IsPossibleNumberWithReason(number));
-
- number.set_country_code(65);
- number.set_national_number(1234567890ULL);
- EXPECT_EQ(PhoneNumberUtil::IS_POSSIBLE,
- phone_util_.IsPossibleNumberWithReason(number));
-
- // Try with number that we don't have metadata for.
- PhoneNumber ad_number;
- ad_number.set_country_code(376);
- ad_number.set_national_number(12345ULL);
- EXPECT_EQ(PhoneNumberUtil::IS_POSSIBLE,
- phone_util_.IsPossibleNumberWithReason(ad_number));
- ad_number.set_country_code(376);
- ad_number.set_national_number(13ULL);
- EXPECT_EQ(PhoneNumberUtil::TOO_SHORT,
- phone_util_.IsPossibleNumberWithReason(ad_number));
- ad_number.set_country_code(376);
- ad_number.set_national_number(1234567890123456ULL);
- EXPECT_EQ(PhoneNumberUtil::TOO_LONG,
- phone_util_.IsPossibleNumberWithReason(ad_number));
-}
-
-TEST_F(PhoneNumberUtilTest, IsNotPossibleNumber) {
- PhoneNumber number;
- number.set_country_code(1);
- number.set_national_number(65025300000ULL);
- EXPECT_FALSE(phone_util_.IsPossibleNumber(number));
-
- number.set_country_code(1);
- number.set_national_number(253000ULL);
- EXPECT_FALSE(phone_util_.IsPossibleNumber(number));
-
- number.set_country_code(44);
- number.set_national_number(300ULL);
- EXPECT_FALSE(phone_util_.IsPossibleNumber(number));
-
- EXPECT_FALSE(phone_util_.IsPossibleNumberForString("+1 650 253 00000",
- RegionCode::US()));
- EXPECT_FALSE(phone_util_.IsPossibleNumberForString("(650) 253-00000",
- RegionCode::US()));
- EXPECT_FALSE(phone_util_.IsPossibleNumberForString("I want a Pizza",
- RegionCode::US()));
- EXPECT_FALSE(phone_util_.IsPossibleNumberForString("253-000",
- RegionCode::US()));
- EXPECT_FALSE(phone_util_.IsPossibleNumberForString("1 3000",
- RegionCode::GB()));
- EXPECT_FALSE(phone_util_.IsPossibleNumberForString("+44 300",
- RegionCode::GB()));
-}
-
-TEST_F(PhoneNumberUtilTest, TruncateTooLongNumber) {
- // US number 650-253-0000, but entered with one additional digit at the end.
- PhoneNumber too_long_number;
- too_long_number.set_country_code(1);
- too_long_number.set_national_number(65025300001ULL);
- PhoneNumber valid_number;
- valid_number.set_country_code(1);
- valid_number.set_national_number(6502530000ULL);
- EXPECT_TRUE(phone_util_.TruncateTooLongNumber(&too_long_number));
- EXPECT_EQ(valid_number, too_long_number);
-
- // GB number 080 1234 5678, but entered with 4 extra digits at the end.
- too_long_number.set_country_code(44);
- too_long_number.set_national_number(80123456780123ULL);
- valid_number.set_country_code(44);
- valid_number.set_national_number(8012345678ULL);
- EXPECT_TRUE(phone_util_.TruncateTooLongNumber(&too_long_number));
- EXPECT_EQ(valid_number, too_long_number);
-
- // IT number 022 3456 7890, but entered with 3 extra digits at the end.
- too_long_number.set_country_code(39);
- too_long_number.set_national_number(2234567890123ULL);
- too_long_number.set_italian_leading_zero(true);
- valid_number.set_country_code(39);
- valid_number.set_national_number(2234567890ULL);
- valid_number.set_italian_leading_zero(true);
- EXPECT_TRUE(phone_util_.TruncateTooLongNumber(&too_long_number));
- EXPECT_EQ(valid_number, too_long_number);
-
- // Tests what happens when a valid number is passed in.
- PhoneNumber valid_number_copy(valid_number);
- EXPECT_TRUE(phone_util_.TruncateTooLongNumber(&valid_number));
- // Tests the number is not modified.
- EXPECT_EQ(valid_number_copy, valid_number);
-
- // Tests what happens when a number with invalid prefix is passed in.
- PhoneNumber number_with_invalid_prefix;
- number_with_invalid_prefix.set_country_code(1);
- // The test metadata says US numbers cannot have prefix 240.
- number_with_invalid_prefix.set_national_number(2401234567ULL);
- PhoneNumber invalid_number_copy(number_with_invalid_prefix);
- EXPECT_FALSE(phone_util_.TruncateTooLongNumber(&number_with_invalid_prefix));
- // Tests the number is not modified.
- EXPECT_EQ(invalid_number_copy, number_with_invalid_prefix);
-
- // Tests what happens when a too short number is passed in.
- PhoneNumber too_short_number;
- too_short_number.set_country_code(1);
- too_short_number.set_national_number(1234ULL);
- PhoneNumber too_short_number_copy(too_short_number);
- EXPECT_FALSE(phone_util_.TruncateTooLongNumber(&too_short_number));
- // Tests the number is not modified.
- EXPECT_EQ(too_short_number_copy, too_short_number);
-}
-
-TEST_F(PhoneNumberUtilTest, IsLeadingZeroPossible) {
- EXPECT_TRUE(IsLeadingZeroPossible(39)); // Italy
- EXPECT_FALSE(IsLeadingZeroPossible(1)); // USA
- EXPECT_FALSE(IsLeadingZeroPossible(800)); // Not in metadata file, should
- // return default value of false.
-}
-
-TEST_F(PhoneNumberUtilTest, FormatUsingOriginalNumberFormat) {
- PhoneNumber phone_number;
- string formatted_number;
-
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.ParseAndKeepRawInput("+442087654321", RegionCode::GB(),
- &phone_number));
- phone_util_.FormatInOriginalFormat(phone_number, RegionCode::GB(),
- &formatted_number);
- EXPECT_EQ("+44 20 8765 4321", formatted_number);
-
- phone_number.Clear();
- formatted_number.clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.ParseAndKeepRawInput("02087654321", RegionCode::GB(),
- &phone_number));
- phone_util_.FormatInOriginalFormat(phone_number, RegionCode::GB(),
- &formatted_number);
- EXPECT_EQ("(020) 8765 4321", formatted_number);
-
- phone_number.Clear();
- formatted_number.clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.ParseAndKeepRawInput("011442087654321",
- RegionCode::US(), &phone_number));
- phone_util_.FormatInOriginalFormat(phone_number, RegionCode::US(),
- &formatted_number);
- EXPECT_EQ("011 44 20 8765 4321", formatted_number);
-
- phone_number.Clear();
- formatted_number.clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.ParseAndKeepRawInput("442087654321", RegionCode::GB(),
- &phone_number));
- phone_util_.FormatInOriginalFormat(phone_number, RegionCode::GB(),
- &formatted_number);
- EXPECT_EQ("44 20 8765 4321", formatted_number);
-
- phone_number.Clear();
- formatted_number.clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+442087654321", RegionCode::GB(),
- &phone_number));
- phone_util_.FormatInOriginalFormat(phone_number, RegionCode::GB(),
- &formatted_number);
- EXPECT_EQ("(020) 8765 4321", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, IsPremiumRate) {
- PhoneNumber number;
- number.set_country_code(1);
- number.set_national_number(9004433030ULL);
- EXPECT_EQ(PhoneNumberUtil::PREMIUM_RATE, phone_util_.GetNumberType(number));
-
- number.set_country_code(39);
- number.set_national_number(892123ULL);
- EXPECT_EQ(PhoneNumberUtil::PREMIUM_RATE, phone_util_.GetNumberType(number));
-
- number.set_country_code(44);
- number.set_national_number(9187654321ULL);
- EXPECT_EQ(PhoneNumberUtil::PREMIUM_RATE, phone_util_.GetNumberType(number));
-
- number.set_country_code(49);
- number.set_national_number(9001654321ULL);
- EXPECT_EQ(PhoneNumberUtil::PREMIUM_RATE, phone_util_.GetNumberType(number));
-
- number.set_country_code(49);
- number.set_national_number(90091234567ULL);
- EXPECT_EQ(PhoneNumberUtil::PREMIUM_RATE, phone_util_.GetNumberType(number));
-}
-
-TEST_F(PhoneNumberUtilTest, IsTollFree) {
- PhoneNumber number;
- number.set_country_code(1);
- number.set_national_number(8881234567ULL);
- EXPECT_EQ(PhoneNumberUtil::TOLL_FREE, phone_util_.GetNumberType(number));
-
- number.set_country_code(39);
- number.set_national_number(803123ULL);
- EXPECT_EQ(PhoneNumberUtil::TOLL_FREE, phone_util_.GetNumberType(number));
-
- number.set_country_code(44);
- number.set_national_number(8012345678ULL);
- EXPECT_EQ(PhoneNumberUtil::TOLL_FREE, phone_util_.GetNumberType(number));
-
- number.set_country_code(49);
- number.set_national_number(8001234567ULL);
- EXPECT_EQ(PhoneNumberUtil::TOLL_FREE, phone_util_.GetNumberType(number));
-}
-
-TEST_F(PhoneNumberUtilTest, IsMobile) {
- PhoneNumber number;
- // A Bahama mobile number
- number.set_country_code(1);
- number.set_national_number(2423570000ULL);
- EXPECT_EQ(PhoneNumberUtil::MOBILE, phone_util_.GetNumberType(number));
-
- number.set_country_code(39);
- number.set_national_number(312345678ULL);
- EXPECT_EQ(PhoneNumberUtil::MOBILE, phone_util_.GetNumberType(number));
-
- number.set_country_code(44);
- number.set_national_number(7912345678ULL);
- EXPECT_EQ(PhoneNumberUtil::MOBILE, phone_util_.GetNumberType(number));
-
- number.set_country_code(49);
- number.set_national_number(15123456789ULL);
- EXPECT_EQ(PhoneNumberUtil::MOBILE, phone_util_.GetNumberType(number));
-
- number.set_country_code(54);
- number.set_national_number(91187654321ULL);
- EXPECT_EQ(PhoneNumberUtil::MOBILE, phone_util_.GetNumberType(number));
-}
-
-TEST_F(PhoneNumberUtilTest, IsFixedLine) {
- PhoneNumber number;
- // A Bahama fixed-line number
- number.set_country_code(1);
- number.set_national_number(2423651234ULL);
- EXPECT_EQ(PhoneNumberUtil::FIXED_LINE, phone_util_.GetNumberType(number));
-
- // An Italian fixed-line number
- number.Clear();
- number.set_country_code(39);
- number.set_national_number(236618300ULL);
- number.set_italian_leading_zero(true);
- EXPECT_EQ(PhoneNumberUtil::FIXED_LINE, phone_util_.GetNumberType(number));
-
- number.Clear();
- number.set_country_code(44);
- number.set_national_number(2012345678ULL);
- EXPECT_EQ(PhoneNumberUtil::FIXED_LINE, phone_util_.GetNumberType(number));
-
- number.set_country_code(49);
- number.set_national_number(301234ULL);
- EXPECT_EQ(PhoneNumberUtil::FIXED_LINE, phone_util_.GetNumberType(number));
-}
-
-TEST_F(PhoneNumberUtilTest, IsFixedLineAndMobile) {
- PhoneNumber number;
- number.set_country_code(1);
- number.set_national_number(6502531111ULL);
- EXPECT_EQ(PhoneNumberUtil::FIXED_LINE_OR_MOBILE,
- phone_util_.GetNumberType(number));
-
- number.set_country_code(54);
- number.set_national_number(1987654321ULL);
- EXPECT_EQ(PhoneNumberUtil::FIXED_LINE_OR_MOBILE,
- phone_util_.GetNumberType(number));
-}
-
-TEST_F(PhoneNumberUtilTest, IsSharedCost) {
- PhoneNumber number;
- number.set_country_code(44);
- number.set_national_number(8431231234ULL);
- EXPECT_EQ(PhoneNumberUtil::SHARED_COST, phone_util_.GetNumberType(number));
-}
-
-TEST_F(PhoneNumberUtilTest, IsVoip) {
- PhoneNumber number;
- number.set_country_code(44);
- number.set_national_number(5631231234ULL);
- EXPECT_EQ(PhoneNumberUtil::VOIP, phone_util_.GetNumberType(number));
-}
-
-TEST_F(PhoneNumberUtilTest, IsPersonalNumber) {
- PhoneNumber number;
- number.set_country_code(44);
- number.set_national_number(7031231234ULL);
- EXPECT_EQ(PhoneNumberUtil::PERSONAL_NUMBER,
- phone_util_.GetNumberType(number));
-}
-
-TEST_F(PhoneNumberUtilTest, IsUnknown) {
- PhoneNumber number;
- number.set_country_code(1);
- number.set_national_number(65025311111ULL);
- EXPECT_EQ(PhoneNumberUtil::UNKNOWN, phone_util_.GetNumberType(number));
-}
-
-TEST_F(PhoneNumberUtilTest, GetCountryCodeForRegion) {
- EXPECT_EQ(1, phone_util_.GetCountryCodeForRegion(RegionCode::US()));
- EXPECT_EQ(64, phone_util_.GetCountryCodeForRegion(RegionCode::NZ()));
- EXPECT_EQ(0, phone_util_.GetCountryCodeForRegion(RegionCode::ZZ()));
- // CS is already deprecated so the library doesn't support it.
- EXPECT_EQ(0, phone_util_.GetCountryCodeForRegion(RegionCode::CS()));
-}
-
-TEST_F(PhoneNumberUtilTest, GetNationalDiallingPrefixForRegion) {
- string ndd_prefix;
- GetNddPrefixForRegion(RegionCode::US(), false, &ndd_prefix);
- EXPECT_EQ("1", ndd_prefix);
-
- // Test non-main country to see it gets the national dialling prefix for the
- // main country with that country calling code.
- GetNddPrefixForRegion(RegionCode::BS(), false, &ndd_prefix);
- EXPECT_EQ("1", ndd_prefix);
-
- GetNddPrefixForRegion(RegionCode::NZ(), false, &ndd_prefix);
- EXPECT_EQ("0", ndd_prefix);
-
- // Test case with non digit in the national prefix.
- GetNddPrefixForRegion(RegionCode::AO(), false, &ndd_prefix);
- EXPECT_EQ("0~0", ndd_prefix);
-
- GetNddPrefixForRegion(RegionCode::AO(), true, &ndd_prefix);
- EXPECT_EQ("00", ndd_prefix);
-
- // Test cases with invalid regions.
- GetNddPrefixForRegion(RegionCode::ZZ(), false, &ndd_prefix);
- EXPECT_EQ("", ndd_prefix);
-
- // CS is already deprecated so the library doesn't support it.
- GetNddPrefixForRegion(RegionCode::CS(), false, &ndd_prefix);
- EXPECT_EQ("", ndd_prefix);
-}
-
-TEST_F(PhoneNumberUtilTest, IsViablePhoneNumber) {
- // Only one or two digits before strange non-possible punctuation.
- EXPECT_FALSE(IsViablePhoneNumber("12. March"));
- EXPECT_FALSE(IsViablePhoneNumber("1+1+1"));
- EXPECT_FALSE(IsViablePhoneNumber("80+0"));
- EXPECT_FALSE(IsViablePhoneNumber("00"));
- // Three digits is viable.
- EXPECT_TRUE(IsViablePhoneNumber("111"));
- // Alpha numbers.
- EXPECT_TRUE(IsViablePhoneNumber("0800-4-pizza"));
- EXPECT_TRUE(IsViablePhoneNumber("0800-4-PIZZA"));
- // Only one or two digits before possible punctuation followed by more digits.
- // The punctuation used here is the unicode character u+3000.
- EXPECT_TRUE(IsViablePhoneNumber("1 34"));
- EXPECT_FALSE(IsViablePhoneNumber("1 3+4"));
- // Unicode variants of possible starting character and other allowed
- // punctuation/digits.
- EXPECT_TRUE(IsViablePhoneNumber("(1) 3456789"));
- // Testing a leading + is okay.
- EXPECT_TRUE(IsViablePhoneNumber("+1) 3456789"));
-}
-
-TEST_F(PhoneNumberUtilTest, NormaliseRemovePunctuation) {
- string input_number("034-56&+#234");
- Normalize(&input_number);
- static const string kExpectedOutput("03456234");
- EXPECT_EQ(kExpectedOutput, input_number)
- << "Conversion did not correctly remove punctuation";
-}
-
-TEST_F(PhoneNumberUtilTest, NormaliseReplaceAlphaCharacters) {
- string input_number("034-I-am-HUNGRY");
- Normalize(&input_number);
- static const string kExpectedOutput("034426486479");
- EXPECT_EQ(kExpectedOutput, input_number)
- << "Conversion did not correctly replace alpha characters";
-}
-
-TEST_F(PhoneNumberUtilTest, NormaliseOtherDigits) {
- // The first digit is a full-width 2, the last digit is an Arabic-indic digit
- // 5.
- string input_number("25٥");
- Normalize(&input_number);
- static const string kExpectedOutput("255");
- EXPECT_EQ(kExpectedOutput, input_number)
- << "Conversion did not correctly replace non-latin digits";
- // The first digit is an Eastern-Arabic 5, the latter an Eastern-Arabic 0.
- string eastern_arabic_input_number("۵2۰");
- Normalize(&eastern_arabic_input_number);
- static const string kExpectedOutput2("520");
- EXPECT_EQ(kExpectedOutput2, eastern_arabic_input_number)
- << "Conversion did not correctly replace non-latin digits";
-}
-
-TEST_F(PhoneNumberUtilTest, NormaliseStripAlphaCharacters) {
- string input_number("034-56&+a#234");
- phone_util_.NormalizeDigitsOnly(&input_number);
- static const string kExpectedOutput("03456234");
- EXPECT_EQ(kExpectedOutput, input_number)
- << "Conversion did not correctly remove alpha characters";
-}
-
-TEST_F(PhoneNumberUtilTest, MaybeStripInternationalPrefix) {
- string international_prefix("00[39]");
- string number_to_strip("0034567700-3898003");
- // Note the dash is removed as part of the normalization.
- string stripped_number("45677003898003");
- EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITH_IDD,
- MaybeStripInternationalPrefixAndNormalize(international_prefix,
- &number_to_strip));
- EXPECT_EQ(stripped_number, number_to_strip)
- << "The number was not stripped of its international prefix.";
-
- // Now the number no longer starts with an IDD prefix, so it should now report
- // FROM_DEFAULT_COUNTRY.
- EXPECT_EQ(PhoneNumber::FROM_DEFAULT_COUNTRY,
- MaybeStripInternationalPrefixAndNormalize(international_prefix,
- &number_to_strip));
-
- number_to_strip.assign("00945677003898003");
- EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITH_IDD,
- MaybeStripInternationalPrefixAndNormalize(international_prefix,
- &number_to_strip));
- EXPECT_EQ(stripped_number, number_to_strip)
- << "The number was not stripped of its international prefix.";
-
- // Test it works when the international prefix is broken up by spaces.
- number_to_strip.assign("00 9 45677003898003");
- EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITH_IDD,
- MaybeStripInternationalPrefixAndNormalize(international_prefix,
- &number_to_strip));
- EXPECT_EQ(stripped_number, number_to_strip)
- << "The number was not stripped of its international prefix.";
- // Now the number no longer starts with an IDD prefix, so it should now report
- // FROM_DEFAULT_COUNTRY.
- EXPECT_EQ(PhoneNumber::FROM_DEFAULT_COUNTRY,
- MaybeStripInternationalPrefixAndNormalize(international_prefix,
- &number_to_strip));
-
- // Test the + symbol is also recognised and stripped.
- number_to_strip.assign("+45677003898003");
- stripped_number.assign("45677003898003");
- EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN,
- MaybeStripInternationalPrefixAndNormalize(international_prefix,
- &number_to_strip));
- EXPECT_EQ(stripped_number, number_to_strip)
- << "The number supplied was not stripped of the plus symbol.";
-
- // If the number afterwards is a zero, we should not strip this - no country
- // code begins with 0.
- number_to_strip.assign("0090112-3123");
- stripped_number.assign("00901123123");
- EXPECT_EQ(PhoneNumber::FROM_DEFAULT_COUNTRY,
- MaybeStripInternationalPrefixAndNormalize(international_prefix,
- &number_to_strip));
- EXPECT_EQ(stripped_number, number_to_strip)
- << "The number had a 0 after the match so shouldn't be stripped.";
- // Here the 0 is separated by a space from the IDD.
- number_to_strip.assign("009 0-112-3123");
- EXPECT_EQ(PhoneNumber::FROM_DEFAULT_COUNTRY,
- MaybeStripInternationalPrefixAndNormalize(international_prefix,
- &number_to_strip));
-}
-
-TEST_F(PhoneNumberUtilTest, MaybeStripNationalPrefixAndCarrierCode) {
- PhoneMetadata metadata;
- metadata.set_national_prefix_for_parsing("34");
- metadata.mutable_general_desc()->set_national_number_pattern("\\d{4,8}");
- string number_to_strip("34356778");
- string stripped_number("356778");
- string carrier_code;
- MaybeStripNationalPrefixAndCarrierCode(metadata, &number_to_strip,
- &carrier_code);
- EXPECT_EQ(stripped_number, number_to_strip)
- << "Should have had national prefix stripped.";
- EXPECT_EQ("", carrier_code) << "Should have had no carrier code stripped.";
- // Retry stripping - now the number should not start with the national prefix,
- // so no more stripping should occur.
- MaybeStripNationalPrefixAndCarrierCode(metadata, &number_to_strip,
- &carrier_code);
- EXPECT_EQ(stripped_number, number_to_strip)
- << "Should have had no change - no national prefix present.";
- // Some countries have no national prefix. Repeat test with none specified.
- metadata.clear_national_prefix_for_parsing();
- MaybeStripNationalPrefixAndCarrierCode(metadata, &number_to_strip,
- &carrier_code);
- EXPECT_EQ(stripped_number, number_to_strip)
- << "Should have had no change - empty national prefix.";
- // If the resultant number doesn't match the national rule, it shouldn't be
- // stripped.
- metadata.set_national_prefix_for_parsing("3");
- number_to_strip.assign("3123");
- stripped_number.assign("3123");
- MaybeStripNationalPrefixAndCarrierCode(metadata, &number_to_strip,
- &carrier_code);
- EXPECT_EQ(stripped_number, number_to_strip)
- << "Should have had no change - after stripping, it wouldn't have "
- << "matched the national rule.";
- // Test extracting carrier selection code.
- metadata.set_national_prefix_for_parsing("0(81)?");
- number_to_strip.assign("08122123456");
- stripped_number.assign("22123456");
- MaybeStripNationalPrefixAndCarrierCode(metadata, &number_to_strip,
- &carrier_code);
- EXPECT_EQ("81", carrier_code) << "Should have had carrier code stripped.";
- EXPECT_EQ(stripped_number, number_to_strip)
- << "Should have had national prefix and carrier code stripped.";
- // If there was a transform rule, check it was applied.
- metadata.set_national_prefix_transform_rule("5$15");
- // Note that a capturing group is present here.
- metadata.set_national_prefix_for_parsing("0(\\d{2})");
- number_to_strip.assign("031123");
- string transformed_number("5315123");
- MaybeStripNationalPrefixAndCarrierCode(metadata, &number_to_strip,
- &carrier_code);
- EXPECT_EQ(transformed_number, number_to_strip)
- << "Was not successfully transformed.";
-}
-
-TEST_F(PhoneNumberUtilTest, MaybeStripExtension) {
- // One with extension.
- string number("1234576 ext. 1234");
- string extension;
- string expected_extension("1234");
- string stripped_number("1234576");
- EXPECT_TRUE(MaybeStripExtension(&number, &extension));
- EXPECT_EQ(stripped_number, number);
- EXPECT_EQ(expected_extension, extension);
-
- // One without extension.
- number.assign("1234-576");
- extension.clear();
- stripped_number.assign("1234-576");
- EXPECT_FALSE(MaybeStripExtension(&number, &extension));
- EXPECT_EQ(stripped_number, number);
- EXPECT_TRUE(extension.empty());
-
- // One with an extension caught by the second capturing group in
- // kKnownExtnPatterns.
- number.assign("1234576-123#");
- extension.clear();
- expected_extension.assign("123");
- stripped_number.assign("1234576");
- EXPECT_TRUE(MaybeStripExtension(&number, &extension));
- EXPECT_EQ(stripped_number, number);
- EXPECT_EQ(expected_extension, extension);
-
- number.assign("1234576 ext.123#");
- extension.clear();
- EXPECT_TRUE(MaybeStripExtension(&number, &extension));
- EXPECT_EQ(stripped_number, number);
- EXPECT_EQ(expected_extension, extension);
-}
-
-TEST_F(PhoneNumberUtilTest, MaybeExtractCountryCode) {
- PhoneNumber number;
- const PhoneMetadata* metadata = GetPhoneMetadata(RegionCode::US());
- // Note that for the US, the IDD is 011.
- string phone_number("011112-3456789");
- string stripped_number("123456789");
- int expected_country_code = 1;
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- MaybeExtractCountryCode(metadata, true, &phone_number, &number));
- EXPECT_EQ(expected_country_code, number.country_code());
- EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITH_IDD, number.country_code_source());
- EXPECT_EQ(stripped_number, phone_number);
-
- number.Clear();
- phone_number.assign("+6423456789");
- stripped_number.assign("23456789");
- expected_country_code = 64;
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- MaybeExtractCountryCode(metadata, true, &phone_number, &number));
- EXPECT_EQ(expected_country_code, number.country_code());
- EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN,
- number.country_code_source());
- EXPECT_EQ(stripped_number, phone_number);
-
- // Should not have extracted a country code - no international prefix present.
- number.Clear();
- expected_country_code = 0;
- phone_number.assign("2345-6789");
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- MaybeExtractCountryCode(metadata, true, &phone_number, &number));
- EXPECT_EQ(expected_country_code, number.country_code());
- EXPECT_EQ(PhoneNumber::FROM_DEFAULT_COUNTRY, number.country_code_source());
- EXPECT_EQ(stripped_number, phone_number);
-
- expected_country_code = 0;
- phone_number.assign("0119991123456789");
- stripped_number.assign(phone_number);
- EXPECT_EQ(PhoneNumberUtil::INVALID_COUNTRY_CODE_ERROR,
- MaybeExtractCountryCode(metadata, true, &phone_number, &number));
-
- number.Clear();
- phone_number.assign("(1 610) 619 4466");
- stripped_number.assign("6106194466");
- expected_country_code = 1;
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- MaybeExtractCountryCode(metadata, true, &phone_number, &number));
- EXPECT_EQ(expected_country_code, number.country_code());
- EXPECT_EQ(PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN,
- number.country_code_source());
- EXPECT_EQ(stripped_number, phone_number);
-
- number.Clear();
- phone_number.assign("(1 610) 619 4466");
- stripped_number.assign("6106194466");
- expected_country_code = 1;
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- MaybeExtractCountryCode(metadata, false, &phone_number, &number));
- EXPECT_EQ(expected_country_code, number.country_code());
- EXPECT_FALSE(number.has_country_code_source());
- EXPECT_EQ(stripped_number, phone_number);
-
- // Should not have extracted a country code - invalid number after extraction
- // of uncertain country code.
- number.Clear();
- phone_number.assign("(1 610) 619 446");
- stripped_number.assign("1610619446");
- expected_country_code = 0;
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- MaybeExtractCountryCode(metadata, false, &phone_number, &number));
- EXPECT_EQ(expected_country_code, number.country_code());
- EXPECT_FALSE(number.has_country_code_source());
- EXPECT_EQ(stripped_number, phone_number);
-
- number.Clear();
- phone_number.assign("(1 610) 619");
- stripped_number.assign("1610619");
- expected_country_code = 0;
- // Should not have extracted a country code - invalid number both before and
- // after extraction of uncertain country code.
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- MaybeExtractCountryCode(metadata, true, &phone_number, &number));
- EXPECT_EQ(expected_country_code, number.country_code());
- EXPECT_EQ(PhoneNumber::FROM_DEFAULT_COUNTRY, number.country_code_source());
- EXPECT_EQ(stripped_number, phone_number);
-}
-
-TEST_F(PhoneNumberUtilTest, CountryWithNoNumberDesc) {
- string formatted_number;
- // Andorra is a country where we don't have PhoneNumberDesc info in the
- // metadata.
- PhoneNumber ad_number;
- ad_number.set_country_code(376);
- ad_number.set_national_number(12345ULL);
- phone_util_.Format(ad_number, PhoneNumberUtil::INTERNATIONAL,
- &formatted_number);
- EXPECT_EQ("+376 12345", formatted_number);
- phone_util_.Format(ad_number, PhoneNumberUtil::E164, &formatted_number);
- EXPECT_EQ("+37612345", formatted_number);
- phone_util_.Format(ad_number, PhoneNumberUtil::NATIONAL, &formatted_number);
- EXPECT_EQ("12345", formatted_number);
- EXPECT_EQ(PhoneNumberUtil::UNKNOWN, phone_util_.GetNumberType(ad_number));
- EXPECT_TRUE(phone_util_.IsValidNumber(ad_number));
-
- // Test dialing a US number from within Andorra.
- PhoneNumber us_number;
- us_number.set_country_code(1);
- us_number.set_national_number(6502530000ULL);
- phone_util_.FormatOutOfCountryCallingNumber(us_number, RegionCode::AD(),
- &formatted_number);
- EXPECT_EQ("00 1 650 253 0000", formatted_number);
-}
-
-TEST_F(PhoneNumberUtilTest, UnknownCountryCallingCodeForValidation) {
- PhoneNumber invalid_number;
- invalid_number.set_country_code(0);
- invalid_number.set_national_number(1234ULL);
- EXPECT_FALSE(phone_util_.IsValidNumber(invalid_number));
-}
-
-TEST_F(PhoneNumberUtilTest, IsNumberMatchMatches) {
- // Test simple matches where formatting is different, or leading zeroes, or
- // country code has been specified.
- EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+64 3 331 6005",
- "+64 03 331 6005"));
- EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+64 03 331-6005",
- "+64 03331 6005"));
- EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+643 331-6005",
- "+64033316005"));
- EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+643 331-6005",
- "+6433316005"));
- EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005",
- "+6433316005"));
- // Test alpha numbers.
- EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+1800 siX-Flags",
- "+1 800 7493 5247"));
- // Test numbers with extensions.
- EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005 extn 1234",
- "+6433316005#1234"));
- // Test proto buffers.
- PhoneNumber nz_number;
- nz_number.set_country_code(64);
- nz_number.set_national_number(33316005ULL);
- nz_number.set_extension("3456");
- EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH,
- phone_util_.IsNumberMatchWithOneString(nz_number,
- "+643 331 6005 ext 3456"));
- nz_number.clear_extension();
- EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH,
- phone_util_.IsNumberMatchWithOneString(nz_number,
- "+643 331 6005"));
- // Check empty extensions are ignored.
- nz_number.set_extension("");
- EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH,
- phone_util_.IsNumberMatchWithOneString(nz_number,
- "+643 331 6005"));
- // Check variant with two proto buffers.
- PhoneNumber nz_number_2;
- nz_number_2.set_country_code(64);
- nz_number_2.set_national_number(33316005ULL);
- EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH,
- phone_util_.IsNumberMatch(nz_number, nz_number_2));
-
- // Check raw_input, country_code_source and preferred_domestic_carrier_code
- // are ignored.
- PhoneNumber br_number_1;
- PhoneNumber br_number_2;
- br_number_1.set_country_code(55);
- br_number_1.set_national_number(3121286979ULL);
- br_number_1.set_country_code_source(PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN);
- br_number_1.set_preferred_domestic_carrier_code("12");
- br_number_1.set_raw_input("012 3121286979");
- br_number_2.set_country_code(55);
- br_number_2.set_national_number(3121286979ULL);
- br_number_2.set_country_code_source(PhoneNumber::FROM_DEFAULT_COUNTRY);
- br_number_2.set_preferred_domestic_carrier_code("14");
- br_number_2.set_raw_input("143121286979");
- EXPECT_EQ(PhoneNumberUtil::EXACT_MATCH,
- phone_util_.IsNumberMatch(br_number_1, br_number_2));
-}
-
-TEST_F(PhoneNumberUtilTest, IsNumberMatchNonMetches) {
- // NSN matches.
- EXPECT_EQ(PhoneNumberUtil::NO_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("03 331 6005",
- "03 331 6006"));
- // Different country code, partial number match.
- EXPECT_EQ(PhoneNumberUtil::NO_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005",
- "+16433316005"));
- // Different country code, same number.
- EXPECT_EQ(PhoneNumberUtil::NO_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005",
- "+6133316005"));
- // Extension different, all else the same.
- EXPECT_EQ(PhoneNumberUtil::NO_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005 extn 1234",
- "+0116433316005#1235"));
- // NSN matches, but extension is different - not the same number.
- EXPECT_EQ(PhoneNumberUtil::NO_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005 ext.1235",
- "3 331 6005#1234"));
- // Invalid numbers that can't be parsed.
- EXPECT_EQ(PhoneNumberUtil::INVALID_NUMBER,
- phone_util_.IsNumberMatchWithTwoStrings("43", "3 331 6043"));
- // Invalid numbers that can't be parsed.
- EXPECT_EQ(PhoneNumberUtil::INVALID_NUMBER,
- phone_util_.IsNumberMatchWithTwoStrings("+43", "+64 3 331 6005"));
- EXPECT_EQ(PhoneNumberUtil::INVALID_NUMBER,
- phone_util_.IsNumberMatchWithTwoStrings("+43", "64 3 331 6005"));
- EXPECT_EQ(PhoneNumberUtil::INVALID_NUMBER,
- phone_util_.IsNumberMatchWithTwoStrings("Dog", "64 3 331 6005"));
-}
-
-TEST_F(PhoneNumberUtilTest, IsNumberMatchNsnMatches) {
- // NSN matches.
- EXPECT_EQ(PhoneNumberUtil::NSN_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005",
- "03 331 6005"));
-
- EXPECT_EQ(PhoneNumberUtil::NSN_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("3 331-6005",
- "03 331 6005"));
-
- PhoneNumber nz_number;
- nz_number.set_country_code(64);
- nz_number.set_national_number(33316005ULL);
- nz_number.set_extension("");
- EXPECT_EQ(PhoneNumberUtil::NSN_MATCH,
- phone_util_.IsNumberMatchWithOneString(nz_number, "03 331 6005"));
- // Here the second number possibly starts with the country code for New
- // Zealand, although we are unsure.
- EXPECT_EQ(PhoneNumberUtil::NSN_MATCH,
- phone_util_.IsNumberMatchWithOneString(nz_number,
- "(64-3) 331 6005"));
-
- // Here, the 1 might be a national prefix, if we compare it to the US number,
- // so the resultant match is an NSN match.
- PhoneNumber us_number;
- us_number.set_country_code(1);
- us_number.set_national_number(2345678901ULL);
- EXPECT_EQ(PhoneNumberUtil::NSN_MATCH,
- phone_util_.IsNumberMatchWithOneString(us_number,
- "1-234-567-8901"));
- EXPECT_EQ(PhoneNumberUtil::NSN_MATCH,
- phone_util_.IsNumberMatchWithOneString(us_number, "2345678901"));
- EXPECT_EQ(PhoneNumberUtil::NSN_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+1 234-567 8901",
- "1 234 567 8901"));
- EXPECT_EQ(PhoneNumberUtil::NSN_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("1 234-567 8901",
- "1 234 567 8901"));
- EXPECT_EQ(PhoneNumberUtil::NSN_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("1 234-567 8901",
- "+1 234 567 8901"));
- // For this case, the match will be a short NSN match, because we cannot
- // assume that the 1 might be a national prefix, so don't remove it when
- // parsing.
- PhoneNumber random_number;
- random_number.set_country_code(41);
- random_number.set_national_number(2345678901ULL);
- EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH,
- phone_util_.IsNumberMatchWithOneString(random_number,
- "1-234-567-8901"));
-}
-
-TEST_F(PhoneNumberUtilTest, IsNumberMatchShortNsnMatches) {
- // Short NSN matches with the country not specified for either one or both
- // numbers.
- EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005",
- "331 6005"));
-
- EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("3 331-6005",
- "331 6005"));
-
- EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("3 331-6005",
- "+64 331 6005"));
-
- // Short NSN match with the country specified.
- EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("03 331-6005",
- "331 6005"));
-
- EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("1 234 345 6789",
- "345 6789"));
-
- EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+1 (234) 345 6789",
- "345 6789"));
-
- // NSN matches, country code omitted for one number, extension missing for
- // one.
- EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH,
- phone_util_.IsNumberMatchWithTwoStrings("+64 3 331-6005",
- "3 331 6005#1234"));
-
- // One has Italian leading zero, one does not.
- PhoneNumber it_number_1, it_number_2;
- it_number_1.set_country_code(39);
- it_number_1.set_national_number(1234ULL);
- it_number_1.set_italian_leading_zero(true);
- it_number_2.set_country_code(39);
- it_number_2.set_national_number(1234ULL);
- EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH,
- phone_util_.IsNumberMatch(it_number_1, it_number_2));
-
- // One has an extension, the other has an extension of "".
- it_number_1.set_extension("1234");
- it_number_1.clear_italian_leading_zero();
- it_number_2.set_extension("");
- EXPECT_EQ(PhoneNumberUtil::SHORT_NSN_MATCH,
- phone_util_.IsNumberMatch(it_number_1, it_number_2));
-}
-
-TEST_F(PhoneNumberUtilTest, ParseNationalNumber) {
- PhoneNumber nz_number;
- nz_number.set_country_code(64);
- nz_number.set_national_number(33316005ULL);
- PhoneNumber test_number;
- // National prefix attached.
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("033316005", RegionCode::NZ(), &test_number));
- EXPECT_EQ(nz_number, test_number);
- // National prefix missing.
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("33316005", RegionCode::NZ(), &test_number));
- EXPECT_EQ(nz_number, test_number);
- // National prefix attached and some formatting present.
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("03-331 6005", RegionCode::NZ(), &test_number));
- EXPECT_EQ(nz_number, test_number);
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("03 331 6005", RegionCode::NZ(), &test_number));
- EXPECT_EQ(nz_number, test_number);
-
- // Testing international prefixes.
- // Should strip country code.
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0064 3 331 6005",
- RegionCode::NZ(), &test_number));
- EXPECT_EQ(nz_number, test_number);
- // Try again, but this time we have an international number with Region Code
- // US. It should recognise the country code and parse accordingly.
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("01164 3 331 6005",
- RegionCode::US(), &test_number));
- EXPECT_EQ(nz_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+64 3 331 6005",
- RegionCode::US(), &test_number));
- EXPECT_EQ(nz_number, test_number);
-
- // Test for http://b/issue?id=2247493
- nz_number.Clear();
- nz_number.set_country_code(64);
- nz_number.set_national_number(64123456ULL);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+64(0)64123456",
- RegionCode::US(), &test_number));
- EXPECT_EQ(nz_number, test_number);
-
- // Check that using a "/" is fine in a phone number.
- PhoneNumber de_number;
- de_number.set_country_code(49);
- de_number.set_national_number(12345678ULL);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("123/45678", RegionCode::DE(), &test_number));
- EXPECT_EQ(de_number, test_number);
-
- PhoneNumber us_number;
- us_number.set_country_code(1);
- // Check it doesn't use the '1' as a country code when parsing if the phone
- // number was already possible.
- us_number.set_national_number(1234567890ULL);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("123-456-7890", RegionCode::US(), &test_number));
- EXPECT_EQ(us_number, test_number);
-}
-
-TEST_F(PhoneNumberUtilTest, ParseNumberWithAlphaCharacters) {
- // Test case with alpha characters.
- PhoneNumber test_number;
- PhoneNumber tollfree_number;
- tollfree_number.set_country_code(64);
- tollfree_number.set_national_number(800332005ULL);
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0800 DDA 005", RegionCode::NZ(), &test_number));
- EXPECT_EQ(tollfree_number, test_number);
-
- test_number.Clear();
- PhoneNumber premium_number;
- premium_number.set_country_code(64);
- premium_number.set_national_number(9003326005ULL);
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0900 DDA 6005", RegionCode::NZ(), &test_number));
- EXPECT_EQ(premium_number, test_number);
-
- // Not enough alpha characters for them to be considered intentional, so they
- // are stripped.
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0900 332 6005a",
- RegionCode::NZ(), &test_number));
- EXPECT_EQ(premium_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0900 332 600a5",
- RegionCode::NZ(), &test_number));
- EXPECT_EQ(premium_number, test_number);
-
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0900 332 600A5",
- RegionCode::NZ(), &test_number));
- EXPECT_EQ(premium_number, test_number);
-
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0900 a332 600A5",
- RegionCode::NZ(), &test_number));
- EXPECT_EQ(premium_number, test_number);
-}
-
-TEST_F(PhoneNumberUtilTest, ParseWithInternationalPrefixes) {
- PhoneNumber us_number;
- us_number.set_country_code(1);
- us_number.set_national_number(6503336000ULL);
- PhoneNumber test_number;
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+1 (650) 333-6000",
- RegionCode::US(), &test_number));
- EXPECT_EQ(us_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+1-650-333-6000",
- RegionCode::US(), &test_number));
- EXPECT_EQ(us_number, test_number);
-
- // Calling the US number from Singapore by using different service providers
- // 1st test: calling using SingTel IDD service (IDD is 001)
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0011-650-333-6000",
- RegionCode::SG(), &test_number));
- EXPECT_EQ(us_number, test_number);
- // 2nd test: calling using StarHub IDD service (IDD is 008)
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0081-650-333-6000",
- RegionCode::SG(), &test_number));
- EXPECT_EQ(us_number, test_number);
- // 3rd test: calling using SingTel V019 service (IDD is 019)
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0191-650-333-6000",
- RegionCode::SG(), &test_number));
- EXPECT_EQ(us_number, test_number);
- // Calling the US number from Poland
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0~01-650-333-6000",
- RegionCode::PL(), &test_number));
- EXPECT_EQ(us_number, test_number);
-
- // Using "++" at the start.
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("++1 (650) 333-6000",
- RegionCode::PL(), &test_number));
- EXPECT_EQ(us_number, test_number);
- // Using a full-width plus sign.
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+1 (650) 333-6000",
- RegionCode::SG(), &test_number));
- EXPECT_EQ(us_number, test_number);
- // The whole number, including punctuation, is here represented in full-width
- // form.
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+1 (650) 333-6000",
- RegionCode::SG(), &test_number));
- EXPECT_EQ(us_number, test_number);
-
- // Using the U+30FC dash.
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+1 (650) 333ー6000",
- RegionCode::SG(), &test_number));
- EXPECT_EQ(us_number, test_number);
-}
-
-TEST_F(PhoneNumberUtilTest, ParseWithLeadingZero) {
- PhoneNumber it_number;
- it_number.set_country_code(39);
- it_number.set_national_number(236618300ULL);
- it_number.set_italian_leading_zero(true);
- PhoneNumber test_number;
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+39 02-36618 300",
- RegionCode::NZ(), &test_number));
- EXPECT_EQ(it_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("02-36618 300", RegionCode::IT(), &test_number));
- EXPECT_EQ(it_number, test_number);
-
- it_number.Clear();
- it_number.set_country_code(39);
- it_number.set_national_number(312345678ULL);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("312 345 678", RegionCode::IT(), &test_number));
- EXPECT_EQ(it_number, test_number);
-}
-
-TEST_F(PhoneNumberUtilTest, ParseNationalNumberArgentina) {
- // Test parsing mobile numbers of Argentina.
- PhoneNumber ar_number;
- ar_number.set_country_code(54);
- ar_number.set_national_number(93435551212ULL);
- PhoneNumber test_number;
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+54 9 343 555 1212", RegionCode::AR(),
- &test_number));
- EXPECT_EQ(ar_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0343 15 555 1212", RegionCode::AR(),
- &test_number));
- EXPECT_EQ(ar_number, test_number);
-
- ar_number.set_national_number(93715654320ULL);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+54 9 3715 65 4320", RegionCode::AR(),
- &test_number));
- EXPECT_EQ(ar_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("03715 15 65 4320", RegionCode::AR(),
- &test_number));
- EXPECT_EQ(ar_number, test_number);
-
- // Test parsing fixed-line numbers of Argentina.
- ar_number.set_national_number(1137970000ULL);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+54 11 3797 0000", RegionCode::AR(),
- &test_number));
- EXPECT_EQ(ar_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("011 3797 0000", RegionCode::AR(), &test_number));
- EXPECT_EQ(ar_number, test_number);
-
- ar_number.set_national_number(3715654321ULL);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+54 3715 65 4321", RegionCode::AR(),
- &test_number));
- EXPECT_EQ(ar_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("03715 65 4321", RegionCode::AR(), &test_number));
- EXPECT_EQ(ar_number, test_number);
-
- ar_number.set_national_number(2312340000ULL);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+54 23 1234 0000", RegionCode::AR(),
- &test_number));
- EXPECT_EQ(ar_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("023 1234 0000", RegionCode::AR(), &test_number));
- EXPECT_EQ(ar_number, test_number);
-}
-
-TEST_F(PhoneNumberUtilTest, ParseWithXInNumber) {
- // Test that having an 'x' in the phone number at the start is ok and that it
- // just gets removed.
- PhoneNumber ar_number;
- ar_number.set_country_code(54);
- ar_number.set_national_number(123456789ULL);
- PhoneNumber test_number;
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0123456789", RegionCode::AR(), &test_number));
- EXPECT_EQ(ar_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(0) 123456789", RegionCode::AR(), &test_number));
- EXPECT_EQ(ar_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0 123456789", RegionCode::AR(), &test_number));
- EXPECT_EQ(ar_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(0xx) 123456789", RegionCode::AR(),
- &test_number));
- EXPECT_EQ(ar_number, test_number);
-
- PhoneNumber ar_from_us;
- ar_from_us.set_country_code(54);
- ar_from_us.set_national_number(81429712ULL);
- // This test is intentionally constructed such that the number of digit after
- // xx is larger than 7, so that the number won't be mistakenly treated as an
- // extension, as we allow extensions up to 7 digits. This assumption is okay
- // for now as all the countries where a carrier selection code is written in
- // the form of xx have a national significant number of length larger than 7.
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("011xx5481429712", RegionCode::US(),
- &test_number));
- EXPECT_EQ(ar_from_us, test_number);
-}
-
-TEST_F(PhoneNumberUtilTest, ParseNumbersMexico) {
- // Test parsing fixed-line numbers of Mexico.
- PhoneNumber mx_number;
-
- mx_number.set_country_code(52);
- mx_number.set_national_number(4499780001ULL);
- PhoneNumber test_number;
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+52 (449)978-0001", RegionCode::MX(),
- &test_number));
- EXPECT_EQ(mx_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("01 (449)978-0001", RegionCode::MX(),
- &test_number));
- EXPECT_EQ(mx_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(449)978-0001", RegionCode::MX(),
- &test_number));
- EXPECT_EQ(mx_number, test_number);
-
- // Test parsing mobile numbers of Mexico.
- mx_number.Clear();
- mx_number.set_country_code(52);
- mx_number.set_national_number(13312345678ULL);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+52 1 33 1234-5678", RegionCode::MX(),
- &test_number));
- EXPECT_EQ(mx_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("044 (33) 1234-5678", RegionCode::MX(),
- &test_number));
- EXPECT_EQ(mx_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("045 33 1234-5678", RegionCode::MX(),
- &test_number));
- EXPECT_EQ(mx_number, test_number);
-}
-
-TEST_F(PhoneNumberUtilTest, FailedParseOnInvalidNumbers) {
- PhoneNumber test_number;
- EXPECT_EQ(PhoneNumberUtil::NOT_A_NUMBER,
- phone_util_.Parse("This is not a phone number", RegionCode::NZ(),
- &test_number));
- EXPECT_EQ(PhoneNumber::default_instance(), test_number);
-
- EXPECT_EQ(PhoneNumberUtil::TOO_LONG_NSN,
- phone_util_.Parse("01495 72553301873 810104", RegionCode::GB(),
- &test_number));
- EXPECT_EQ(PhoneNumber::default_instance(), test_number);
-
- EXPECT_EQ(PhoneNumberUtil::TOO_SHORT_NSN,
- phone_util_.Parse("+49 0", RegionCode::DE(),
- &test_number));
- EXPECT_EQ(PhoneNumber::default_instance(), test_number);
-
- EXPECT_EQ(PhoneNumberUtil::INVALID_COUNTRY_CODE_ERROR,
- phone_util_.Parse("+210 3456 56789", RegionCode::NZ(),
- &test_number));
- EXPECT_EQ(PhoneNumber::default_instance(), test_number);
-
- EXPECT_EQ(PhoneNumberUtil::INVALID_COUNTRY_CODE_ERROR,
- phone_util_.Parse("123 456 7890", RegionCode::ZZ(),
- &test_number));
- EXPECT_EQ(PhoneNumber::default_instance(), test_number);
-
- EXPECT_EQ(PhoneNumberUtil::INVALID_COUNTRY_CODE_ERROR,
- phone_util_.Parse("123 456 7890", RegionCode::CS(),
- &test_number));
- EXPECT_EQ(PhoneNumber::default_instance(), test_number);
-
- EXPECT_EQ(PhoneNumberUtil::TOO_SHORT_AFTER_IDD,
- phone_util_.Parse("0044-----", RegionCode::GB(),
- &test_number));
- EXPECT_EQ(PhoneNumber::default_instance(), test_number);
- EXPECT_EQ(PhoneNumberUtil::TOO_SHORT_AFTER_IDD,
- phone_util_.Parse("0044", RegionCode::GB(),
- &test_number));
- EXPECT_EQ(PhoneNumber::default_instance(), test_number);
-
- EXPECT_EQ(PhoneNumberUtil::TOO_SHORT_AFTER_IDD,
- phone_util_.Parse("011", RegionCode::US(),
- &test_number));
- EXPECT_EQ(PhoneNumber::default_instance(), test_number);
- EXPECT_EQ(PhoneNumberUtil::TOO_SHORT_AFTER_IDD,
- phone_util_.Parse("0119", RegionCode::US(),
- &test_number));
- EXPECT_EQ(PhoneNumber::default_instance(), test_number);
-}
-
-TEST_F(PhoneNumberUtilTest, ParseNumbersWithPlusWithNoRegion) {
- PhoneNumber nz_number;
- nz_number.set_country_code(64);
- nz_number.set_national_number(33316005ULL);
- // "ZZ" is allowed only if the number starts with a '+' - then
- // the country code can be calculated.
- PhoneNumber result_proto;
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+64 3 331 6005", RegionCode::ZZ(),
- &result_proto));
- EXPECT_EQ(nz_number, result_proto);
-
- // Test with full-width plus.
- result_proto.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+64 3 331 6005", RegionCode::ZZ(),
- &result_proto));
- EXPECT_EQ(nz_number, result_proto);
- // Test with normal plus but leading characters that need to be stripped.
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse(" +64 3 331 6005", RegionCode::ZZ(),
- &result_proto));
- EXPECT_EQ(nz_number, result_proto);
-
- nz_number.set_raw_input("+64 3 331 6005");
- nz_number.set_country_code_source(PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN);
- // It is important that we set this to an empty string, since we used
- // ParseAndKeepRawInput and no carrrier code was found.
- nz_number.set_preferred_domestic_carrier_code("");
- result_proto.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.ParseAndKeepRawInput("+64 3 331 6005", RegionCode::ZZ(),
- &result_proto));
- EXPECT_EQ(nz_number, result_proto);
-}
-
-TEST_F(PhoneNumberUtilTest, ParseExtensions) {
- PhoneNumber nz_number;
- nz_number.set_country_code(64);
- nz_number.set_national_number(33316005ULL);
- nz_number.set_extension("3456");
- PhoneNumber test_number;
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("03 331 6005 ext 3456", RegionCode::NZ(),
- &test_number));
- EXPECT_EQ(nz_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("03 331 6005x3456", RegionCode::NZ(),
- &test_number));
- EXPECT_EQ(nz_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("03-331 6005 int.3456", RegionCode::NZ(),
- &test_number));
- EXPECT_EQ(nz_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("03 331 6005 #3456", RegionCode::NZ(),
- &test_number));
- EXPECT_EQ(nz_number, test_number);
-
- // Test the following do not extract extensions:
- PhoneNumber non_extn_number;
- non_extn_number.set_country_code(1);
- non_extn_number.set_national_number(80074935247ULL);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("1800 six-flags", RegionCode::US(),
- &test_number));
- EXPECT_EQ(non_extn_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("1800 SIX-FLAGS", RegionCode::US(),
- &test_number));
- EXPECT_EQ(non_extn_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0~0 1800 7493 5247", RegionCode::PL(),
- &test_number));
- EXPECT_EQ(non_extn_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(1800) 7493.5247", RegionCode::US(),
- &test_number));
- EXPECT_EQ(non_extn_number, test_number);
-
- // Check that the last instance of an extension token is matched.
- PhoneNumber extn_number;
- extn_number.set_country_code(1);
- extn_number.set_national_number(80074935247ULL);
- extn_number.set_extension("1234");
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("0~0 1800 7493 5247 ~1234", RegionCode::PL(),
- &test_number));
- EXPECT_EQ(extn_number, test_number);
-
- // Verifying bug-fix where the last digit of a number was previously omitted
- // if it was a 0 when extracting the extension. Also verifying a few different
- // cases of extensions.
- PhoneNumber uk_number;
- uk_number.set_country_code(44);
- uk_number.set_national_number(2034567890ULL);
- uk_number.set_extension("456");
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+44 2034567890x456", RegionCode::NZ(),
- &test_number));
- EXPECT_EQ(uk_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+44 2034567890x456", RegionCode::GB(),
- &test_number));
- EXPECT_EQ(uk_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+44 2034567890 x456", RegionCode::GB(),
- &test_number));
- EXPECT_EQ(uk_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+44 2034567890 X456", RegionCode::GB(),
- &test_number));
- EXPECT_EQ(uk_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+44 2034567890 X 456", RegionCode::GB(),
- &test_number));
- EXPECT_EQ(uk_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+44 2034567890 X 456", RegionCode::GB(),
- &test_number));
- EXPECT_EQ(uk_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+44 2034567890 x 456 ", RegionCode::GB(),
- &test_number));
- EXPECT_EQ(uk_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+44 2034567890 X 456", RegionCode::GB(),
- &test_number));
- EXPECT_EQ(uk_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+44-2034567890;ext=456", RegionCode::GB(),
- &test_number));
- EXPECT_EQ(uk_number, test_number);
-
- PhoneNumber us_with_extension;
- us_with_extension.set_country_code(1);
- us_with_extension.set_national_number(8009013355ULL);
- us_with_extension.set_extension("7246433");
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(800) 901-3355 x 7246433", RegionCode::US(),
- &test_number));
- EXPECT_EQ(us_with_extension, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(800) 901-3355 , ext 7246433", RegionCode::US(),
- &test_number));
- EXPECT_EQ(us_with_extension, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(800) 901-3355 ,extension 7246433",
- RegionCode::US(),
- &test_number));
- EXPECT_EQ(us_with_extension, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(800) 901-3355 ,extensión 7246433",
- RegionCode::US(),
- &test_number));
- EXPECT_EQ(us_with_extension, test_number);
- test_number.Clear();
- // Repeat with the small letter o with acute accent created by combining
- // characters.
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(800) 901-3355 ,extensión 7246433",
- RegionCode::US(),
- &test_number));
- EXPECT_EQ(us_with_extension, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(800) 901-3355 , 7246433", RegionCode::US(),
- &test_number));
- EXPECT_EQ(us_with_extension, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(800) 901-3355 ext: 7246433", RegionCode::US(),
- &test_number));
- EXPECT_EQ(us_with_extension, test_number);
-
- // Test that if a number has two extensions specified, we ignore the second.
- PhoneNumber us_with_two_extensions_number;
- us_with_two_extensions_number.set_country_code(1);
- us_with_two_extensions_number.set_national_number(2121231234ULL);
- us_with_two_extensions_number.set_extension("508");
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(212)123-1234 x508/x1234", RegionCode::US(),
- &test_number));
- EXPECT_EQ(us_with_two_extensions_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(212)123-1234 x508/ x1234", RegionCode::US(),
- &test_number));
- EXPECT_EQ(us_with_two_extensions_number, test_number);
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("(212)123-1234 x508\\x1234", RegionCode::US(),
- &test_number));
- EXPECT_EQ(us_with_two_extensions_number, test_number);
-
- // Test parsing numbers in the form (645) 123-1234-910# works, where the last
- // 3 digits before the # are an extension.
- us_with_extension.Clear();
- us_with_extension.set_country_code(1);
- us_with_extension.set_national_number(6451231234ULL);
- us_with_extension.set_extension("910");
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.Parse("+1 (645) 123 1234-910#", RegionCode::US(),
- &test_number));
- EXPECT_EQ(us_with_extension, test_number);
-}
-
-TEST_F(PhoneNumberUtilTest, ParseAndKeepRaw) {
- PhoneNumber alpha_numeric_number;
- alpha_numeric_number.set_country_code(1);
- alpha_numeric_number.set_national_number(80074935247ULL);
- alpha_numeric_number.set_raw_input("800 six-flags");
- alpha_numeric_number.set_country_code_source(
- PhoneNumber::FROM_DEFAULT_COUNTRY);
- alpha_numeric_number.set_preferred_domestic_carrier_code("");
-
- PhoneNumber test_number;
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.ParseAndKeepRawInput("800 six-flags", RegionCode::US(),
- &test_number));
- EXPECT_EQ(alpha_numeric_number, test_number);
-
- alpha_numeric_number.set_national_number(8007493524ULL);
- alpha_numeric_number.set_raw_input("1800 six-flag");
- alpha_numeric_number.set_country_code_source(
- PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN);
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.ParseAndKeepRawInput("1800 six-flag", RegionCode::US(),
- &test_number));
- EXPECT_EQ(alpha_numeric_number, test_number);
-
- alpha_numeric_number.set_raw_input("+1800 six-flag");
- alpha_numeric_number.set_country_code_source(
- PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN);
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.ParseAndKeepRawInput("+1800 six-flag", RegionCode::CN(),
- &test_number));
- EXPECT_EQ(alpha_numeric_number, test_number);
-
- alpha_numeric_number.set_raw_input("001800 six-flag");
- alpha_numeric_number.set_country_code_source(
- PhoneNumber::FROM_NUMBER_WITH_IDD);
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.ParseAndKeepRawInput("001800 six-flag",
- RegionCode::NZ(),
- &test_number));
- EXPECT_EQ(alpha_numeric_number, test_number);
-
- // Try with invalid region - expect failure.
- test_number.Clear();
- EXPECT_EQ(PhoneNumberUtil::INVALID_COUNTRY_CODE_ERROR,
- phone_util_.Parse("123 456 7890", RegionCode::CS(), &test_number));
- EXPECT_EQ(PhoneNumber::default_instance(), test_number);
-
- PhoneNumber korean_number;
- korean_number.set_country_code(82);
- korean_number.set_national_number(22123456);
- korean_number.set_raw_input("08122123456");
- korean_number.set_country_code_source(PhoneNumber::FROM_DEFAULT_COUNTRY);
- korean_number.set_preferred_domestic_carrier_code("81");
- EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
- phone_util_.ParseAndKeepRawInput("08122123456",
- RegionCode::KR(),
- &test_number));
- EXPECT_EQ(korean_number, test_number);
-}
-
-TEST_F(PhoneNumberUtilTest, IsAlphaNumber) {
- static const string kAlphaNumber("1800 six-flags");
- EXPECT_TRUE(phone_util_.IsAlphaNumber(kAlphaNumber));
- static const string kAlphaNumberWithExtension = "1800 six-flags ext. 1234";
- EXPECT_TRUE(phone_util_.IsAlphaNumber(kAlphaNumberWithExtension));
- static const string kNonAlphaNumber("1800 123-1234");
- EXPECT_FALSE(phone_util_.IsAlphaNumber(kNonAlphaNumber));
- static const string kNonAlphaNumberWithExtension(
- "1800 123-1234 extension: 1234");
- EXPECT_FALSE(phone_util_.IsAlphaNumber(kNonAlphaNumberWithExtension));
-}
-
-} // namespace phonenumbers
-} // namespace i18n
diff --git a/third_party/libphonenumber/cpp/src/re2_cache.cc b/third_party/libphonenumber/cpp/src/re2_cache.cc
deleted file mode 100644
index 1abf95e..0000000
--- a/third_party/libphonenumber/cpp/src/re2_cache.cc
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (C) 2011 Google Inc.
-//
-// 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.
-
-// Author: Fredrik Roubert <roubert@google.com>
-
-#include "re2_cache.h"
-
-#include <cstddef>
-#include <string>
-#include <utility>
-
-#include <re2/re2.h>
-
-#include "base/logging.h"
-#include "base/synchronization/lock.h"
-
-using std::string;
-
-// A basic text book string hash function implementation, this one taken from
-// The Practice of Programming (Kernighan and Pike 1999). It could be a good
-// idea in the future to evaluate how well it actually performs and possibly
-// switch to another hash function better suited to this particular use case.
-namespace __gnu_cxx {
-template<> struct hash<string> {
- enum { MULTIPLIER = 31 };
- size_t operator()(const string& key) const {
- size_t h = 0;
- for (const char* p = key.c_str(); *p != '\0'; ++p) {
- h *= MULTIPLIER;
- h += *p;
- }
- return h;
- }
-};
-} // namespace __gnu_cxx
-
-namespace i18n {
-namespace phonenumbers {
-
-RE2Cache::RE2Cache(size_t min_items) : cache_impl_(new CacheImpl(min_items)) {}
-RE2Cache::~RE2Cache() {
- base::AutoLock l(lock_);
- LOG(2) << "Cache entries upon destruction: " << cache_impl_->size();
- for (CacheImpl::const_iterator
- it = cache_impl_->begin(); it != cache_impl_->end(); ++it) {
- delete it->second;
- }
-}
-
-RE2Cache::ScopedAccess::ScopedAccess(RE2Cache* cache, const string& pattern) {
- DCHECK(cache);
- base::AutoLock l(cache->lock_);
- CacheImpl* const cache_impl = cache->cache_impl_.get();
- CacheImpl::const_iterator it = cache_impl->find(pattern);
- if (it != cache_impl->end()) {
- regexp_ = it->second;
- } else {
- regexp_ = new RE2(pattern);
- cache_impl->insert(make_pair(pattern, regexp_));
- }
-}
-
-} // namespace phonenumbers
-} // namespace i18n
diff --git a/third_party/libphonenumber/cpp/src/re2_cache.h b/third_party/libphonenumber/cpp/src/re2_cache.h
deleted file mode 100644
index ab2e9bb..0000000
--- a/third_party/libphonenumber/cpp/src/re2_cache.h
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (C) 2011 Google Inc.
-//
-// 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.
-
-// Author: Fredrik Roubert <roubert@google.com>
-
-// RE2Cache is a simple wrapper around hash_map<> to store RE2 objects.
-//
-// To get a cached RE2 object for a regexp pattern string, create a ScopedAccess
-// object with a pointer to the cache object and the pattern string itself as
-// constructor parameters. If an RE2 object corresponding to the pattern string
-// doesn't already exist, it will be created by the access object constructor.
-// The access object implements operator const RE& and can therefore be passed
-// as an argument to any function that expects an RE2 object.
-//
-// RE2Cache cache;
-// RE2Cache::ScopedAccess foo(&cache, "foo");
-// bool match = RE2::FullMatch("foobar", foo);
-
-#ifndef I18N_PHONENUMBERS_RE2_CACHE_H_
-#define I18N_PHONENUMBERS_RE2_CACHE_H_
-
-#ifdef __DEPRECATED
-#undef __DEPRECATED // Don't warn for using <hash_map>.
-#endif
-
-#include <cstddef>
-#include <hash_map>
-#include <string>
-
-#include "base/scoped_ptr.h"
-#include "base/synchronization/lock.h"
-
-namespace re2 {
-class RE2;
-} // namespace re2
-
-namespace i18n {
-namespace phonenumbers {
-
-using re2::RE2;
-using std::string;
-using __gnu_cxx::hash_map;
-
-class RE2Cache {
- private:
- typedef hash_map<string, const RE2*> CacheImpl;
-
- public:
- explicit RE2Cache(size_t min_items);
- ~RE2Cache();
-
- class ScopedAccess {
- public:
- ScopedAccess(RE2Cache* cache, const string& pattern);
- operator const RE2&() const { return *regexp_; }
-
- private:
- const RE2* regexp_;
- friend class RE2CacheTest_AccessConstructor_Test;
- };
-
- private:
- base::Lock lock_; // protects cache_impl_
- scoped_ptr<CacheImpl> cache_impl_; // protected by lock_
- friend class RE2CacheTest_CacheConstructor_Test;
- friend class RE2CacheTest_AccessConstructor_Test;
-};
-
-} // namespace phonenumbers
-} // namespace i18n
-
-#endif // I18N_PHONENUMBERS_RE2_CACHE_H_
diff --git a/third_party/libphonenumber/cpp/src/re2_cache_test.cc b/third_party/libphonenumber/cpp/src/re2_cache_test.cc
deleted file mode 100644
index 70f6c44..0000000
--- a/third_party/libphonenumber/cpp/src/re2_cache_test.cc
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (C) 2011 Google Inc.
-//
-// 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.
-
-// Author: Fredrik Roubert <roubert@google.com>
-
-#include <cstddef>
-#include <string>
-
-#include <gtest/gtest.h>
-#include <re2/re2.h>
-
-#include "re2_cache.h"
-
-namespace i18n {
-namespace phonenumbers {
-
-using std::string;
-
-class RE2CacheTest : public testing::Test {
- protected:
- static const size_t min_items_ = 2;
-
- RE2CacheTest() : cache_(min_items_) {}
- virtual ~RE2CacheTest() {}
-
- RE2Cache cache_;
-};
-
-TEST_F(RE2CacheTest, CacheConstructor) {
- ASSERT_TRUE(cache_.cache_impl_ != NULL);
- EXPECT_TRUE(cache_.cache_impl_->empty());
-}
-
-TEST_F(RE2CacheTest, AccessConstructor) {
- static const string foo("foo");
- RE2Cache::ScopedAccess access(&cache_, foo);
-
- EXPECT_TRUE(access.regexp_ != NULL);
- ASSERT_TRUE(cache_.cache_impl_ != NULL);
- EXPECT_EQ(1, cache_.cache_impl_->size());
-}
-
-TEST_F(RE2CacheTest, OperatorRE2) {
- static const string foo("foo");
- RE2Cache::ScopedAccess access(&cache_, foo);
-
- const RE2& regexp = access;
- EXPECT_EQ(foo, regexp.pattern());
-}
-
-} // namespace phonenumbers
-} // namespace i18n
diff --git a/third_party/libphonenumber/cpp/src/regexp_adapter.h b/third_party/libphonenumber/cpp/src/regexp_adapter.h
deleted file mode 100644
index 233adbe..0000000
--- a/third_party/libphonenumber/cpp/src/regexp_adapter.h
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright (C) 2011 Google Inc.
-//
-// 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.
-
-// Author: George Yakovlev
-
-#ifndef I18N_PHONENUMBERS_REGEXP_ADAPTER_H_
-#define I18N_PHONENUMBERS_REGEXP_ADAPTER_H_
-
-#include <string>
-
-// Regexp adapter to allow pluggable regexp engine, as it is external to
-// libphonenumber.
-
-namespace reg_exp {
-
-// The reg exp input class.
-// It supports only functions used in phonelibrary.
-class RegularExpressionInput {
- public:
- virtual ~RegularExpressionInput() {};
-
- // Matches string to regular expression, returns true if expression was
- // matched, false otherwise, advances position in the match.
- // |reg_exp| - expression to be matched.
- // |beginning_only| - if true match would be successfull only if appears at
- // the beginning of the tested region of the string.
- // |matched_string1| - successfully matched first string. Can be NULL.
- // |matched_string2| - successfully matched second string. Can be NULL.
- virtual bool ConsumeRegExp(std::string const& reg_exp,
- bool beginning_only,
- std::string* matched_string1,
- std::string* matched_string2) = 0;
- // Convert unmatched input to a string.
- virtual std::string ToString() const = 0;
-};
-
-// The regular expression class.
-// It supports only functions used in phonelibrary.
-class RegularExpression {
- public:
- RegularExpression() {}
- virtual ~RegularExpression() {}
-
- // Matches string to regular expression, returns true if expression was
- // matched, false otherwise, advances position in the match.
- // |input_string| - string to be searched.
- // |beginning_only| - if true match would be successfull only if appears at
- // the beginning of the tested region of the string.
- // |matched_string1| - successfully matched first string. Can be NULL.
- // |matched_string2| - successfully matched second string. Can be NULL.
- // |matched_string3| - successfully matched third string. Can be NULL.
- virtual bool Consume(RegularExpressionInput* input_string,
- bool beginning_only,
- std::string* matched_string1 = NULL,
- std::string* matched_string2 = NULL,
- std::string* matched_string3 = NULL) const = 0;
-
-
- // Matches string to regular expression, returns true if expression was
- // matched, false otherwise.
- // |input_string| - string to be searched.
- // |full_match| - if true match would be successfull only if it matches the
- // complete string.
- // |matched_string| - successfully matched string. Can be NULL.
- virtual bool Match(const char* input_string,
- bool full_match,
- std::string* matched_string) const = 0;
-
- // Replaces match(es) in the |string_to_process|. if |global| is true,
- // replaces all the matches, only the first match otherwise.
- // |replacement_string| - text the matches are replaced with.
- // Returns true if expression successfully processed through the string,
- // even if no actual replacements were made. Returns false in case of an
- // error.
- virtual bool Replace(std::string* string_to_process,
- bool global,
- const char* replacement_string) const = 0;
-};
-
-RegularExpressionInput* CreateRegularExpressionInput(const char* utf8_input);
-RegularExpression* CreateRegularExpression(const char* utf8_regexp);
-
-} // namespace reg_exp
-
-#endif // I18N_PHONENUMBERS_REGEXP_ADAPTER_H_
diff --git a/third_party/libphonenumber/cpp/src/regexp_adapter_re2.cc b/third_party/libphonenumber/cpp/src/regexp_adapter_re2.cc
deleted file mode 100644
index f7a230c..0000000
--- a/third_party/libphonenumber/cpp/src/regexp_adapter_re2.cc
+++ /dev/null
@@ -1,192 +0,0 @@
-// Copyright (C) 2011 Google Inc.
-//
-// 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.
-
-// Author: George Yakovlev
-#include "regexp_adapter.h"
-
-#include <re2/re2.h>
-#include <re2/stringpiece.h>
-#include <re2/re2.h>
-
-namespace {
-scoped_ptr<RE2Cache> re2_cache;
-} // namespace
-
-class RE2RegularExpressionInput : public RegularExpressionInput {
- public:
- RE2RegularExpressionInput(const char* utf8_input);
-
- virtual bool ConsumeRegExp(std::string const& reg_exp,
- bool beginning_only,
- std::string* matched_string1,
- std::string* matched_string2);
- virtual std::string ToString() const;
- private:
- StringPiece utf8_input_;
-};
-
-
-class RE2RegularExpression : public reg_exp::RegularExpression {
- public:
- RE2RegularExpression(const char* utf8_regexp);
-
- virtual bool Consume(reg_exp::RegularExpressionInput* input_string,
- bool beginning_only,
- std::string* matched_string1,
- std::string* matched_string2,
- std::string* matched_string3) const;
-
- virtual bool Match(const char* input_string,
- bool full_match,
- std::string* matched_string) const;
-
- virtual bool Replace(std::string* string_to_process,
- bool global,
- const char* replacement_string) const;
- private:
- RE2 utf8_regexp_;
-};
-
-RE2RegularExpressionInput::RE2RegularExpressionInput(const char* utf8_input)
- : utf8_input_(utf8_input) {
- DCHECK(utf8_input);
-}
-
-bool RE2RegularExpressionInput::ConsumeRegExp(std::string const& reg_exp,
- bool beginning_only,
- std::string* matched_string1,
- std::string* matched_string2) {
- if (beginning_only) {
- if (matched_string2)
- return RE2::Consume(&utf8_input_,
- RE2Cache::ScopedAccess(re2_cache.get(), reg_exp),
- matched_string1, matched_string2);
- else if (matched_string1)
- return RE2::Consume(&utf8_input_,
- RE2Cache::ScopedAccess(re2_cache.get(), reg_exp),
- matched_string1);
- else
- return RE2::Consume(&utf8_input_,
- RE2Cache::ScopedAccess(re2_cache.get(), reg_exp));
- } else {
- if (matched_string2)
- return RE2::FindAndConsume(&utf8_input_,
- RE2Cache::ScopedAccess(re2_cache.get(),
- reg_exp),
- matched_string1, matched_string2);
- else if (matched_string1)
- return RE2::FindAndConsume(&utf8_input_,
- RE2Cache::ScopedAccess(re2_cache.get(),
- reg_exp),
- matched_string1);
- else
- return RE2::FindAndConsume(&utf8_input_,
- RE2Cache::ScopedAccess(re2_cache.get(),
- reg_exp));
- }
-}
-
-std::string RE2RegularExpressionInput::ToString() const {
- utf8_input_.ToString();
-}
-
-RE2RegularExpression::RE2RegularExpression(const char* utf8_regexp)
- : utf8_regexp_(utf8_regexp) {
- DCHECK(utf8_regexp);
-}
-
-bool RE2RegularExpression::Consume(RegularExpressionInput* input_string,
- bool beginning_only,
- std::string* matched_string1,
- std::string* matched_string2,
- std::string* matched_string3) const {
- DCHECK(input_string);
- // matched_string1 may be NULL
- // matched_string2 may be NULL
- if (beginning_only) {
- if (matched_string3) {
- return RE2::Consume(input_string, utf8_regexp_,
- matched_string1, matched_string2, matched_string3);
- } else if (matched_string2) {
- return RE2::Consume(input_string, utf8_regexp_,
- matched_string1, matched_string2);
- } else if (matched_string1) {
- return RE2::Consume(input_string, utf8_regexp_, matched_string1);
- } else {
- return RE2::Consume(input_string, utf8_regexp_);
- }
- } else {
- if (matched_string3) {
- return RE2::FindAndConsume(input_string, utf8_regexp_,
- matched_string1, matched_string2,
- matched_string3);
- } else if (matched_string2) {
- return RE2::FindAndConsume(input_string, utf8_regexp_,
- matched_string1, matched_string2);
- } else if (matched_string1) {
- return RE2::FindAndConsume(input_string, utf8_regexp_, matched_string1);
- } else {
- return RE2::FindAndConsume(input_string, utf8_regexp_);
- }
- }
-}
-
-bool RE2RegularExpression::Match(const char* input_string,
- bool full_match,
- std::string* matched_string) const {
- DCHECK(input_string);
- // matched_string may be NULL
- if (full_match) {
- if (matched_string)
- return RE2::FullMatch(input_string, matched_string);
- else
- return RE2::FullMatch(input_string);
- } else {
- if (matched_string)
- return RE2::PartialMatch(input_string, matched_string);
- else
- return RE2::PartialMatch(input_string);
- }
-}
-
-bool RE2RegularExpression::Replace(std::string* string_to_process,
- bool global,
- const char* replacement_string) const {
- DCHECK(string_to_process);
- DCHECK(replacement_string);
- if (global) {
- StringPiece str(replacement_string);
- return RE2::GlobalReplace(string_to_process, str);
- } else {
- return RE2::Replace(string_to_process, replacement_string);
- }
-}
-
-
-namespace reg_exp {
-
-RegularExpressionInput* CreateRegularExpressionInput(const char* utf8_input) {
- if (!re2_cache.get())
- re2_cache.reset(new RE2Cache(64));
- return new RE2RegularExpressionInput(utf8_input);
-}
-
-RegularExpression* CreateRegularExpression(const char* utf8_regexp) {
- if (!re2_cache.get())
- re2_cache.reset(new RE2Cache(64));
- return new RE2RegularExpression(utf8_regexp);
-}
-
-} // namespace reg_exp
-
diff --git a/third_party/libphonenumber/cpp/src/regexp_adapter_unittest.cc b/third_party/libphonenumber/cpp/src/regexp_adapter_unittest.cc
deleted file mode 100644
index 446f83c..0000000
--- a/third_party/libphonenumber/cpp/src/regexp_adapter_unittest.cc
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright (C) 2011 Google Inc.
-//
-// 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.
-
-// Author: George Yakovlev
-#include <gtest/gtest.h>
-
-#include "base/scoped_ptr.h"
-#include "regexp_adapter.h"
-
-namespace reg_exp {
-
-TEST(RegExpAdapter, TestConsumeRegExp) {
- scoped_ptr<const reg_exp::RegularExpression> reg_exp1(
- reg_exp::CreateRegularExpression("[0-9a-z]+"));
- scoped_ptr<const reg_exp::RegularExpression> reg_exp2(
- reg_exp::CreateRegularExpression(" \\(([0-9a-z]+)\\)"));
- scoped_ptr<const reg_exp::RegularExpression> reg_exp3(
- reg_exp::CreateRegularExpression("([0-9a-z]+)-([0-9a-z]+)"));
-
- scoped_ptr<reg_exp::RegularExpressionInput> reg_input1(
- reg_exp::CreateRegularExpressionInput("+1-123-456-789"));
- scoped_ptr<reg_exp::RegularExpressionInput> reg_input2(
- reg_exp::CreateRegularExpressionInput("1 (123)456-789"));
-
- EXPECT_FALSE(reg_exp1->Consume(reg_input1.get(), true, NULL, NULL));
- EXPECT_EQ(reg_input1->ToString(), "+1-123-456-789");
- EXPECT_TRUE(reg_exp1->Consume(reg_input1.get(), false, NULL, NULL));
- EXPECT_EQ(reg_input1->ToString(), "-123-456-789");
- std::string res1, res2;
- EXPECT_FALSE(reg_exp2->Consume(reg_input1.get(), true, &res1, NULL));
- EXPECT_FALSE(reg_exp3->Consume(reg_input1.get(), true, &res1, &res2));
- EXPECT_TRUE(reg_exp3->Consume(reg_input1.get(), false, &res1, &res2));
- EXPECT_EQ(reg_input1->ToString(), "-789");
- EXPECT_EQ(res1, "123");
- EXPECT_EQ(res2, "456");
-
- EXPECT_EQ(reg_input2->ToString(), "1 (123)456-789");
- EXPECT_TRUE(reg_exp1->Consume(reg_input2.get(), true, NULL, NULL));
- EXPECT_EQ(reg_input2->ToString(), " (123)456-789");
- EXPECT_TRUE(reg_exp2->Consume(reg_input2.get(), true, &res1, NULL));
- EXPECT_EQ(reg_input2->ToString(), "456-789");
- EXPECT_EQ(res1, "123");
- EXPECT_TRUE(reg_exp3->Consume(reg_input2.get(), true, &res1, &res2));
- EXPECT_EQ(reg_input2->ToString(), "");
- EXPECT_EQ(res1, "456");
- EXPECT_EQ(res2, "789");
-}
-
-TEST(RegExpAdapter, TestConsumeInput) {
- scoped_ptr<reg_exp::RegularExpressionInput> reg_input(
- reg_exp::CreateRegularExpressionInput("1 (123)456-789"));
- std::string res1, res2;
- EXPECT_EQ(reg_input->ToString(), "1 (123)456-789");
- EXPECT_FALSE(reg_input->ConsumeRegExp(std::string("\\[1\\]"),
- true,
- &res1,
- &res2));
- EXPECT_EQ(reg_input->ToString(), "1 (123)456-789");
- EXPECT_FALSE(reg_input->ConsumeRegExp(std::string("([0-9]+) \\([0-9]+\\)"),
- true,
- &res1,
- &res2));
- EXPECT_EQ(reg_input->ToString(), "1 (123)456-789");
- EXPECT_TRUE(reg_input->ConsumeRegExp(std::string("([0-9]+) \\(([0-9]+)\\)"),
- true,
- &res1,
- &res2));
- EXPECT_EQ(reg_input->ToString(), "456-789");
- EXPECT_EQ(res1, "1");
- EXPECT_EQ(res2, "123");
-}
-
-TEST(RegExpAdapter, TestMatch) {
- scoped_ptr<const reg_exp::RegularExpression> reg_exp(
- reg_exp::CreateRegularExpression("([0-9a-z]+)"));
- std::string matched;
- EXPECT_TRUE(reg_exp->Match("12345af", true, &matched));
- EXPECT_EQ(matched, "12345af");
- EXPECT_TRUE(reg_exp->Match("12345af", false, &matched));
- EXPECT_EQ(matched, "12345af");
- EXPECT_TRUE(reg_exp->Match("12345af", false, NULL));
- EXPECT_TRUE(reg_exp->Match("12345af", true, NULL));
-
- EXPECT_FALSE(reg_exp->Match("[12]", true, &matched));
- EXPECT_TRUE(reg_exp->Match("[12]", false, &matched));
- EXPECT_EQ(matched, "12");
-
- EXPECT_FALSE(reg_exp->Match("[]", true, &matched));
- EXPECT_FALSE(reg_exp->Match("[]", false, &matched));
-}
-
-TEST(RegExpAdapter, TestReplace) {
- scoped_ptr<const reg_exp::RegularExpression> reg_exp(
- reg_exp::CreateRegularExpression("[0-9]"));
-
- std::string s("123-4567 ");
- EXPECT_TRUE(reg_exp->Replace(&s, false, "+"));
- EXPECT_EQ(s, "+23-4567 ");
- EXPECT_TRUE(reg_exp->Replace(&s, false, "+"));
- EXPECT_EQ(s, "++3-4567 ");
- EXPECT_TRUE(reg_exp->Replace(&s, true, "*"));
- EXPECT_EQ(s, "++*-**** ");
- EXPECT_TRUE(reg_exp->Replace(&s, true, "*"));
- EXPECT_EQ(s, "++*-**** ");
-
- scoped_ptr<const reg_exp::RegularExpression> full_number_expr(
- reg_exp::CreateRegularExpression("(\\d{3})(\\d{3})(\\d{4})"));
- s = "1234567890:0987654321";
- EXPECT_TRUE(full_number_expr->Replace(&s, true, "(\\1) \\2-\\3$1"));
- EXPECT_EQ(s, "(123) 456-7890$1:(098) 765-4321$1");
-}
-
-TEST(RegExpAdapter, TestUtf8) {
- // Expression: <tel symbol><opening square bracket>[<alpha>-<omega>]*
- // <closing square bracket>
- scoped_ptr<const reg_exp::RegularExpression> reg_exp(
- reg_exp::CreateRegularExpression(
- "\xe2\x84\xa1\xe2\x8a\x8f([\xce\xb1-\xcf\x89]*)\xe2\x8a\x90"));
- std::string matched;
- // The string is split to avoid problem with MSVC compiler when it thinks
- // 123 is a part of character code.
- EXPECT_FALSE(reg_exp->Match("\xe2\x84\xa1\xe2\x8a\x8f" "123\xe2\x8a\x90",
- true, &matched));
- EXPECT_TRUE(reg_exp->Match(
- "\xe2\x84\xa1\xe2\x8a\x8f\xce\xb1\xce\xb2\xe2\x8a\x90", true, &matched));
- // <alpha><betha>
- EXPECT_EQ(matched, "\xce\xb1\xce\xb2");
-}
-
-} // namespace reg_exp
-
diff --git a/third_party/libphonenumber/cpp/src/run_tests.cc b/third_party/libphonenumber/cpp/src/run_tests.cc
deleted file mode 100644
index b38e7bc..0000000
--- a/third_party/libphonenumber/cpp/src/run_tests.cc
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <gtest/gtest.h>
-
-int main(int argc, char** argv) {
- ::testing::InitGoogleTest(&argc, argv);
-
- return RUN_ALL_TESTS();
-}
diff --git a/third_party/libphonenumber/cpp/src/stringutil.cc b/third_party/libphonenumber/cpp/src/stringutil.cc
deleted file mode 100644
index 70ec010..0000000
--- a/third_party/libphonenumber/cpp/src/stringutil.cc
+++ /dev/null
@@ -1,273 +0,0 @@
-// Copyright (C) 2011 Google Inc.
-//
-// 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.
-
-// Author: Philippe Liard
-
-#include <cassert>
-#include <cstring>
-#include <sstream>
-
-#include "stringutil.h"
-
-namespace i18n {
-namespace phonenumbers {
-
-using std::stringstream;
-
-string operator+(const string& s, int n) {
- stringstream stream;
-
- stream << s << n;
- string result;
- stream >> result;
-
- return result;
-}
-
-template <typename T>
-string GenericSimpleItoa(const T& n) {
- stringstream stream;
-
- stream << n;
- string result;
- stream >> result;
-
- return result;
-}
-
-string SimpleItoa(int n) {
- return GenericSimpleItoa(n);
-}
-
-string SimpleItoa(uint64 n) {
- return GenericSimpleItoa(n);
-}
-
-void StripString(string* s, const char* remove, char replacewith) {
- const char* str_start = s->c_str();
- const char* str = str_start;
- for (str = strpbrk(str, remove);
- str != NULL;
- str = strpbrk(str + 1, remove)) {
- (*s)[str - str_start] = replacewith;
- }
-}
-
-bool TryStripPrefixString(const string& in, const string& prefix, string* out) {
- assert(out);
- const bool has_prefix = in.compare(0, prefix.length(), prefix) == 0;
- out->assign(has_prefix ? in.substr(prefix.length()) : in);
-
- return has_prefix;
-}
-
-bool HasSuffixString(const string& s, const string& suffix) {
- if (s.length() < suffix.length()) {
- return false;
- }
- return s.compare(s.length() - suffix.length(), suffix.length(), suffix) == 0;
-}
-
-template <typename T>
-void GenericAtoi(const string& s, T* out) {
- stringstream stream;
- stream << s;
- stream >> *out;
-}
-
-void safe_strto32(const string& s, int32 *n) {
- GenericAtoi(s, n);
-}
-
-void safe_strtou64(const string& s, uint64 *n) {
- GenericAtoi(s, n);
-}
-
-void strrmm(string* s, const string& chars) {
- for (string::iterator it = s->begin(); it != s->end(); ) {
- const char current_char = *it;
- if (chars.find(current_char) != string::npos) {
- it = s->erase(it);
- } else {
- ++it;
- }
- }
-}
-
-// StringHolder class
-
-StringHolder::StringHolder(const string& s) :
- string_(&s),
- cstring_(NULL),
- len_(s.size())
-{}
-
-StringHolder::StringHolder(const char* s) :
- string_(NULL),
- cstring_(s),
- len_(std::strlen(s))
-{}
-
-StringHolder::StringHolder(uint64 n) :
- converted_string_(SimpleItoa(n)),
- string_(&converted_string_),
- cstring_(NULL),
- len_(converted_string_.length())
-{}
-
-StringHolder::~StringHolder() {}
-
-// StrCat
-
-// Implements s += sh; (s: string, sh: StringHolder)
-string& operator+=(string& lhs, const StringHolder& rhs) {
- const string* const s = rhs.GetString();
- if (s) {
- lhs += *s;
- } else {
- const char* const cs = rhs.GetCString();
- if (cs)
- lhs.append(cs, rhs.Length());
- }
- return lhs;
-}
-
-string StrCat(const StringHolder& s1, const StringHolder& s2) {
- string result;
- result.reserve(s1.Length() + s2.Length() + 1);
-
- result += s1;
- result += s2;
-
- return result;
-}
-
-string StrCat(const StringHolder& s1, const StringHolder& s2,
- const StringHolder& s3) {
- string result;
- result.reserve(s1.Length() + s2.Length() + s3.Length() + 1);
-
- result += s1;
- result += s2;
- result += s3;
-
- return result;
-}
-
-string StrCat(const StringHolder& s1, const StringHolder& s2,
- const StringHolder& s3, const StringHolder& s4) {
- string result;
- result.reserve(s1.Length() + s2.Length() + s3.Length() + s4.Length() + 1);
-
- result += s1;
- result += s2;
- result += s3;
- result += s4;
-
- return result;
-}
-
-string StrCat(const StringHolder& s1, const StringHolder& s2,
- const StringHolder& s3, const StringHolder& s4,
- const StringHolder& s5) {
- string result;
- result.reserve(s1.Length() + s2.Length() + s3.Length() + s4.Length() +
- s5.Length() + 1);
- result += s1;
- result += s2;
- result += s3;
- result += s4;
- result += s5;
-
- return result;
-}
-
-string StrCat(const StringHolder& s1, const StringHolder& s2,
- const StringHolder& s3, const StringHolder& s4,
- const StringHolder& s5, const StringHolder& s6) {
- string result;
- result.reserve(s1.Length() + s2.Length() + s3.Length() + s4.Length() +
- s5.Length() + s6.Length() + 1);
- result += s1;
- result += s2;
- result += s3;
- result += s4;
- result += s5;
- result += s6;
-
- return result;
-}
-
-string StrCat(const StringHolder& s1, const StringHolder& s2,
- const StringHolder& s3, const StringHolder& s4,
- const StringHolder& s5, const StringHolder& s6,
- const StringHolder& s7) {
- string result;
- result.reserve(s1.Length() + s2.Length() + s3.Length() + s4.Length() +
- s5.Length() + s6.Length() + s7.Length() + 1);
- result += s1;
- result += s2;
- result += s3;
- result += s4;
- result += s5;
- result += s6;
- result += s7;
-
- return result;
-}
-
-string StrCat(const StringHolder& s1, const StringHolder& s2,
- const StringHolder& s3, const StringHolder& s4,
- const StringHolder& s5, const StringHolder& s6,
- const StringHolder& s7, const StringHolder& s8,
- const StringHolder& s9, const StringHolder& s10,
- const StringHolder& s11) {
- string result;
- result.reserve(s1.Length() + s2.Length() + s3.Length() + s4.Length() +
- s5.Length() + s6.Length() + s7.Length() + s8.Length() +
- s9.Length() + s10.Length() + s11.Length());
- result += s1;
- result += s2;
- result += s3;
- result += s4;
- result += s5;
- result += s6;
- result += s7;
- result += s8;
- result += s9;
- result += s10;
- result += s11;
-
- return result;
-}
-
-// StrAppend
-
-void StrAppend(string* dest, const StringHolder& s1) {
- assert(dest);
-
- dest->reserve(dest->length() + s1.Length() + 1);
- *dest += s1;
-}
-
-void StrAppend(string* dest, const StringHolder& s1, const StringHolder& s2) {
- assert(dest);
-
- dest->reserve(dest->length() + s1.Length() + s2.Length() + 1);
- *dest += s1;
- *dest += s2;
-}
-
-} // namespace phonenumbers
-} // namespace i18n
diff --git a/third_party/libphonenumber/cpp/src/stringutil.h b/third_party/libphonenumber/cpp/src/stringutil.h
deleted file mode 100644
index a9ba6fc..0000000
--- a/third_party/libphonenumber/cpp/src/stringutil.h
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright (C) 2011 Google Inc.
-//
-// 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.
-
-// Author: Philippe Liard
-
-#ifndef I18N_PHONENUMBERS_STRINGUTIL_H_
-#define I18N_PHONENUMBERS_STRINGUTIL_H_
-
-#include <cstddef>
-#include <string>
-
-#include "base/basictypes.h"
-
-namespace i18n {
-namespace phonenumbers {
-
-using std::string;
-
-// Supports string("hello") + 10.
-string operator+(const string& s, int n);
-
-// Converts integer to string.
-string SimpleItoa(uint64 n);
-string SimpleItoa(int n);
-
-// Replaces any occurrence of the character 'remove' (or the characters
-// in 'remove') with the character 'replacewith'.
-void StripString(string* s, const char* remove, char replacewith);
-
-// Returns true if 'in' starts with 'prefix' and writes 'in' minus 'prefix' into
-// 'out'.
-bool TryStripPrefixString(const string& in, const string& prefix, string* out);
-
-// Returns true if 's' ends with 'suffix'.
-bool HasSuffixString(const string& s, const string& suffix);
-
-// Converts string to int32.
-void safe_strto32(const string& s, int32 *n);
-
-// Converts string to uint64.
-void safe_strtou64(const string& s, uint64 *n);
-
-// Remove all occurrences of a given set of characters from a string.
-void strrmm(string* s, const string& chars);
-
-// Holds a reference to a std::string or C string. It can also be constructed
-// from an integer which is converted to a string.
-class StringHolder {
-public:
- // Don't make the constructors explicit to make the StrCat usage convenient.
- StringHolder(const string& s);
- StringHolder(const char* s);
- StringHolder(uint64 n);
- ~StringHolder();
-
- const string* GetString() const {
- return string_;
- }
-
- const char* GetCString() const {
- return cstring_;
- }
-
- size_t Length() const {
- return len_;
- }
-
-private:
- const string converted_string_; // Stores the string converted from integer.
- const string* const string_;
- const char* const cstring_;
- const size_t len_;
-};
-
-string& operator+=(string& lhs, const StringHolder& rhs);
-
-// Efficient string concatenation.
-
-string StrCat(const StringHolder& s1, const StringHolder& s2);
-
-string StrCat(const StringHolder& s1, const StringHolder& s2,
- const StringHolder& s3);
-
-string StrCat(const StringHolder& s1, const StringHolder& s2,
- const StringHolder& s3, const StringHolder& s4);
-
-string StrCat(const StringHolder& s1, const StringHolder& s2,
- const StringHolder& s3, const StringHolder& s4,
- const StringHolder& s5);
-
-string StrCat(const StringHolder& s1, const StringHolder& s2,
- const StringHolder& s3, const StringHolder& s4,
- const StringHolder& s5, const StringHolder& s6);
-
-string StrCat(const StringHolder& s1, const StringHolder& s2,
- const StringHolder& s3, const StringHolder& s4,
- const StringHolder& s5, const StringHolder& s6,
- const StringHolder& s7);
-
-string StrCat(const StringHolder& s1, const StringHolder& s2,
- const StringHolder& s3, const StringHolder& s4,
- const StringHolder& s5, const StringHolder& s6,
- const StringHolder& s7, const StringHolder& s8,
- const StringHolder& s9, const StringHolder& s10,
- const StringHolder& s11);
-
-void StrAppend(string* dest, const StringHolder& s1);
-
-void StrAppend(string* dest, const StringHolder& s1, const StringHolder& s2);
-
-} // namespace phonenumbers
-} // namespace i18n
-
-#endif // I18N_PHONENUMBERS_STRINGUTIL_H_
diff --git a/third_party/libphonenumber/cpp/src/stringutil_test.cc b/third_party/libphonenumber/cpp/src/stringutil_test.cc
deleted file mode 100644
index 3d665e2..0000000
--- a/third_party/libphonenumber/cpp/src/stringutil_test.cc
+++ /dev/null
@@ -1,208 +0,0 @@
-// Copyright (C) 2011 Google Inc.
-//
-// 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.
-
-// Author: Philippe Liard
-
-#include <gtest/gtest.h>
-
-#include "stringutil.h"
-
-namespace i18n {
-namespace phonenumbers {
-
-// Test operator+(const string&, int).
-TEST(StringUtilTest, OperatorPlus) {
- EXPECT_EQ("hello10", string("hello") + 10);
-}
-
-// Test SimpleItoa implementation.
-TEST(StringUtilTest, SimpleItoa) {
- EXPECT_EQ("10", SimpleItoa(10));
-}
-
-// Test TryStripPrefixString.
-TEST(StringUtilTest, TryStripPrefixString) {
- string s;
-
- EXPECT_TRUE(TryStripPrefixString("hello world", "hello", &s));
- EXPECT_EQ(" world", s);
- s.clear();
-
- EXPECT_FALSE(TryStripPrefixString("hello world", "helloa", &s));
- s.clear();
-
- EXPECT_TRUE(TryStripPrefixString("hello world", "", &s));
- EXPECT_EQ("hello world", s);
- s.clear();
-
- EXPECT_FALSE(TryStripPrefixString("", "hello", &s));
- s.clear();
-}
-
-// Test HasSuffixString.
-TEST(StringUtilTest, HasSuffixString) {
- EXPECT_TRUE(HasSuffixString("hello world", "hello world"));
- EXPECT_TRUE(HasSuffixString("hello world", "world"));
- EXPECT_FALSE(HasSuffixString("hello world", "world!"));
- EXPECT_TRUE(HasSuffixString("hello world", ""));
- EXPECT_FALSE(HasSuffixString("", "hello"));
-}
-
-// Test safe_strto32.
-TEST(StringUtilTest, safe_strto32) {
- int32 n;
-
- safe_strto32("0", &n);
- EXPECT_EQ(0, n);
-
- safe_strto32("16", &n);
- EXPECT_EQ(16, n);
-
- safe_strto32("2147483647", &n);
- EXPECT_EQ(2147483647, n);
-
- safe_strto32("-2147483648", &n);
- EXPECT_EQ(-2147483648, n);
-}
-
-// Test safe_strtou64.
-TEST(StringUtilTest, safe_strtou64) {
- uint64 n;
-
- safe_strtou64("0", &n);
- EXPECT_EQ(0, n);
-
- safe_strtou64("16", &n);
- EXPECT_EQ(16, n);
-
- safe_strtou64("18446744073709551615UL", &n);
- EXPECT_EQ(18446744073709551615ULL, n);
-}
-
-// Test strrmm.
-TEST(StringUtilTest, strrmm) {
- string input("hello");
-
- strrmm(&input, "");
- EXPECT_EQ(input, input);
-
- string empty;
- strrmm(&empty, "");
- EXPECT_EQ("", empty);
-
- strrmm(&empty, "aa");
- EXPECT_EQ("", empty);
-
- strrmm(&input, "h");
- EXPECT_EQ("ello", input);
-
- strrmm(&input, "el");
- EXPECT_EQ("o", input);
-}
-
-// Test the StringHolder class.
-TEST(StringUtilTest, StringHolder) {
- // Test with C string.
- static const char cstring[] = "aaa";
- StringHolder sh1(cstring);
- EXPECT_EQ(cstring, sh1.GetCString());
- EXPECT_EQ(NULL, sh1.GetString());
-
- // Test with std::string.
- string s = "bbb";
- StringHolder sh2(s);
- EXPECT_EQ(NULL, sh2.GetCString());
- EXPECT_EQ(&s, sh2.GetString());
-
- // Test GetLength().
- string s2 = "hello";
- StringHolder sh3(s2);
- EXPECT_EQ(5, sh3.Length());
-
- // Test with uint64.
- StringHolder sh4(42);
- EXPECT_TRUE(sh4.GetCString() == NULL);
- EXPECT_EQ(2, sh4.Length());
- EXPECT_EQ("42", *sh4.GetString());
-}
-
-// Test the operator+=(string& lhs, const StringHolder& rhs) implementation.
-TEST(StringUtilTest, OperatorPlusEquals) {
- // Test with a const char* string to append.
- string s = "h";
- static const char append1[] = "ello";
- s += StringHolder(append1); // force StringHolder usage
-
- EXPECT_EQ("hello", s);
-
- // Test with a std::string to append.
- s = "h";
- string append2 = "ello";
- s += StringHolder(append2); // force StringHolder usage
-
- EXPECT_EQ("hello", s);
-}
-
-// Test the StrCat implementations
-TEST(StringUtilTest, StrCat) {
- string s;
-
- // Test with 2 arguments.
- s = StrCat("a", "b");
- EXPECT_EQ("ab", s);
-
- // Test with 3 arguments.
- s = StrCat("a", "b", "c");
- EXPECT_EQ("abc", s);
-
- // Test with 4 arguments.
- s = StrCat("a", "b", "c", "d");
- EXPECT_EQ("abcd", s);
-
- // Test with 5 arguments.
- s = StrCat("a", "b", "c", "d", "e");
- EXPECT_EQ("abcde", s);
-
- // Test with 6 arguments.
- s = StrCat("a", "b", "c", "d", "e", "f");
- EXPECT_EQ("abcdef", s);
-
- // Test with 7 arguments.
- s = StrCat("a", "b", "c", "d", "e", "f", "g");
- EXPECT_EQ("abcdefg", s);
-
- // Test with 11 arguments.
- s = StrCat("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k");
- EXPECT_EQ("abcdefghijk", s);
-}
-
-// Test the StrAppend implementations.
-TEST(StringUtilTest, StrAppend) {
- string s;
-
- // Test with 1 argument.
- StrAppend(&s, "a");
- EXPECT_EQ("a", s);
-
- // Test with 2 arguments.
- StrAppend(&s, "b", "c");
- EXPECT_EQ("abc", s);
-
- // Test with int argument.
- StrAppend(&s, 42);
- EXPECT_EQ("abc42", s);
-}
-
-} // namespace phonenumbers
-} // namespace i18n
diff --git a/third_party/libphonenumber/cpp/src/test_metadata.cc b/third_party/libphonenumber/cpp/src/test_metadata.cc
deleted file mode 100644
index 6c1d409..0000000
--- a/third_party/libphonenumber/cpp/src/test_metadata.cc
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-#include "test_metadata.h"
-
-static const unsigned char test_metadata_data[] = { 0x0A, 0x67, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x44, 0x50, 0xF8, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF8, 0x01, 0x0A, 0x12, 0x12, 0x09, 0x5B, 0x32, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x31, 0x12, 0x1D, 0x32, 0x5C, 0x64, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5C, 0x64, 0x5B, 0x32, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x1F, 0x12, 0x0B, 0x39, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x39, 0x32, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x4F, 0x50, 0xF4, 0x01, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x03, 0x30, 0x7E, 0x30, 0x7A, 0x03, 0x30, 0x7E, 0x30, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xF4, 0x05, 0x0A, 0x1C, 0x12, 0x10, 0x5B, 0x31, 0x2D, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x16, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x1F, 0x12, 0x12, 0x39, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x7C, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x22, 0x11, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x2A, 0x18, 0x12, 0x0E, 0x36, 0x28, 0x30, 0x5C, 0x64, 0x7C, 0x31, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x52, 0x50, 0x36, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x15, 0x30, 0x28, 0x3F, 0x3A, 0x28, 0x31, 0x31, 0x7C, 0x33, 0x34, 0x33, 0x7C, 0x33, 0x37, 0x31, 0x35, 0x29, 0x31, 0x35, 0x29, 0x3F, 0x82, 0x01, 0x03, 0x39, 0x24, 0x31, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x02, 0x31, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x36, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x0C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x13, 0x39, 0x28, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x31, 0x35, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x39, 0x31, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x43, 0x0A, 0x16, 0x39, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x11, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x07, 0x30, 0x24, 0x31, 0x20, 0x24, 0x43, 0x43, 0x9A, 0x01, 0x2E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x36, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x27, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x02, 0x31, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x0C, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x39, 0x29, 0x28, 0x31, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x03, 0x39, 0x31, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x3C, 0x0A, 0x18, 0x28, 0x39, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x11, 0x39, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x32, 0x33, 0x5D, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x29, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x36, 0x38, 0x5D, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xAF, 0x02, 0x0A, 0x1B, 0x12, 0x0F, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x35, 0x7D, 0x12, 0x14, 0x12, 0x0B, 0x5B, 0x32, 0x33, 0x37, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x0F, 0x12, 0x06, 0x34, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x22, 0x13, 0x12, 0x09, 0x31, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x2A, 0x18, 0x12, 0x0E, 0x31, 0x39, 0x30, 0x5B, 0x30, 0x31, 0x32, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x41, 0x55, 0x50, 0x3D, 0x5A, 0x07, 0x30, 0x30, 0x31, 0x5B, 0x31, 0x32, 0x5D, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x8A, 0x01, 0x04, 0x30, 0x30, 0x31, 0x31, 0x9A, 0x01, 0x2A, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x31, 0x22, 0x02, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x32, 0x2D, 0x34, 0x37, 0x38, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC1, 0x02, 0x0A, 0x29, 0x12, 0x1D, 0x28, 0x32, 0x34, 0x32, 0x7C, 0x38, 0x28, 0x30, 0x30, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x7C, 0x39, 0x30, 0x30, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x6C, 0x12, 0x60, 0x32, 0x34, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x32, 0x7C, 0x5B, 0x32, 0x33, 0x36, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x34, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x37, 0x5B, 0x33, 0x2D, 0x35, 0x37, 0x5D, 0x7C, 0x39, 0x5B, 0x32, 0x2D, 0x35, 0x5D, 0x29, 0x7C, 0x34, 0x28, 0x3F, 0x3A, 0x32, 0x5B, 0x32, 0x33, 0x37, 0x5D, 0x7C, 0x35, 0x31, 0x7C, 0x36, 0x34, 0x7C, 0x37, 0x37, 0x29, 0x7C, 0x35, 0x30, 0x32, 0x7C, 0x36, 0x33, 0x36, 0x7C, 0x37, 0x30, 0x32, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x23, 0x12, 0x19, 0x32, 0x34, 0x32, 0x28, 0x33, 0x35, 0x37, 0x7C, 0x33, 0x35, 0x39, 0x7C, 0x34, 0x35, 0x37, 0x7C, 0x35, 0x35, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x22, 0x1D, 0x12, 0x13, 0x38, 0x28, 0x30, 0x30, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x2A, 0x12, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x42, 0x53, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x7A, 0x01, 0x31, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x88, 0x05, 0x0A, 0x14, 0x12, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x34, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x31, 0x34, 0x7D, 0x12, 0x4E, 0x12, 0x38, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x34, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x7C, 0x33, 0x5B, 0x30, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x5B, 0x37, 0x38, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7C, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x29, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x31, 0x34, 0x7D, 0x32, 0x08, 0x33, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x30, 0x12, 0x23, 0x31, 0x28, 0x35, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x37, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x36, 0x5B, 0x30, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x36, 0x33, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x22, 0x12, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x2A, 0x23, 0x12, 0x16, 0x39, 0x30, 0x30, 0x28, 0x5B, 0x31, 0x33, 0x35, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x29, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x44, 0x45, 0x50, 0x31, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x3A, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x38, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x18, 0x32, 0x7C, 0x33, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x30, 0x36, 0x7C, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x39, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2F, 0x24, 0x32, 0x1A, 0x0B, 0x5B, 0x33, 0x34, 0x5D, 0x30, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x39, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x47, 0x0A, 0x10, 0x28, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x1A, 0x1E, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4C, 0x0A, 0x15, 0x28, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x37, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x05, 0x5B, 0x34, 0x2D, 0x39, 0x5D, 0x1A, 0x1E, 0x5B, 0x34, 0x2D, 0x36, 0x5D, 0x7C, 0x5B, 0x37, 0x2D, 0x39, 0x5D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x39, 0x30, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xC8, 0x03, 0x0A, 0x12, 0x12, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x16, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x18, 0x12, 0x0E, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x22, 0x11, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x2A, 0x15, 0x12, 0x0B, 0x39, 0x5B, 0x30, 0x31, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x21, 0x12, 0x17, 0x38, 0x28, 0x3F, 0x3A, 0x34, 0x5B, 0x33, 0x2D, 0x35, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x2D, 0x32, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x3A, 0x11, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x42, 0x11, 0x12, 0x07, 0x35, 0x36, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x4A, 0x02, 0x47, 0x42, 0x50, 0x2C, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x38, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0C, 0x5B, 0x31, 0x2D, 0x35, 0x39, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x30, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x34, 0x0A, 0x19, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x01, 0x36, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x35, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x09, 0x37, 0x5B, 0x31, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x38, 0x5B, 0x34, 0x37, 0x5D, 0x22, 0x05, 0x28, 0x30, 0x24, 0x31, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0x8B, 0x03, 0x0A, 0x1A, 0x12, 0x0E, 0x5B, 0x30, 0x33, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x16, 0x12, 0x09, 0x30, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x1A, 0x14, 0x12, 0x08, 0x33, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x22, 0x1E, 0x12, 0x13, 0x38, 0x30, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x33, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x2A, 0x1E, 0x12, 0x13, 0x38, 0x39, 0x28, 0x3F, 0x3A, 0x32, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x29, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x39, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x49, 0x54, 0x50, 0x27, 0x5A, 0x02, 0x30, 0x30, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x30, 0x5B, 0x32, 0x36, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x33, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0A, 0x30, 0x5B, 0x31, 0x33, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x01, 0x33, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x20, 0x0A, 0x10, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x36, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x01, 0x38, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xD0, 0x01, 0x01, 0x0A, 0x96, 0x03, 0x0A, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x22, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4A, 0x50, 0x50, 0x51, 0x5A, 0x03, 0x30, 0x31, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x90, 0x01, 0x01, 0x9A, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x5B, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x4E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x32, 0x32, 0x32, 0x7C, 0x33, 0x33, 0x33, 0x1A, 0x0C, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x32, 0x7C, 0x33, 0x33, 0x33, 0x29, 0x31, 0x1A, 0x0D, 0x28, 0x3F, 0x3A, 0x32, 0x32, 0x32, 0x7C, 0x33, 0x33, 0x33, 0x29, 0x31, 0x31, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x52, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x07, 0x32, 0x32, 0x32, 0x7C, 0x33, 0x33, 0x33, 0x1A, 0x09, 0x32, 0x32, 0x32, 0x31, 0x7C, 0x33, 0x33, 0x33, 0x32, 0x1A, 0x0A, 0x32, 0x32, 0x32, 0x31, 0x32, 0x7C, 0x33, 0x33, 0x33, 0x32, 0x1A, 0x0B, 0x32, 0x32, 0x32, 0x31, 0x32, 0x30, 0x7C, 0x33, 0x33, 0x33, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2E, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x1B, 0x0A, 0x07, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x03, 0x2A, 0x24, 0x31, 0x1A, 0x04, 0x5B, 0x32, 0x33, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xBD, 0x0B, 0x0A, 0x20, 0x12, 0x14, 0x5B, 0x31, 0x2D, 0x37, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x39, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x4C, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x32, 0x7C, 0x5B, 0x33, 0x34, 0x5D, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x35, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x28, 0x3F, 0x3A, 0x31, 0x5C, 0x64, 0x7B, 0x32, 0x2C, 0x33, 0x7D, 0x7C, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x34, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x32, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1A, 0x28, 0x12, 0x10, 0x31, 0x5B, 0x30, 0x2D, 0x32, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x20, 0x12, 0x0C, 0x36, 0x30, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x1D, 0x12, 0x07, 0x35, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x1D, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x4A, 0x02, 0x4B, 0x52, 0x50, 0x52, 0x5A, 0x18, 0x30, 0x30, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x2D, 0x36, 0x38, 0x5D, 0x7C, 0x5B, 0x33, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x62, 0x01, 0x30, 0x7A, 0x15, 0x30, 0x28, 0x38, 0x5B, 0x31, 0x2D, 0x34, 0x36, 0x2D, 0x38, 0x5D, 0x7C, 0x38, 0x35, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x3F, 0x9A, 0x01, 0x70, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x1F, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x39, 0x7C, 0x35, 0x5B, 0x34, 0x35, 0x38, 0x5D, 0x29, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x30, 0x1A, 0x25, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x7C, 0x31, 0x5B, 0x31, 0x39, 0x5D, 0x7C, 0x5B, 0x36, 0x39, 0x5D, 0x39, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x34, 0x34, 0x7C, 0x35, 0x39, 0x7C, 0x38, 0x29, 0x29, 0x7C, 0x5B, 0x35, 0x37, 0x5D, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x98, 0x01, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x31, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x5B, 0x31, 0x2D, 0x34, 0x5D, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x1A, 0x3B, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x36, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x38, 0x5D, 0x7C, 0x5B, 0x37, 0x38, 0x5D, 0x7C, 0x35, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x2D, 0x33, 0x5D, 0x7C, 0x34, 0x5B, 0x35, 0x36, 0x5D, 0x29, 0x29, 0x7C, 0x5B, 0x36, 0x38, 0x5D, 0x30, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x33, 0x31, 0x1A, 0x04, 0x31, 0x33, 0x31, 0x32, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x38, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x03, 0x31, 0x33, 0x31, 0x1A, 0x09, 0x31, 0x33, 0x31, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x31, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x07, 0x31, 0x33, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x36, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x2D, 0x24, 0x34, 0x1A, 0x02, 0x33, 0x30, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x6C, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x12, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x37, 0x5D, 0x29, 0x1A, 0x31, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x32, 0x36, 0x5D, 0x7C, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x31, 0x7C, 0x31, 0x5B, 0x34, 0x35, 0x5D, 0x7C, 0x32, 0x5B, 0x31, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x39, 0x7C, 0x34, 0x7C, 0x36, 0x5B, 0x36, 0x37, 0x5D, 0x7C, 0x37, 0x5B, 0x30, 0x37, 0x38, 0x5D, 0x29, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x88, 0x01, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x2D, 0x24, 0x33, 0x1A, 0x16, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x1A, 0x49, 0x32, 0x28, 0x3F, 0x3A, 0x33, 0x28, 0x3F, 0x3A, 0x30, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x31, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x32, 0x2D, 0x36, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x38, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x2D, 0x35, 0x38, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x31, 0x2D, 0x36, 0x39, 0x5D, 0x7C, 0x5B, 0x35, 0x38, 0x39, 0x5D, 0x29, 0x7C, 0x5B, 0x34, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x47, 0x0A, 0x0B, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0A, 0x32, 0x31, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x1A, 0x1E, 0x32, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x36, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x3D, 0x0A, 0x0B, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x06, 0x32, 0x31, 0x5B, 0x33, 0x36, 0x5D, 0x1A, 0x18, 0x32, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x6D, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0B, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x1A, 0x17, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x29, 0x1A, 0x27, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x31, 0x32, 0x34, 0x5D, 0x7C, 0x36, 0x5B, 0x31, 0x32, 0x36, 0x39, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x5F, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x1A, 0x0B, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x1A, 0x0F, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x5B, 0x33, 0x36, 0x5D, 0x1A, 0x21, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x30, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x33, 0x2D, 0x35, 0x37, 0x38, 0x5D, 0x29, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDC, 0x06, 0x0A, 0x19, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x16, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x11, 0x12, 0x07, 0x31, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x22, 0x12, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x2A, 0x12, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4D, 0x58, 0x50, 0x34, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x02, 0x30, 0x31, 0x7A, 0x11, 0x30, 0x31, 0x7C, 0x30, 0x34, 0x5B, 0x34, 0x35, 0x5D, 0x28, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x29, 0x82, 0x01, 0x03, 0x31, 0x24, 0x31, 0x9A, 0x01, 0x2D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x4F, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x28, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x39, 0x0A, 0x16, 0x31, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0C, 0x30, 0x34, 0x35, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x55, 0x0A, 0x16, 0x31, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0C, 0x30, 0x34, 0x35, 0x20, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x29, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x00, 0x2A, 0x00, 0xA2, 0x01, 0x2B, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x2A, 0x00, 0xA2, 0x01, 0x2D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x2A, 0x00, 0xA2, 0x01, 0x4D, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x28, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x2A, 0x00, 0xA2, 0x01, 0x38, 0x0A, 0x18, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x2A, 0x00, 0xA2, 0x01, 0x54, 0x0A, 0x18, 0x28, 0x31, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x29, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDB, 0x03, 0x0A, 0x23, 0x12, 0x17, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x12, 0x3C, 0x12, 0x31, 0x32, 0x34, 0x30, 0x39, 0x39, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x37, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x07, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x1A, 0x5E, 0x12, 0x52, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x29, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x38, 0x2C, 0x31, 0x30, 0x7D, 0x22, 0x16, 0x12, 0x0A, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x2A, 0x16, 0x12, 0x0A, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x1A, 0x08, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x4E, 0x5A, 0x50, 0x40, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x31, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0A, 0x32, 0x34, 0x7C, 0x5B, 0x33, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x2F, 0x0A, 0x14, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x32, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0x9A, 0x01, 0x30, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xFE, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x13, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x1A, 0x28, 0x12, 0x1F, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x22, 0x11, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x2A, 0x10, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x50, 0x4C, 0x50, 0x30, 0x5A, 0x03, 0x30, 0x7E, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x32, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD2, 0x02, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x1C, 0x12, 0x08, 0x32, 0x36, 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x36, 0x32, 0x31, 0x36, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x26, 0x12, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x39, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x38, 0x12, 0x24, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x5D, 0x7C, 0x38, 0x34, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x52, 0x45, 0x50, 0x86, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x37, 0x0A, 0x21, 0x28, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x13, 0x32, 0x36, 0x32, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x37, 0x29, 0x7C, 0x38, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD4, 0x02, 0x0A, 0x22, 0x12, 0x0F, 0x5B, 0x31, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x7C, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x12, 0x12, 0x12, 0x09, 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x12, 0x12, 0x09, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x22, 0x17, 0x12, 0x0A, 0x31, 0x3F, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x09, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x2C, 0x31, 0x31, 0x7D, 0x2A, 0x13, 0x12, 0x09, 0x31, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x31, 0x7D, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x53, 0x47, 0x50, 0x41, 0x5A, 0x0B, 0x30, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x9A, 0x01, 0x29, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0C, 0x5B, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x2A, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x30, 0x30, 0x22, 0x00, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xDF, 0x03, 0x0A, 0x39, 0x12, 0x1A, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x12, 0x39, 0x12, 0x1A, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x1A, 0x39, 0x12, 0x1A, 0x5B, 0x31, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x0F, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x28, 0x3F, 0x3A, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x3F, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x22, 0x2B, 0x12, 0x15, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x2A, 0x1E, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x55, 0x53, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x6A, 0x07, 0x20, 0x65, 0x78, 0x74, 0x6E, 0x2E, 0x20, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0x9A, 0x01, 0x25, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x22, 0x00, 0x2A, 0x00, 0x9A, 0x01, 0x1B, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x22, 0x00, 0x2A, 0x00, 0xA2, 0x01, 0x23, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x2A, 0x00, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xB0, 0x01, 0x01, 0xC2, 0x01, 0x1E, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x06, 0x5C, 0x64, 0x7B, 0x31, 0x30, 0x7D, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x0A, 0xD8, 0x01, 0x0A, 0x13, 0x12, 0x0A, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x12, 0x22, 0x12, 0x0E, 0x32, 0x36, 0x39, 0x36, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x32, 0x36, 0x39, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1C, 0x12, 0x08, 0x36, 0x33, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x36, 0x33, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x1B, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x1A, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x32, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x3A, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x42, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0x4A, 0x02, 0x59, 0x54, 0x50, 0x86, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xBA, 0x01, 0x07, 0x32, 0x36, 0x39, 0x7C, 0x36, 0x33, 0x39, 0xC2, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, 0xCA, 0x01, 0x08, 0x12, 0x02, 0x4E, 0x41, 0x1A, 0x02, 0x4E, 0x41, };
-
-int test_metadata_size() {
- return sizeof(test_metadata_data) / sizeof(test_metadata_data[0]);
-}
-
-const void* test_metadata_get() {
- return test_metadata_data;
-}
diff --git a/third_party/libphonenumber/cpp/src/test_metadata.h b/third_party/libphonenumber/cpp/src/test_metadata.h
deleted file mode 100644
index 4eaa5c7..0000000
--- a/third_party/libphonenumber/cpp/src/test_metadata.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- *
- * 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.
- */
-#ifndef EMBEDDED_DATA_TEST_METADATA_H_
-#define EMBEDDED_DATA_TEST_METADATA_H_
-
-int test_metadata_size();
-const void* test_metadata_get();
-
-#endif // EMBEDDED_DATA_TEST_METADATA_H_
diff --git a/third_party/libphonenumber/cpp/src/utf/README b/third_party/libphonenumber/cpp/src/utf/README
deleted file mode 100644
index 986e9e3..0000000
--- a/third_party/libphonenumber/cpp/src/utf/README
+++ /dev/null
@@ -1 +0,0 @@
-These files come from lib9 (http://code.google.com/p/go/source/browse).
diff --git a/third_party/libphonenumber/cpp/src/utf/rune.c b/third_party/libphonenumber/cpp/src/utf/rune.c
deleted file mode 100644
index 5a37368..0000000
--- a/third_party/libphonenumber/cpp/src/utf/rune.c
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
- * The authors of this software are Rob Pike and Ken Thompson.
- * Copyright (c) 2002 by Lucent Technologies.
- * Permission to use, copy, modify, and distribute this software for any
- * purpose without fee is hereby granted, provided that this entire notice
- * is included in all copies of any software which is or includes a copy
- * or modification of this software and in all copies of the supporting
- * documentation for such software.
- * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY
- * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
- * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
- */
-#include <stdarg.h>
-#include <string.h>
-#include "utf.h"
-#include "utfdef.h"
-
-enum
-{
- Bit1 = 7,
- Bitx = 6,
- Bit2 = 5,
- Bit3 = 4,
- Bit4 = 3,
- Bit5 = 2,
-
- T1 = ((1<<(Bit1+1))-1) ^ 0xFF, /* 0000 0000 */
- Tx = ((1<<(Bitx+1))-1) ^ 0xFF, /* 1000 0000 */
- T2 = ((1<<(Bit2+1))-1) ^ 0xFF, /* 1100 0000 */
- T3 = ((1<<(Bit3+1))-1) ^ 0xFF, /* 1110 0000 */
- T4 = ((1<<(Bit4+1))-1) ^ 0xFF, /* 1111 0000 */
- T5 = ((1<<(Bit5+1))-1) ^ 0xFF, /* 1111 1000 */
-
- Rune1 = (1<<(Bit1+0*Bitx))-1, /* 0000 0000 0111 1111 */
- Rune2 = (1<<(Bit2+1*Bitx))-1, /* 0000 0111 1111 1111 */
- Rune3 = (1<<(Bit3+2*Bitx))-1, /* 1111 1111 1111 1111 */
- Rune4 = (1<<(Bit4+3*Bitx))-1,
- /* 0001 1111 1111 1111 1111 1111 */
-
- Maskx = (1<<Bitx)-1, /* 0011 1111 */
- Testx = Maskx ^ 0xFF, /* 1100 0000 */
-
- Bad = Runeerror,
-};
-
-/*
- * Modified by Wei-Hwa Huang, Google Inc., on 2004-09-24
- * This is a slower but "safe" version of the old chartorune
- * that works on strings that are not necessarily null-terminated.
- *
- * If you know for sure that your string is null-terminated,
- * chartorune will be a bit faster.
- *
- * It is guaranteed not to attempt to access "length"
- * past the incoming pointer. This is to avoid
- * possible access violations. If the string appears to be
- * well-formed but incomplete (i.e., to get the whole Rune
- * we'd need to read past str+length) then we'll set the Rune
- * to Bad and return 0.
- *
- * Note that if we have decoding problems for other
- * reasons, we return 1 instead of 0.
- */
-int
-charntorune(Rune *rune, const char *str, int length)
-{
- int c, c1, c2, c3;
- long l;
-
- /* When we're not allowed to read anything */
- if(length <= 0) {
- goto badlen;
- }
-
- /*
- * one character sequence (7-bit value)
- * 00000-0007F => T1
- */
- c = *(uchar*)str;
- if(c < Tx) {
- *rune = c;
- return 1;
- }
-
- // If we can't read more than one character we must stop
- if(length <= 1) {
- goto badlen;
- }
-
- /*
- * two character sequence (11-bit value)
- * 0080-07FF => T2 Tx
- */
- c1 = *(uchar*)(str+1) ^ Tx;
- if(c1 & Testx)
- goto bad;
- if(c < T3) {
- if(c < T2)
- goto bad;
- l = ((c << Bitx) | c1) & Rune2;
- if(l <= Rune1)
- goto bad;
- *rune = l;
- return 2;
- }
-
- // If we can't read more than two characters we must stop
- if(length <= 2) {
- goto badlen;
- }
-
- /*
- * three character sequence (16-bit value)
- * 0800-FFFF => T3 Tx Tx
- */
- c2 = *(uchar*)(str+2) ^ Tx;
- if(c2 & Testx)
- goto bad;
- if(c < T4) {
- l = ((((c << Bitx) | c1) << Bitx) | c2) & Rune3;
- if(l <= Rune2)
- goto bad;
- *rune = l;
- return 3;
- }
-
- if (length <= 3)
- goto badlen;
-
- /*
- * four character sequence (21-bit value)
- * 10000-1FFFFF => T4 Tx Tx Tx
- */
- c3 = *(uchar*)(str+3) ^ Tx;
- if (c3 & Testx)
- goto bad;
- if (c < T5) {
- l = ((((((c << Bitx) | c1) << Bitx) | c2) << Bitx) | c3) & Rune4;
- if (l <= Rune3)
- goto bad;
- *rune = l;
- return 4;
- }
-
- // Support for 5-byte or longer UTF-8 would go here, but
- // since we don't have that, we'll just fall through to bad.
-
- /*
- * bad decoding
- */
-bad:
- *rune = Bad;
- return 1;
-badlen:
- *rune = Bad;
- return 0;
-
-}
-
-
-/*
- * This is the older "unsafe" version, which works fine on
- * null-terminated strings.
- */
-int
-chartorune(Rune *rune, const char *str)
-{
- int c, c1, c2, c3;
- long l;
-
- /*
- * one character sequence
- * 00000-0007F => T1
- */
- c = *(uchar*)str;
- if(c < Tx) {
- *rune = c;
- return 1;
- }
-
- /*
- * two character sequence
- * 0080-07FF => T2 Tx
- */
- c1 = *(uchar*)(str+1) ^ Tx;
- if(c1 & Testx)
- goto bad;
- if(c < T3) {
- if(c < T2)
- goto bad;
- l = ((c << Bitx) | c1) & Rune2;
- if(l <= Rune1)
- goto bad;
- *rune = l;
- return 2;
- }
-
- /*
- * three character sequence
- * 0800-FFFF => T3 Tx Tx
- */
- c2 = *(uchar*)(str+2) ^ Tx;
- if(c2 & Testx)
- goto bad;
- if(c < T4) {
- l = ((((c << Bitx) | c1) << Bitx) | c2) & Rune3;
- if(l <= Rune2)
- goto bad;
- *rune = l;
- return 3;
- }
-
- /*
- * four character sequence (21-bit value)
- * 10000-1FFFFF => T4 Tx Tx Tx
- */
- c3 = *(uchar*)(str+3) ^ Tx;
- if (c3 & Testx)
- goto bad;
- if (c < T5) {
- l = ((((((c << Bitx) | c1) << Bitx) | c2) << Bitx) | c3) & Rune4;
- if (l <= Rune3)
- goto bad;
- *rune = l;
- return 4;
- }
-
- /*
- * Support for 5-byte or longer UTF-8 would go here, but
- * since we don't have that, we'll just fall through to bad.
- */
-
- /*
- * bad decoding
- */
-bad:
- *rune = Bad;
- return 1;
-}
-
-int
-isvalidcharntorune(const char* str, int length, Rune* rune, int* consumed) {
- *consumed = charntorune(rune, str, length);
- return *rune != Runeerror || *consumed == 3;
-}
-
-int
-runetochar(char *str, const Rune *rune)
-{
- /* Runes are signed, so convert to unsigned for range check. */
- unsigned long c;
-
- /*
- * one character sequence
- * 00000-0007F => 00-7F
- */
- c = *rune;
- if(c <= Rune1) {
- str[0] = c;
- return 1;
- }
-
- /*
- * two character sequence
- * 0080-07FF => T2 Tx
- */
- if(c <= Rune2) {
- str[0] = T2 | (c >> 1*Bitx);
- str[1] = Tx | (c & Maskx);
- return 2;
- }
-
- /*
- * If the Rune is out of range, convert it to the error rune.
- * Do this test here because the error rune encodes to three bytes.
- * Doing it earlier would duplicate work, since an out of range
- * Rune wouldn't have fit in one or two bytes.
- */
- if (c > Runemax)
- c = Runeerror;
-
- /*
- * three character sequence
- * 0800-FFFF => T3 Tx Tx
- */
- if (c <= Rune3) {
- str[0] = T3 | (c >> 2*Bitx);
- str[1] = Tx | ((c >> 1*Bitx) & Maskx);
- str[2] = Tx | (c & Maskx);
- return 3;
- }
-
- /*
- * four character sequence (21-bit value)
- * 10000-1FFFFF => T4 Tx Tx Tx
- */
- str[0] = T4 | (c >> 3*Bitx);
- str[1] = Tx | ((c >> 2*Bitx) & Maskx);
- str[2] = Tx | ((c >> 1*Bitx) & Maskx);
- str[3] = Tx | (c & Maskx);
- return 4;
-}
-
-int
-runelen(Rune rune)
-{
- char str[10];
-
- return runetochar(str, &rune);
-}
-
-int
-runenlen(const Rune *r, int nrune)
-{
- int nb, c;
-
- nb = 0;
- while(nrune--) {
- c = *r++;
- if (c <= Rune1)
- nb++;
- else if (c <= Rune2)
- nb += 2;
- else if (c <= Rune3)
- nb += 3;
- else /* assert(c <= Rune4) */
- nb += 4;
- }
- return nb;
-}
-
-int
-fullrune(const char *str, int n)
-{
- if (n > 0) {
- int c = *(uchar*)str;
- if (c < Tx)
- return 1;
- if (n > 1) {
- if (c < T3)
- return 1;
- if (n > 2) {
- if (c < T4 || n > 3)
- return 1;
- }
- }
- }
- return 0;
-}
diff --git a/third_party/libphonenumber/cpp/src/utf/stringpiece.h b/third_party/libphonenumber/cpp/src/utf/stringpiece.h
deleted file mode 100644
index 7b56772..0000000
--- a/third_party/libphonenumber/cpp/src/utf/stringpiece.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Copyright 2010 Google Inc.
- *
- * 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.
- */
-#ifndef STRINGS_STRINGPIECE_H_
-#define STRINGS_STRINGPIECE_H_
-
-//#include "third_party/chromium/src/base/string_piece.h"
-#include "base/string_piece.h"
-
-using base::StringPiece;
-
-#endif // STRINGS_STRINGPIECE_H_
diff --git a/third_party/libphonenumber/cpp/src/utf/stringprintf.h b/third_party/libphonenumber/cpp/src/utf/stringprintf.h
deleted file mode 100644
index 208d338f..0000000
--- a/third_party/libphonenumber/cpp/src/utf/stringprintf.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Copyright 2010 Google Inc.
- *
- * 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.
- */
-#ifndef STRINGS_STRINGPRINTF_H_
-#define STRINGS_STRINGPRINTF_H_
-
-//#include "third_party/chromium/src/base/string_util.h"
-#include "base/string_util.h"
-
-#endif // STRINGS_STRINGPRINTF_H_
diff --git a/third_party/libphonenumber/cpp/src/utf/unicodetext.cc b/third_party/libphonenumber/cpp/src/utf/unicodetext.cc
deleted file mode 100644
index 82c1b42..0000000
--- a/third_party/libphonenumber/cpp/src/utf/unicodetext.cc
+++ /dev/null
@@ -1,515 +0,0 @@
-// Copyright (C) 2006 Google Inc.
-//
-// 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.
-
-// Author: Jim Meehan
-
-#include <iostream>
-#include <sstream>
-#include <cassert>
-
-#include "utf/unicodetext.h"
-//#include "base/logging.h"
-#include "utf/stringpiece.h"
-//#include "utf/stringprintf.h"
-#include "utf/utf.h"
-#include "utf/unilib.h"
-
-using std::stringstream;
-using std::max;
-using std::hex;
-using std::dec;
-using std::cerr;
-using std::endl;
-
-static int CodepointDistance(const char* start, const char* end) {
- int n = 0;
- // Increment n on every non-trail-byte.
- for (const char* p = start; p < end; ++p) {
- n += (*reinterpret_cast<const signed char*>(p) >= -0x40);
- }
- return n;
-}
-
-static int CodepointCount(const char* utf8, int len) {
- return CodepointDistance(utf8, utf8 + len);
-}
-
-UnicodeText::const_iterator::difference_type
-distance(const UnicodeText::const_iterator& first,
- const UnicodeText::const_iterator& last) {
- return CodepointDistance(first.it_, last.it_);
-}
-
-// ---------- Utility ----------
-
-static int ConvertToInterchangeValid(char* start, int len) {
- // This routine is called only when we've discovered that a UTF-8 buffer
- // that was passed to CopyUTF8, TakeOwnershipOfUTF8, or PointToUTF8
- // was not interchange valid. This indicates a bug in the caller, and
- // a LOG(WARNING) is done in that case.
- // This is similar to CoerceToInterchangeValid, but it replaces each
- // structurally valid byte with a space, and each non-interchange
- // character with a space, even when that character requires more
- // than one byte in UTF8. E.g., "\xEF\xB7\x90" (U+FDD0) is
- // structurally valid UTF8, but U+FDD0 is not an interchange-valid
- // code point. The result should contain one space, not three.
- //
- // Since the conversion never needs to write more data than it
- // reads, it is safe to change the buffer in place. It returns the
- // number of bytes written.
- char* const in = start;
- char* out = start;
- char* const end = start + len;
- while (start < end) {
- int good = UniLib::SpanInterchangeValid(start, end - start);
- if (good > 0) {
- if (out != start) {
- memmove(out, start, good);
- }
- out += good;
- start += good;
- if (start == end) {
- break;
- }
- }
- // Is the current string invalid UTF8 or just non-interchange UTF8?
- char32 rune;
- int n;
- if (isvalidcharntorune(start, end - start, &rune, &n)) {
- // structurally valid UTF8, but not interchange valid
- start += n; // Skip over the whole character.
- } else { // bad UTF8
- start += 1; // Skip over just one byte
- }
- *out++ = ' ';
- }
- return out - in;
-}
-
-
-// *************** Data representation **********
-
-// Note: the copy constructor is undefined.
-
-// After reserve(), resize(), or clear(), we're an owner, not an alias.
-
-void UnicodeText::Repr::reserve(int new_capacity) {
- // If there's already enough capacity, and we're an owner, do nothing.
- if (capacity_ >= new_capacity && ours_) return;
-
- // Otherwise, allocate a new buffer.
- capacity_ = max(new_capacity, (3 * capacity_) / 2 + 20);
- char* new_data = new char[capacity_];
-
- // If there is an old buffer, copy it into the new buffer.
- if (data_) {
- memcpy(new_data, data_, size_);
- if (ours_) delete[] data_; // If we owned the old buffer, free it.
- }
- data_ = new_data;
- ours_ = true; // We own the new buffer.
- // size_ is unchanged.
-}
-
-void UnicodeText::Repr::resize(int new_size) {
- if (new_size == 0) {
- clear();
- } else {
- if (!ours_ || new_size > capacity_) reserve(new_size);
- // Clear the memory in the expanded part.
- if (size_ < new_size) memset(data_ + size_, 0, new_size - size_);
- size_ = new_size;
- ours_ = true;
- }
-}
-
-// This implementation of clear() deallocates the buffer if we're an owner.
-// That's not strictly necessary; we could just set size_ to 0.
-void UnicodeText::Repr::clear() {
- if (ours_) delete[] data_;
- data_ = NULL;
- size_ = capacity_ = 0;
- ours_ = true;
-}
-
-void UnicodeText::Repr::Copy(const char* data, int size) {
- resize(size);
- memcpy(data_, data, size);
-}
-
-void UnicodeText::Repr::TakeOwnershipOf(char* data, int size, int capacity) {
- if (data == data_) return; // We already own this memory. (Weird case.)
- if (ours_ && data_) delete[] data_; // If we owned the old buffer, free it.
- data_ = data;
- size_ = size;
- capacity_ = capacity;
- ours_ = true;
-}
-
-void UnicodeText::Repr::PointTo(const char* data, int size) {
- if (ours_ && data_) delete[] data_; // If we owned the old buffer, free it.
- data_ = const_cast<char*>(data);
- size_ = size;
- capacity_ = size;
- ours_ = false;
-}
-
-void UnicodeText::Repr::append(const char* bytes, int byte_length) {
- reserve(size_ + byte_length);
- memcpy(data_ + size_, bytes, byte_length);
- size_ += byte_length;
-}
-
-string UnicodeText::Repr::DebugString() const {
- stringstream ss;
-
- ss << "{Repr " << hex << this << " data=" << data_ << " size=" << dec
- << size_ << " capacity=" << capacity_ << " "
- << (ours_ ? "Owned" : "Alias") << "}";
-
- string result;
- ss >> result;
-
- return result;
-}
-
-
-
-// *************** UnicodeText ******************
-
-// ----- Constructors -----
-
-// Default constructor
-UnicodeText::UnicodeText() {
-}
-
-// Copy constructor
-UnicodeText::UnicodeText(const UnicodeText& src) {
- Copy(src);
-}
-
-// Substring constructor
-UnicodeText::UnicodeText(const UnicodeText::const_iterator& first,
- const UnicodeText::const_iterator& last) {
- assert(first <= last && "Incompatible iterators");
- repr_.append(first.it_, last.it_ - first.it_);
-}
-
-string UnicodeText::UTF8Substring(const const_iterator& first,
- const const_iterator& last) {
- assert(first <= last && "Incompatible iterators");
- return string(first.it_, last.it_ - first.it_);
-}
-
-
-// ----- Copy -----
-
-UnicodeText& UnicodeText::operator=(const UnicodeText& src) {
- if (this != &src) {
- Copy(src);
- }
- return *this;
-}
-
-UnicodeText& UnicodeText::Copy(const UnicodeText& src) {
- repr_.Copy(src.repr_.data_, src.repr_.size_);
- return *this;
-}
-
-UnicodeText& UnicodeText::CopyUTF8(const char* buffer, int byte_length) {
- repr_.Copy(buffer, byte_length);
- if (!UniLib:: IsInterchangeValid(buffer, byte_length)) {
- cerr << "UTF-8 buffer is not interchange-valid." << endl;
- repr_.size_ = ConvertToInterchangeValid(repr_.data_, byte_length);
- }
- return *this;
-}
-
-UnicodeText& UnicodeText::UnsafeCopyUTF8(const char* buffer,
- int byte_length) {
- repr_.Copy(buffer, byte_length);
- return *this;
-}
-
-// ----- TakeOwnershipOf -----
-
-UnicodeText& UnicodeText::TakeOwnershipOfUTF8(char* buffer,
- int byte_length,
- int byte_capacity) {
- repr_.TakeOwnershipOf(buffer, byte_length, byte_capacity);
- if (!UniLib:: IsInterchangeValid(buffer, byte_length)) {
- cerr << "UTF-8 buffer is not interchange-valid." << endl;
- repr_.size_ = ConvertToInterchangeValid(repr_.data_, byte_length);
- }
- return *this;
-}
-
-UnicodeText& UnicodeText::UnsafeTakeOwnershipOfUTF8(char* buffer,
- int byte_length,
- int byte_capacity) {
- repr_.TakeOwnershipOf(buffer, byte_length, byte_capacity);
- return *this;
-}
-
-// ----- PointTo -----
-
-UnicodeText& UnicodeText::PointToUTF8(const char* buffer, int byte_length) {
- if (UniLib:: IsInterchangeValid(buffer, byte_length)) {
- repr_.PointTo(buffer, byte_length);
- } else {
- cerr << "UTF-8 buffer is not interchange-valid." << endl;
- repr_.Copy(buffer, byte_length);
- repr_.size_ = ConvertToInterchangeValid(repr_.data_, byte_length);
- }
- return *this;
-}
-
-UnicodeText& UnicodeText::UnsafePointToUTF8(const char* buffer,
- int byte_length) {
- repr_.PointTo(buffer, byte_length);
- return *this;
-}
-
-UnicodeText& UnicodeText::PointTo(const UnicodeText& src) {
- repr_.PointTo(src.repr_.data_, src.repr_.size_);
- return *this;
-}
-
-UnicodeText& UnicodeText::PointTo(const const_iterator &first,
- const const_iterator &last) {
- assert(first <= last && " Incompatible iterators");
- repr_.PointTo(first.utf8_data(), last.utf8_data() - first.utf8_data());
- return *this;
-}
-
-// ----- Append -----
-
-UnicodeText& UnicodeText::append(const UnicodeText& u) {
- repr_.append(u.repr_.data_, u.repr_.size_);
- return *this;
-}
-
-UnicodeText& UnicodeText::append(const const_iterator& first,
- const const_iterator& last) {
- assert(first <= last && "Incompatible iterators");
- repr_.append(first.it_, last.it_ - first.it_);
- return *this;
-}
-
-UnicodeText& UnicodeText::UnsafeAppendUTF8(const char* utf8, int len) {
- repr_.append(utf8, len);
- return *this;
-}
-
-// ----- substring searching -----
-
-UnicodeText::const_iterator UnicodeText::find(const UnicodeText& look,
- const_iterator start_pos) const {
- assert(start_pos.utf8_data() >= utf8_data());
- assert(start_pos.utf8_data() <= utf8_data() + utf8_length());
- return UnsafeFind(look, start_pos);
-}
-
-UnicodeText::const_iterator UnicodeText::find(const UnicodeText& look) const {
- return UnsafeFind(look, begin());
-}
-
-UnicodeText::const_iterator UnicodeText::UnsafeFind(
- const UnicodeText& look, const_iterator start_pos) const {
- // Due to the magic of the UTF8 encoding, searching for a sequence of
- // letters is equivalent to substring search.
- StringPiece searching(utf8_data(), utf8_length());
- StringPiece look_piece(look.utf8_data(), look.utf8_length());
- StringPiece::size_type found =
- searching.find(look_piece, start_pos.utf8_data() - utf8_data());
- if (found == StringPiece::npos) return end();
- return const_iterator(utf8_data() + found);
-}
-
-bool UnicodeText::HasReplacementChar() const {
- // Equivalent to:
- // UnicodeText replacement_char;
- // replacement_char.push_back(0xFFFD);
- // return find(replacement_char) != end();
- StringPiece searching(utf8_data(), utf8_length());
- StringPiece looking_for("\xEF\xBF\xBD", 3);
- return searching.find(looking_for) != StringPiece::npos;
-}
-
-// ----- other methods -----
-
-// Clear operator
-void UnicodeText::clear() {
- repr_.clear();
-}
-
-// Destructor
-UnicodeText::~UnicodeText() {}
-
-
-void UnicodeText::push_back(char32 c) {
- if (UniLib::IsValidCodepoint(c)) {
- char buf[UTFmax];
- int len = runetochar(buf, &c);
- if (UniLib::IsInterchangeValid(buf, len)) {
- repr_.append(buf, len);
- } else {
- cerr << "Unicode value 0x" << hex << c
- << " is not valid for interchange" << endl;
- repr_.append(" ", 1);
- }
- } else {
- cerr << "Illegal Unicode value: 0x" << hex << c << endl;
- repr_.append(" ", 1);
- }
-}
-
-int UnicodeText::size() const {
- return CodepointCount(repr_.data_, repr_.size_);
-}
-
-bool operator==(const UnicodeText& lhs, const UnicodeText& rhs) {
- if (&lhs == &rhs) return true;
- if (lhs.repr_.size_ != rhs.repr_.size_) return false;
- return memcmp(lhs.repr_.data_, rhs.repr_.data_, lhs.repr_.size_) == 0;
-}
-
-string UnicodeText::DebugString() const {
- stringstream ss;
-
- ss << "{UnicodeText " << hex << this << dec << " chars="
- << size() << " repr=" << repr_.DebugString() << "}";
-#if 0
- return StringPrintf("{UnicodeText %p chars=%d repr=%s}",
- this,
- size(),
- repr_.DebugString().c_str());
-#endif
- string result;
- ss >> result;
-
- return result;
-}
-
-
-// ******************* UnicodeText::const_iterator *********************
-
-// The implementation of const_iterator would be nicer if it
-// inherited from boost::iterator_facade
-// (http://boost.org/libs/iterator/doc/iterator_facade.html).
-
-UnicodeText::const_iterator::const_iterator() : it_(0) {}
-
-UnicodeText::const_iterator::const_iterator(const const_iterator& other)
- : it_(other.it_) {
-}
-
-UnicodeText::const_iterator&
-UnicodeText::const_iterator::operator=(const const_iterator& other) {
- if (&other != this)
- it_ = other.it_;
- return *this;
-}
-
-UnicodeText::const_iterator UnicodeText::begin() const {
- return const_iterator(repr_.data_);
-}
-
-UnicodeText::const_iterator UnicodeText::end() const {
- return const_iterator(repr_.data_ + repr_.size_);
-}
-
-bool operator<(const UnicodeText::const_iterator& lhs,
- const UnicodeText::const_iterator& rhs) {
- return lhs.it_ < rhs.it_;
-}
-
-char32 UnicodeText::const_iterator::operator*() const {
- // (We could call chartorune here, but that does some
- // error-checking, and we're guaranteed that our data is valid
- // UTF-8. Also, we expect this routine to be called very often. So
- // for speed, we do the calculation ourselves.)
-
- // Convert from UTF-8
- int byte1 = it_[0];
- if (byte1 < 0x80)
- return byte1;
-
- int byte2 = it_[1];
- if (byte1 < 0xE0)
- return ((byte1 & 0x1F) << 6)
- | (byte2 & 0x3F);
-
- int byte3 = it_[2];
- if (byte1 < 0xF0)
- return ((byte1 & 0x0F) << 12)
- | ((byte2 & 0x3F) << 6)
- | (byte3 & 0x3F);
-
- int byte4 = it_[3];
- return ((byte1 & 0x07) << 18)
- | ((byte2 & 0x3F) << 12)
- | ((byte3 & 0x3F) << 6)
- | (byte4 & 0x3F);
-}
-
-UnicodeText::const_iterator& UnicodeText::const_iterator::operator++() {
- it_ += UniLib::OneCharLen(it_);
- return *this;
-}
-
-UnicodeText::const_iterator& UnicodeText::const_iterator::operator--() {
- while (UniLib::IsTrailByte(*--it_));
- return *this;
-}
-
-int UnicodeText::const_iterator::get_utf8(char* utf8_output) const {
- utf8_output[0] = it_[0];
- if (static_cast<unsigned char>(it_[0]) < 0x80)
- return 1;
-
- utf8_output[1] = it_[1];
- if (static_cast<unsigned char>(it_[0]) < 0xE0)
- return 2;
-
- utf8_output[2] = it_[2];
- if (static_cast<unsigned char>(it_[0]) < 0xF0)
- return 3;
-
- utf8_output[3] = it_[3];
- return 4;
-}
-
-
-UnicodeText::const_iterator UnicodeText::MakeIterator(const char* p) const {
- assert(p != NULL);
- const char* start = utf8_data();
- int len = utf8_length();
- const char* end = start + len;
- assert(p >= start);
- assert(p <= end);
- assert(p == end || !UniLib::IsTrailByte(*p));
- return const_iterator(p);
-}
-
-string UnicodeText::const_iterator::DebugString() const {
- stringstream ss;
-
- ss << "{iter " << hex << it_ << "}";
- string result;
- ss >> result;
-
- return result;
-}
-
diff --git a/third_party/libphonenumber/cpp/src/utf/unicodetext.h b/third_party/libphonenumber/cpp/src/utf/unicodetext.h
deleted file mode 100644
index fb37a33..0000000
--- a/third_party/libphonenumber/cpp/src/utf/unicodetext.h
+++ /dev/null
@@ -1,456 +0,0 @@
-// Copyright (C) 2006 Google Inc.
-//
-// 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.
-
-// Author: Jim Meehan
-
-#ifndef UTIL_UTF8_UNICODETEXT_H__
-#define UTIL_UTF8_UNICODETEXT_H__
-
-#include <iterator>
-#include <string>
-#include <utility>
-#include "base/basictypes.h"
-//#include "util/utf8/public/config.h"
-
-using std::string;
-using std::bidirectional_iterator_tag;
-using std::pair;
-
-// ***************************** UnicodeText **************************
-//
-// A UnicodeText object is a container for a sequence of Unicode
-// codepoint values. It has default, copy, and assignment constructors.
-// Data can be appended to it from another UnicodeText, from
-// iterators, or from a single codepoint.
-//
-// The internal representation of the text is UTF-8. Since UTF-8 is a
-// variable-width format, UnicodeText does not provide random access
-// to the text, and changes to the text are permitted only at the end.
-//
-// The UnicodeText class defines a const_iterator. The dereferencing
-// operator (*) returns a codepoint (char32). The iterator is a
-// bidirectional, read-only iterator. It becomes invalid if the text
-// is changed.
-//
-// There are methods for appending and retrieving UTF-8 data directly.
-// The 'utf8_data' method returns a const char* that contains the
-// UTF-8-encoded version of the text; 'utf8_length' returns the number
-// of bytes in the UTF-8 data. An iterator's 'get' method stores up to
-// 4 bytes of UTF-8 data in a char array and returns the number of
-// bytes that it stored.
-//
-// Codepoints are integers in the range [0, 0xD7FF] or [0xE000,
-// 0x10FFFF], but UnicodeText has the additional restriction that it
-// can contain only those characters that are valid for interchange on
-// the Web. This excludes all of the control codes except for carriage
-// return, line feed, and horizontal tab. It also excludes
-// non-characters, but codepoints that are in the Private Use regions
-// are allowed, as are codepoints that are unassigned. (See the
-// Unicode reference for details.) The function UniLib::IsInterchangeValid
-// can be used as a test for this property.
-//
-// UnicodeTexts are safe. Every method that constructs or modifies a
-// UnicodeText tests for interchange-validity, and will substitute a
-// space for the invalid data. Such cases are reported via
-// LOG(WARNING).
-//
-// MEMORY MANAGEMENT: copy, take ownership, or point to
-//
-// A UnicodeText is either an "owner", meaning that it owns the memory
-// for the data buffer and will free it when the UnicodeText is
-// destroyed, or it is an "alias", meaning that it does not.
-//
-// There are three methods for storing UTF-8 data in a UnicodeText:
-//
-// CopyUTF8(buffer, len) copies buffer.
-//
-// TakeOwnershipOfUTF8(buffer, size, capacity) takes ownership of buffer.
-//
-// PointToUTF8(buffer, size) creates an alias pointing to buffer.
-//
-// All three methods perform a validity check on the buffer. There are
-// private, "unsafe" versions of these functions that bypass the
-// validity check. They are used internally and by friend-functions
-// that are handling UTF-8 data that has already been validated.
-//
-// The purpose of an alias is to avoid making an unnecessary copy of a
-// UTF-8 buffer while still providing access to the Unicode values
-// within that text through iterators or the fast scanners that are
-// based on UTF-8 state tables. The lifetime of an alias must not
-// exceed the lifetime of the buffer from which it was constructed.
-//
-// The semantics of an alias might be described as "copy on write or
-// repair." The source data is never modified. If push_back() or
-// append() is called on an alias, a copy of the data will be created,
-// and the UnicodeText will become an owner. If clear() is called on
-// an alias, it becomes an (empty) owner.
-//
-// The copy constructor and the assignment operator produce an owner.
-// That is, after direct initialization ("UnicodeText x(y);") or copy
-// initialization ("UnicodeText x = y;") x will be an owner, even if y
-// was an alias. The assignment operator ("x = y;") also produces an
-// owner unless x and y are the same object and y is an alias.
-//
-// Aliases should be used with care. If the source from which an alias
-// was created is freed, or if the contents are changed, while the
-// alias is still in use, fatal errors could result. But it can be
-// quite useful to have a UnicodeText "window" through which to see a
-// UTF-8 buffer without having to pay the price of making a copy.
-//
-// UTILITIES
-//
-// The interfaces in util/utf8/public/textutils.h provide higher-level
-// utilities for dealing with UnicodeTexts, including routines for
-// creating UnicodeTexts (both owners and aliases) from UTF-8 buffers or
-// strings, creating strings from UnicodeTexts, normalizing text for
-// efficient matching or display, and others.
-
-class UnicodeText {
- public:
- class const_iterator;
-
- typedef char32 value_type;
-
- // Constructors. These always produce owners.
- UnicodeText(); // Create an empty text.
- UnicodeText(const UnicodeText& src); // copy constructor
- // Construct a substring (copies the data).
- UnicodeText(const const_iterator& first, const const_iterator& last);
-
- // Assignment operator. This copies the data and produces an owner
- // unless this == &src, e.g., "x = x;", which is a no-op.
- UnicodeText& operator=(const UnicodeText& src);
-
- // x.Copy(y) copies the data from y into x.
- UnicodeText& Copy(const UnicodeText& src);
- inline UnicodeText& assign(const UnicodeText& src) { return Copy(src); }
-
- // x.PointTo(y) changes x so that it points to y's data.
- // It does not copy y or take ownership of y's data.
- UnicodeText& PointTo(const UnicodeText& src);
- UnicodeText& PointTo(const const_iterator& first,
- const const_iterator& last);
-
- ~UnicodeText();
-
- void clear(); // Clear text.
- bool empty() { return repr_.size_ == 0; } // Test if text is empty.
-
- // Add a codepoint to the end of the text.
- // If the codepoint is not interchange-valid, add a space instead
- // and log a warning.
- void push_back(char32 codepoint);
-
- // Generic appending operation.
- // iterator_traits<ForwardIterator>::value_type must be implicitly
- // convertible to char32. Typical uses of this method might include:
- // char32 chars[] = {0x1, 0x2, ...};
- // vector<char32> more_chars = ...;
- // utext.append(chars, chars+arraysize(chars));
- // utext.append(more_chars.begin(), more_chars.end());
- template<typename ForwardIterator>
- UnicodeText& append(ForwardIterator first, const ForwardIterator last) {
- while (first != last) { push_back(*first++); }
- return *this;
- }
-
- // A specialization of the generic append() method.
- UnicodeText& append(const const_iterator& first, const const_iterator& last);
-
- // An optimization of append(source.begin(), source.end()).
- UnicodeText& append(const UnicodeText& source);
-
- int size() const; // the number of Unicode characters (codepoints)
-
- friend bool operator==(const UnicodeText& lhs, const UnicodeText& rhs);
- friend bool operator!=(const UnicodeText& lhs, const UnicodeText& rhs);
-
- class const_iterator {
- typedef const_iterator CI;
- public:
- typedef bidirectional_iterator_tag iterator_category;
- typedef char32 value_type;
- typedef ptrdiff_t difference_type;
- typedef void pointer; // (Not needed.)
- typedef const char32 reference; // (Needed for const_reverse_iterator)
-
- // Iterators are default-constructible.
- const_iterator();
-
- // It's safe to make multiple passes over a UnicodeText.
- const_iterator(const const_iterator& other);
- const_iterator& operator=(const const_iterator& other);
-
- char32 operator*() const; // Dereference
-
- const_iterator& operator++(); // Advance (++iter)
- const_iterator operator++(int) { // (iter++)
- const_iterator result(*this);
- ++*this;
- return result;
- }
-
- const_iterator& operator--(); // Retreat (--iter)
- const_iterator operator--(int) { // (iter--)
- const_iterator result(*this);
- --*this;
- return result;
- }
-
- // We love relational operators.
- friend bool operator==(const CI& lhs, const CI& rhs) {
- return lhs.it_ == rhs.it_; }
- friend bool operator!=(const CI& lhs, const CI& rhs) {
- return !(lhs == rhs); }
- friend bool operator<(const CI& lhs, const CI& rhs);
- friend bool operator>(const CI& lhs, const CI& rhs) {
- return rhs < lhs; }
- friend bool operator<=(const CI& lhs, const CI& rhs) {
- return !(rhs < lhs); }
- friend bool operator>=(const CI& lhs, const CI& rhs) {
- return !(lhs < rhs); }
-
- friend difference_type distance(const CI& first, const CI& last);
-
- // UTF-8-specific methods
- // Store the UTF-8 encoding of the current codepoint into buf,
- // which must be at least 4 bytes long. Return the number of
- // bytes written.
- int get_utf8(char* buf) const;
- // Return the iterator's pointer into the UTF-8 data.
- const char* utf8_data() const { return it_; }
-
- string DebugString() const;
-
- private:
- friend class UnicodeText;
- friend class UnicodeTextUtils;
- friend class UTF8StateTableProperty;
- explicit const_iterator(const char* it) : it_(it) {}
-
- const char* it_;
- };
-
- const_iterator begin() const;
- const_iterator end() const;
-
- class const_reverse_iterator : public std::reverse_iterator<const_iterator> {
- public:
- const_reverse_iterator(const_iterator it) :
- std::reverse_iterator<const_iterator>(it) {}
- const char* utf8_data() const {
- const_iterator tmp_it = base();
- return (--tmp_it).utf8_data();
- }
- int get_utf8(char* buf) const {
- const_iterator tmp_it = base();
- return (--tmp_it).get_utf8(buf);
- }
- };
- const_reverse_iterator rbegin() const {
- return const_reverse_iterator(end());
- }
- const_reverse_iterator rend() const {
- return const_reverse_iterator(begin());
- }
-
- // Substring searching. Returns the beginning of the first
- // occurrence of "look", or end() if not found.
- const_iterator find(const UnicodeText& look, const_iterator start_pos) const;
- // Equivalent to find(look, begin())
- const_iterator find(const UnicodeText& look) const;
-
- // Returns whether this contains the character U+FFFD. This can
- // occur, for example, if the input to Encodings::Decode() had byte
- // sequences that were invalid in the source encoding.
- bool HasReplacementChar() const;
-
- // UTF-8-specific methods
- //
- // Return the data, length, and capacity of UTF-8-encoded version of
- // the text. Length and capacity are measured in bytes.
- const char* utf8_data() const { return repr_.data_; }
- int utf8_length() const { return repr_.size_; }
- int utf8_capacity() const { return repr_.capacity_; }
-
- // Return the UTF-8 data as a string.
- static string UTF8Substring(const const_iterator& first,
- const const_iterator& last);
-
- // There are three methods for initializing a UnicodeText from UTF-8
- // data. They vary in details of memory management. In all cases,
- // the data is tested for interchange-validity. If it is not
- // interchange-valid, a LOG(WARNING) is issued, and each
- // structurally invalid byte and each interchange-invalid codepoint
- // is replaced with a space.
-
- // x.CopyUTF8(buf, len) copies buf into x.
- UnicodeText& CopyUTF8(const char* utf8_buffer, int byte_length);
-
- // x.TakeOwnershipOfUTF8(buf, len, capacity). x takes ownership of
- // buf. buf is not copied.
- UnicodeText& TakeOwnershipOfUTF8(char* utf8_buffer,
- int byte_length,
- int byte_capacity);
-
- // x.PointToUTF8(buf,len) changes x so that it points to buf
- // ("becomes an alias"). It does not take ownership or copy buf.
- // If the buffer is not valid, this has the same effect as
- // CopyUTF8(utf8_buffer, byte_length).
- UnicodeText& PointToUTF8(const char* utf8_buffer, int byte_length);
-
- // Occasionally it is necessary to use functions that operate on the
- // pointer returned by utf8_data(). MakeIterator(p) provides a way
- // to get back to the UnicodeText level. It uses CHECK to ensure
- // that p is a pointer within this object's UTF-8 data, and that it
- // points to the beginning of a character.
- const_iterator MakeIterator(const char* p) const;
-
- string DebugString() const;
-
- private:
- friend class const_iterator;
- friend class UnicodeTextUtils;
-
- class Repr { // A byte-string.
- public:
- char* data_;
- int size_;
- int capacity_;
- bool ours_; // Do we own data_?
-
- Repr() : data_(NULL), size_(0), capacity_(0), ours_(true) {}
- ~Repr() { if (ours_) delete[] data_; }
-
- void clear();
- void reserve(int capacity);
- void resize(int size);
-
- void append(const char* bytes, int byte_length);
- void Copy(const char* data, int size);
- void TakeOwnershipOf(char* data, int size, int capacity);
- void PointTo(const char* data, int size);
-
- string DebugString() const;
-
- private:
- Repr& operator=(const Repr&);
- Repr(const Repr& other);
- };
-
- Repr repr_;
-
- // UTF-8-specific private methods.
- // These routines do not perform a validity check when compiled
- // in opt mode.
- // It is an error to call these methods with UTF-8 data that
- // is not interchange-valid.
- //
- UnicodeText& UnsafeCopyUTF8(const char* utf8_buffer, int byte_length);
- UnicodeText& UnsafeTakeOwnershipOfUTF8(
- char* utf8_buffer, int byte_length, int byte_capacity);
- UnicodeText& UnsafePointToUTF8(const char* utf8_buffer, int byte_length);
- UnicodeText& UnsafeAppendUTF8(const char* utf8_buffer, int byte_length);
- const_iterator UnsafeFind(const UnicodeText& look,
- const_iterator start_pos) const;
-};
-
-bool operator==(const UnicodeText& lhs, const UnicodeText& rhs);
-
-inline bool operator!=(const UnicodeText& lhs, const UnicodeText& rhs) {
- return !(lhs == rhs);
-}
-
-// UnicodeTextRange is a pair of iterators, useful for specifying text
-// segments. If the iterators are ==, the segment is empty.
-typedef pair<UnicodeText::const_iterator,
- UnicodeText::const_iterator> UnicodeTextRange;
-
-inline bool UnicodeTextRangeIsEmpty(const UnicodeTextRange& r) {
- return r.first == r.second;
-}
-
-
-// *************************** Utilities *************************
-
-// A factory function for creating a UnicodeText from a buffer of
-// UTF-8 data. The new UnicodeText takes ownership of the buffer. (It
-// is an "owner.")
-//
-// Each byte that is structurally invalid will be replaced with a
-// space. Each codepoint that is interchange-invalid will also be
-// replaced with a space, even if the codepoint was represented with a
-// multibyte sequence in the UTF-8 data.
-//
-inline UnicodeText MakeUnicodeTextAcceptingOwnership(
- char* utf8_buffer, int byte_length, int byte_capacity) {
- return UnicodeText().TakeOwnershipOfUTF8(
- utf8_buffer, byte_length, byte_capacity);
-}
-
-// A factory function for creating a UnicodeText from a buffer of
-// UTF-8 data. The new UnicodeText does not take ownership of the
-// buffer. (It is an "alias.")
-//
-inline UnicodeText MakeUnicodeTextWithoutAcceptingOwnership(
- const char* utf8_buffer, int byte_length) {
- return UnicodeText().PointToUTF8(utf8_buffer, byte_length);
-}
-
-// Create a UnicodeText from a UTF-8 string or buffer.
-//
-// If do_copy is true, then a copy of the string is made. The copy is
-// owned by the resulting UnicodeText object and will be freed when
-// the object is destroyed. This UnicodeText object is referred to
-// as an "owner."
-//
-// If do_copy is false, then no copy is made. The resulting
-// UnicodeText object does NOT take ownership of the string; in this
-// case, the lifetime of the UnicodeText object must not exceed the
-// lifetime of the string. This Unicodetext object is referred to as
-// an "alias." This is the same as MakeUnicodeTextWithoutAcceptingOwnership.
-//
-// If the input string does not contain valid UTF-8, then a copy is
-// made (as if do_copy were true) and coerced to valid UTF-8 by
-// replacing each invalid byte with a space.
-//
-inline UnicodeText UTF8ToUnicodeText(const char* utf8_buf, int len,
- bool do_copy) {
- UnicodeText t;
- if (do_copy) {
- t.CopyUTF8(utf8_buf, len);
- } else {
- t.PointToUTF8(utf8_buf, len);
- }
- return t;
-}
-
-inline UnicodeText UTF8ToUnicodeText(const string& utf_string, bool do_copy) {
- return UTF8ToUnicodeText(utf_string.data(), utf_string.size(), do_copy);
-}
-
-inline UnicodeText UTF8ToUnicodeText(const char* utf8_buf, int len) {
- return UTF8ToUnicodeText(utf8_buf, len, true);
-}
-inline UnicodeText UTF8ToUnicodeText(const string& utf8_string) {
- return UTF8ToUnicodeText(utf8_string, true);
-}
-
-// Return a string containing the UTF-8 encoded version of all the
-// Unicode characters in t.
-inline string UnicodeTextToUTF8(const UnicodeText& t) {
- return string(t.utf8_data(), t.utf8_length());
-}
-
-#endif // UTIL_UTF8_UNICODETEXT_H__
diff --git a/third_party/libphonenumber/cpp/src/utf/unilib.cc b/third_party/libphonenumber/cpp/src/utf/unilib.cc
deleted file mode 100644
index 6d90954..0000000
--- a/third_party/libphonenumber/cpp/src/utf/unilib.cc
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Copyright 2010 Google Inc.
- *
- * 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.
- */
-
-// Author: Shawn Ligocki
-
-#include "utf/unilib.h"
-
-#include "base/basictypes.h"
-#include "utf/utf.h"
-
-namespace UniLib {
-
-namespace {
-
-// MOE: start_strip
-// MOE: end_strip
-// Codepoints not allowed for interchange are:
-// C0 (ASCII) controls: U+0000 to U+001F excluding Space (SP, U+0020),
-// Horizontal Tab (HT, U+0009), Line-Feed (LF, U+000A),
-// Form Feed (FF, U+000C) and Carriage-Return (CR, U+000D)
-// C1 controls: U+007F to U+009F
-// Surrogates: U+D800 to U+DFFF
-// Non-characters: U+FDD0 to U+FDEF and U+xxFFFE to U+xxFFFF for all xx
-inline bool IsInterchangeValidCodepoint(char32 c) {
- return !((c >= 0x00 && c <= 0x08) || c == 0x0B || (c >= 0x0E && c <= 0x1F) ||
- (c >= 0x7F && c <= 0x9F) ||
- (c >= 0xD800 && c <= 0xDFFF) ||
- (c >= 0xFDD0 && c <= 0xFDEF) || (c&0xFFFE) == 0xFFFE);
-}
-
-} // namespace
-
-int SpanInterchangeValid(const char* begin, int byte_length) {
- char32 rune;
- const char* p = begin;
- const char* end = begin + byte_length;
- while (p < end) {
- int bytes_consumed = charntorune(&rune, p, end - p);
- // We want to accept Runeerror == U+FFFD as a valid char, but it is used
- // by chartorune to indicate error. Luckily, the real codepoint is size 3
- // while errors return bytes_consumed == 1.
- if ((rune == Runeerror && bytes_consumed == 1) ||
- !IsInterchangeValidCodepoint(rune)) {
- break; // Found
- }
- p += bytes_consumed;
- }
- return p - begin;
-}
-
-} // namespace UniLib
diff --git a/third_party/libphonenumber/cpp/src/utf/unilib.h b/third_party/libphonenumber/cpp/src/utf/unilib.h
deleted file mode 100644
index 4cfc787..0000000
--- a/third_party/libphonenumber/cpp/src/utf/unilib.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * Copyright 2010 Google Inc.
- *
- * 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.
- */
-
-// Routines to do manipulation of Unicode characters or text
-//
-// The StructurallyValid routines accept buffers of arbitrary bytes.
-// For CoerceToStructurallyValid(), the input buffer and output buffers may
-// point to exactly the same memory.
-//
-// In all other cases, the UTF-8 string must be structurally valid and
-// have all codepoints in the range U+0000 to U+D7FF or U+E000 to U+10FFFF.
-// Debug builds take a fatal error for invalid UTF-8 input.
-// The input and output buffers may not overlap at all.
-//
-// The char32 routines are here only for convenience; they convert to UTF-8
-// internally and use the UTF-8 routines.
-
-#ifndef UTIL_UTF8_UNILIB_H__
-#define UTIL_UTF8_UNILIB_H__
-
-#include <string>
-#include "base/basictypes.h"
-
-namespace UniLib {
-
-// Returns true unless a surrogate code point
-inline bool IsValidCodepoint(char32 c) {
- // In the range [0, 0xD800) or [0xE000, 0x10FFFF]
- return (static_cast<uint32>(c) < 0xD800)
- || (c >= 0xE000 && c <= 0x10FFFF);
-}
-
-// Table of UTF-8 character lengths, based on first byte
-static const unsigned char kUTF8LenTbl[256] = {
- 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,
-
- 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,
- 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,
- 3,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, 4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4
-};
-
-// Return length of a single UTF-8 source character
-inline int OneCharLen(const char* src) {
- return kUTF8LenTbl[*reinterpret_cast<const uint8*>(src)];
-}
-
-// Return length of a single UTF-8 source character
-inline int OneCharLen(const uint8* src) {
- return kUTF8LenTbl[*src];
-}
-
-// Return true if this byte is a trailing UTF-8 byte (10xx xxxx)
-inline bool IsTrailByte(char x) {
- // return (x & 0xC0) == 0x80;
- // Since trail bytes are always in [0x80, 0xBF], we can optimize:
- return static_cast<signed char>(x) < -0x40;
-}
-
-// Returns the length in bytes of the prefix of src that is all
-// interchange valid UTF-8
-int SpanInterchangeValid(const char* src, int byte_length);
-inline int SpanInterchangeValid(const std::string& src) {
- return SpanInterchangeValid(src.data(), src.size());
-}
-
-// Returns true if the source is all interchange valid UTF-8
-// "Interchange valid" is a stronger than structurally valid --
-// no C0 or C1 control codes (other than CR LF HT FF) and no non-characters.
-inline bool IsInterchangeValid(const char* src, int byte_length) {
- return (byte_length == SpanInterchangeValid(src, byte_length));
-}
-inline bool IsInterchangeValid(const std::string& src) {
- return IsInterchangeValid(src.data(), src.size());
-}
-
-} // namespace UniLib
-
-#endif // UTIL_UTF8_PUBLIC_UNILIB_H_
diff --git a/third_party/libphonenumber/cpp/src/utf/utf.h b/third_party/libphonenumber/cpp/src/utf/utf.h
deleted file mode 100644
index f4fd482..0000000
--- a/third_party/libphonenumber/cpp/src/utf/utf.h
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * The authors of this software are Rob Pike and Ken Thompson.
- * Copyright (c) 1998-2002 by Lucent Technologies.
- * Portions Copyright (c) 2009 The Go Authors. All rights reserved.
- * Permission to use, copy, modify, and distribute this software for any
- * purpose without fee is hereby granted, provided that this entire notice
- * is included in all copies of any software which is or includes a copy
- * or modification of this software and in all copies of the supporting
- * documentation for such software.
- * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY
- * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
- * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
- */
-
-#ifndef _UTFH_
-#define _UTFH_ 1
-
-// stdint.h content doesn't seem to be used in this file and doesn't exist on
-// Windows, therefore we comment it out here so that the code could be compiled
-// on Windows.
-//#include <stdint.h>
-
-typedef signed int Rune; /* Code-point values in Unicode 4.0 are 21 bits wide.*/
-
-enum
-{
- UTFmax = 4, /* maximum bytes per rune */
- Runesync = 0x80, /* cannot represent part of a UTF sequence (<) */
- Runeself = 0x80, /* rune and UTF sequences are the same (<) */
- Runeerror = 0xFFFD, /* decoding error in UTF */
- Runemax = 0x10FFFF, /* maximum rune value */
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * rune routines
- */
-
-/*
- * These routines were written by Rob Pike and Ken Thompson
- * and first appeared in Plan 9.
- * SEE ALSO
- * utf (7)
- * tcs (1)
-*/
-
-// runetochar copies (encodes) one rune, pointed to by r, to at most
-// UTFmax bytes starting at s and returns the number of bytes generated.
-
-int runetochar(char* s, const Rune* r);
-
-
-// chartorune copies (decodes) at most UTFmax bytes starting at s to
-// one rune, pointed to by r, and returns the number of bytes consumed.
-// If the input is not exactly in UTF format, chartorune will set *r
-// to Runeerror and return 1.
-//
-// Note: There is no special case for a "null-terminated" string. A
-// string whose first byte has the value 0 is the UTF8 encoding of the
-// Unicode value 0 (i.e., ASCII NULL). A byte value of 0 is illegal
-// anywhere else in a UTF sequence.
-
-int chartorune(Rune* r, const char* s);
-
-
-// charntorune is like chartorune, except that it will access at most
-// n bytes of s. If the UTF sequence is incomplete within n bytes,
-// charntorune will set *r to Runeerror and return 0. If it is complete
-// but not in UTF format, it will set *r to Runeerror and return 1.
-//
-// Added 2004-09-24 by Wei-Hwa Huang
-
-int charntorune(Rune* r, const char* s, int n);
-
-// isvalidcharntorune(str, n, r, consumed)
-// is a convenience function that calls "*consumed = charntorune(r, str, n)"
-// and returns an int (logically boolean) indicating whether the first
-// n bytes of str was a valid and complete UTF sequence.
-
-int isvalidcharntorune(const char* str, int n, Rune* r, int* consumed);
-
-// runelen returns the number of bytes required to convert r into UTF.
-
-int runelen(Rune r);
-
-
-// runenlen returns the number of bytes required to convert the n
-// runes pointed to by r into UTF.
-
-int runenlen(const Rune* r, int n);
-
-
-// fullrune returns 1 if the string s of length n is long enough to be
-// decoded by chartorune, and 0 otherwise. This does not guarantee
-// that the string contains a legal UTF encoding. This routine is used
-// by programs that obtain input one byte at a time and need to know
-// when a full rune has arrived.
-
-int fullrune(const char* s, int n);
-
-// The following routines are analogous to the corresponding string
-// routines with "utf" substituted for "str", and "rune" substituted
-// for "chr".
-
-// utflen returns the number of runes that are represented by the UTF
-// string s. (cf. strlen)
-
-int utflen(const char* s);
-
-
-// utfnlen returns the number of complete runes that are represented
-// by the first n bytes of the UTF string s. If the last few bytes of
-// the string contain an incompletely coded rune, utfnlen will not
-// count them; in this way, it differs from utflen, which includes
-// every byte of the string. (cf. strnlen)
-
-int utfnlen(const char* s, long n);
-
-
-// utfrune returns a pointer to the first occurrence of rune r in the
-// UTF string s, or 0 if r does not occur in the string. The NULL
-// byte terminating a string is considered to be part of the string s.
-// (cf. strchr)
-
-const char* utfrune(const char* s, Rune r);
-
-
-// utfrrune returns a pointer to the last occurrence of rune r in the
-// UTF string s, or 0 if r does not occur in the string. The NULL
-// byte terminating a string is considered to be part of the string s.
-// (cf. strrchr)
-
-const char* utfrrune(const char* s, Rune r);
-
-
-// utfutf returns a pointer to the first occurrence of the UTF string
-// s2 as a UTF substring of s1, or 0 if there is none. If s2 is the
-// null string, utfutf returns s1. (cf. strstr)
-
-const char* utfutf(const char* s1, const char* s2);
-
-
-// utfecpy copies UTF sequences until a null sequence has been copied,
-// but writes no sequences beyond es1. If any sequences are copied,
-// s1 is terminated by a null sequence, and a pointer to that sequence
-// is returned. Otherwise, the original s1 is returned. (cf. strecpy)
-
-char* utfecpy(char *s1, char *es1, const char *s2);
-
-
-
-// These functions are rune-string analogues of the corresponding
-// functions in strcat (3).
-//
-// These routines first appeared in Plan 9.
-// SEE ALSO
-// memmove (3)
-// rune (3)
-// strcat (2)
-//
-// BUGS: The outcome of overlapping moves varies among implementations.
-
-Rune* runestrcat(Rune* s1, const Rune* s2);
-Rune* runestrncat(Rune* s1, const Rune* s2, long n);
-
-const Rune* runestrchr(const Rune* s, Rune c);
-
-int runestrcmp(const Rune* s1, const Rune* s2);
-int runestrncmp(const Rune* s1, const Rune* s2, long n);
-
-Rune* runestrcpy(Rune* s1, const Rune* s2);
-Rune* runestrncpy(Rune* s1, const Rune* s2, long n);
-Rune* runestrecpy(Rune* s1, Rune* es1, const Rune* s2);
-
-Rune* runestrdup(const Rune* s);
-
-const Rune* runestrrchr(const Rune* s, Rune c);
-long runestrlen(const Rune* s);
-const Rune* runestrstr(const Rune* s1, const Rune* s2);
-
-
-
-// The following routines test types and modify cases for Unicode
-// characters. Unicode defines some characters as letters and
-// specifies three cases: upper, lower, and title. Mappings among the
-// cases are also defined, although they are not exhaustive: some
-// upper case letters have no lower case mapping, and so on. Unicode
-// also defines several character properties, a subset of which are
-// checked by these routines. These routines are based on Unicode
-// version 3.0.0.
-//
-// NOTE: The routines are implemented in C, so the boolean functions
-// (e.g., isupperrune) return 0 for false and 1 for true.
-//
-//
-// toupperrune, tolowerrune, and totitlerune are the Unicode case
-// mappings. These routines return the character unchanged if it has
-// no defined mapping.
-
-Rune toupperrune(Rune r);
-Rune tolowerrune(Rune r);
-Rune totitlerune(Rune r);
-
-
-// isupperrune tests for upper case characters, including Unicode
-// upper case letters and targets of the toupper mapping. islowerrune
-// and istitlerune are defined analogously.
-
-int isupperrune(Rune r);
-int islowerrune(Rune r);
-int istitlerune(Rune r);
-
-
-// isalpharune tests for Unicode letters; this includes ideographs in
-// addition to alphabetic characters.
-
-int isalpharune(Rune r);
-
-
-// isdigitrune tests for digits. Non-digit numbers, such as Roman
-// numerals, are not included.
-
-int isdigitrune(Rune r);
-
-
-// isideographicrune tests for ideographic characters and numbers, as
-// defined by the Unicode standard.
-
-int isideographicrune(Rune r);
-
-
-// isspacerune tests for whitespace characters, including "C" locale
-// whitespace, Unicode defined whitespace, and the "zero-width
-// non-break space" character.
-
-int isspacerune(Rune r);
-
-
-// (The comments in this file were copied from the manpage files rune.3,
-// isalpharune.3, and runestrcat.3. Some formatting changes were also made
-// to conform to Google style. /JRM 11/11/05)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/third_party/libphonenumber/cpp/src/utf/utfdef.h b/third_party/libphonenumber/cpp/src/utf/utfdef.h
deleted file mode 100644
index adc6d95..0000000
--- a/third_party/libphonenumber/cpp/src/utf/utfdef.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * The authors of this software are Rob Pike and Ken Thompson.
- * Copyright (c) 1998-2002 by Lucent Technologies.
- * Permission to use, copy, modify, and distribute this software for any
- * purpose without fee is hereby granted, provided that this entire notice
- * is included in all copies of any software which is or includes a copy
- * or modification of this software and in all copies of the supporting
- * documentation for such software.
- * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY
- * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
- * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
- */
-
-#define uchar _utfuchar
-#define ushort _utfushort
-#define uint _utfuint
-#define ulong _utfulong
-#define vlong _utfvlong
-#define uvlong _utfuvlong
-
-typedef unsigned char uchar;
-typedef unsigned short ushort;
-typedef unsigned int uint;
-typedef unsigned long ulong;
-
-#define nelem(x) (sizeof(x)/sizeof((x)[0]))
-#define nil ((void*)0)
diff --git a/third_party/libphonenumber/libphonenumber.gyp b/third_party/libphonenumber/libphonenumber.gyp
deleted file mode 100644
index d5f64b9..0000000
--- a/third_party/libphonenumber/libphonenumber.gyp
+++ /dev/null
@@ -1,133 +0,0 @@
-# Copyright (c) 2011 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-{
- 'variables': {
- 'protoc_out_dir': '<(SHARED_INTERMEDIATE_DIR)/protoc_out',
- },
- 'target_defaults': {
- 'include_dirs': [
- '../..', # add it first, so src/base headers are used instead of the ones
- # brought with the library as cc files would be taken from the
- # main chrome tree as well.
- 'cpp/src',
- '<(protoc_out_dir)',
- '../protobuf/src',
- '../icu/public/common',
- '../icu/public/i18n',
- ],
- 'defines': [
- 'U_USING_ICU_NAMESPACE=0',
- ],
- 'conditions': [
- ['OS!="win" or component=="static_library"', {
- 'defines': [
- 'U_STATIC_IMPLEMENTATION',
- ],
- }],
- ],
- },
- 'targets': [{
- 'target_name': 'libphonenumber',
- 'type': '<(library)',
- 'dependencies': [
- 'phonenumber_proto',
- ],
- 'sources': [
- 'chrome/regexp_adapter_icuregexp.cc',
- 'cpp/src/default_logger.cc',
- 'cpp/src/logger_adapter.cc',
- 'cpp/src/metadata.cc',
- 'cpp/src/phonenumber.cc',
- 'cpp/src/phonenumberutil.cc',
- 'cpp/src/stringutil.cc',
- 'cpp/src/utf/rune.c',
- 'cpp/src/utf/unicodetext.cc',
- 'cpp/src/utf/unilib.cc',
- # Generated by phonenumber_proto.
- '<(protoc_out_dir)/phonemetadata.pb.cc',
- '<(protoc_out_dir)/phonenumber.pb.cc',
- ],
- 'conditions': [
- ['OS=="win"', {
- 'action': [
- '/wo4309',
- ],
- }],
- ],
- },
- {
- # Protobuf compiler / generate rule for the phones
- 'target_name': 'phonenumber_proto',
- 'type': 'none',
- 'sources': [
- 'resources/phonemetadata.proto',
- 'resources/phonenumber.proto',
- ],
- 'rules': [{
- 'rule_name': 'genproto',
- 'extension': 'proto',
- 'inputs': [
- '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)',
- ],
- 'variables': {
- # The protoc compiler requires a proto_path argument with the
- # directory containing the .proto file.
- # There's no generator variable that corresponds to this, so fake it.
- 'rule_input_relpath': 'resources',
- },
- 'outputs': [
- '<(protoc_out_dir)/<(RULE_INPUT_ROOT).pb.h',
- '<(protoc_out_dir)/<(RULE_INPUT_ROOT).pb.cc',
- ],
- 'action': [
- '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)',
- '--proto_path=<(rule_input_relpath)',
- '<(rule_input_relpath)/<(RULE_INPUT_ROOT)<(RULE_INPUT_EXT)',
- '--cpp_out=<(protoc_out_dir)',
- ],
- 'message': 'Generating C++ code from <(RULE_INPUT_PATH)',
- }],
- 'dependencies': [
- '../protobuf/protobuf.gyp:protobuf_lite',
- '../protobuf/protobuf.gyp:protoc#host',
- ],
- 'direct_dependent_settings': {
- 'include_dirs': [
- '<(protoc_out_dir)',
- ]
- },
- 'export_dependent_settings': [
- '../../third_party/protobuf/protobuf.gyp:protobuf_lite',
- ],
- },
- {
- 'target_name': 'libphonenumber_unittests',
- 'type': 'executable',
- 'sources': [
- '../../base/test/run_all_unittests.cc',
- 'cpp/src/phonenumberutil_test.cc',
- 'cpp/src/regexp_adapter_unittest.cc',
- 'cpp/src/stringutil_test.cc',
- 'cpp/src/test_metadata.cc',
- ],
- 'dependencies': [
- '../icu/icu.gyp:icui18n',
- '../icu/icu.gyp:icuuc',
- '../protobuf/protobuf.gyp:protobuf_lite',
- '../../base/base.gyp:base',
- '../../base/base.gyp:test_support_base',
- '../../testing/gmock.gyp:gmock',
- '../../testing/gtest.gyp:gtest',
- 'libphonenumber',
- ],
- 'conditions': [
- ['OS=="win"', {
- 'action': [
- '/wo4309',
- ],
- }],
- ],
- }]
-}
diff --git a/third_party/libphonenumber/patches/version186.patch b/third_party/libphonenumber/patches/version186.patch
deleted file mode 100644
index 63afbfaa..0000000
--- a/third_party/libphonenumber/patches/version186.patch
+++ /dev/null
@@ -1,1177 +0,0 @@
-Index: regexp_adapter.h
-===================================================================
---- regexp_adapter.h (revision 0)
-+++ regexp_adapter.h (revision 0)
-@@ -0,0 +1,96 @@
-+// Copyright (C) 2011 Google Inc.
-+//
-+// 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.
-+
-+// Author: George Yakovlev
-+
-+#ifndef I18N_PHONENUMBERS_REGEXP_ADAPTER_H_
-+#define I18N_PHONENUMBERS_REGEXP_ADAPTER_H_
-+
-+#include <string>
-+
-+// Regexp adapter to allow pluggable regexp engine, as it is external to
-+// libphonenumber.
-+
-+namespace reg_exp {
-+
-+// The reg exp input class.
-+// It supports only functions used in phonelibrary.
-+class RegularExpressionInput {
-+ public:
-+ virtual ~RegularExpressionInput() {};
-+
-+ // Matches string to regular expression, returns true if expression was
-+ // matched, false otherwise, advances position in the match.
-+ // |reg_exp| - expression to be matched.
-+ // |beginning_only| - if true match would be successfull only if appears at
-+ // the beginning of the tested region of the string.
-+ // |matched_string1| - successfully matched first string. Can be NULL.
-+ // |matched_string2| - successfully matched second string. Can be NULL.
-+ virtual bool ConsumeRegExp(std::string const& reg_exp,
-+ bool beginning_only,
-+ std::string* matched_string1,
-+ std::string* matched_string2) = 0;
-+ // Convert unmatched input to a string.
-+ virtual std::string ToString() const = 0;
-+};
-+
-+// The regular expression class.
-+// It supports only functions used in phonelibrary.
-+class RegularExpression {
-+ public:
-+ RegularExpression() {}
-+ virtual ~RegularExpression() {}
-+
-+ // Matches string to regular expression, returns true if expression was
-+ // matched, false otherwise, advances position in the match.
-+ // |input_string| - string to be searched.
-+ // |beginning_only| - if true match would be successfull only if appears at
-+ // the beginning of the tested region of the string.
-+ // |matched_string1| - successfully matched first string. Can be NULL.
-+ // |matched_string2| - successfully matched second string. Can be NULL.
-+ // |matched_string3| - successfully matched third string. Can be NULL.
-+ virtual bool Consume(RegularExpressionInput* input_string,
-+ bool beginning_only,
-+ std::string* matched_string1 = NULL,
-+ std::string* matched_string2 = NULL,
-+ std::string* matched_string3 = NULL) const = 0;
-+
-+
-+ // Matches string to regular expression, returns true if expression was
-+ // matched, false otherwise.
-+ // |input_string| - string to be searched.
-+ // |full_match| - if true match would be successfull only if it matches the
-+ // complete string.
-+ // |matched_string| - successfully matched string. Can be NULL.
-+ virtual bool Match(const char* input_string,
-+ bool full_match,
-+ std::string* matched_string) const = 0;
-+
-+ // Replaces match(es) in the |string_to_process|. if |global| is true,
-+ // replaces all the matches, only the first match otherwise.
-+ // |replacement_string| - text the matches are replaced with.
-+ // Returns true if expression successfully processed through the string,
-+ // even if no actual replacements were made. Returns false in case of an
-+ // error.
-+ virtual bool Replace(std::string* string_to_process,
-+ bool global,
-+ const char* replacement_string) const = 0;
-+};
-+
-+RegularExpressionInput* CreateRegularExpressionInput(const char* utf8_input);
-+RegularExpression* CreateRegularExpression(const char* utf8_regexp);
-+
-+} // namespace reg_exp
-+
-+#endif // I18N_PHONENUMBERS_REGEXP_ADAPTER_H_
-
-Property changes on: regexp_adapter.h
-___________________________________________________________________
-Added: svn:eol-style
- + LF
-
-Index: regexp_adapter_re2.cc
-===================================================================
---- regexp_adapter_re2.cc (revision 0)
-+++ regexp_adapter_re2.cc (revision 0)
-@@ -0,0 +1,192 @@
-+// Copyright (C) 2011 Google Inc.
-+//
-+// 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.
-+
-+// Author: George Yakovlev
-+#include "regexp_adapter.h"
-+
-+#include <re2/re2.h>
-+#include <re2/stringpiece.h>
-+#include <re2/re2.h>
-+
-+namespace {
-+scoped_ptr<RE2Cache> re2_cache;
-+} // namespace
-+
-+class RE2RegularExpressionInput : public RegularExpressionInput {
-+ public:
-+ RE2RegularExpressionInput(const char* utf8_input);
-+
-+ virtual bool ConsumeRegExp(std::string const& reg_exp,
-+ bool beginning_only,
-+ std::string* matched_string1,
-+ std::string* matched_string2);
-+ virtual std::string ToString() const;
-+ private:
-+ StringPiece utf8_input_;
-+};
-+
-+
-+class RE2RegularExpression : public reg_exp::RegularExpression {
-+ public:
-+ RE2RegularExpression(const char* utf8_regexp);
-+
-+ virtual bool Consume(reg_exp::RegularExpressionInput* input_string,
-+ bool beginning_only,
-+ std::string* matched_string1,
-+ std::string* matched_string2,
-+ std::string* matched_string3) const;
-+
-+ virtual bool Match(const char* input_string,
-+ bool full_match,
-+ std::string* matched_string) const;
-+
-+ virtual bool Replace(std::string* string_to_process,
-+ bool global,
-+ const char* replacement_string) const;
-+ private:
-+ RE2 utf8_regexp_;
-+};
-+
-+RE2RegularExpressionInput::RE2RegularExpressionInput(const char* utf8_input)
-+ : utf8_input_(utf8_input) {
-+ DCHECK(utf8_input);
-+}
-+
-+bool RE2RegularExpressionInput::ConsumeRegExp(std::string const& reg_exp,
-+ bool beginning_only,
-+ std::string* matched_string1,
-+ std::string* matched_string2) {
-+ if (beginning_only) {
-+ if (matched_string2)
-+ return RE2::Consume(&utf8_input_,
-+ RE2Cache::ScopedAccess(re2_cache.get(), reg_exp),
-+ matched_string1, matched_string2);
-+ else if (matched_string1)
-+ return RE2::Consume(&utf8_input_,
-+ RE2Cache::ScopedAccess(re2_cache.get(), reg_exp),
-+ matched_string1);
-+ else
-+ return RE2::Consume(&utf8_input_,
-+ RE2Cache::ScopedAccess(re2_cache.get(), reg_exp));
-+ } else {
-+ if (matched_string2)
-+ return RE2::FindAndConsume(&utf8_input_,
-+ RE2Cache::ScopedAccess(re2_cache.get(),
-+ reg_exp),
-+ matched_string1, matched_string2);
-+ else if (matched_string1)
-+ return RE2::FindAndConsume(&utf8_input_,
-+ RE2Cache::ScopedAccess(re2_cache.get(),
-+ reg_exp),
-+ matched_string1);
-+ else
-+ return RE2::FindAndConsume(&utf8_input_,
-+ RE2Cache::ScopedAccess(re2_cache.get(),
-+ reg_exp));
-+ }
-+}
-+
-+std::string RE2RegularExpressionInput::ToString() const {
-+ utf8_input_.ToString();
-+}
-+
-+RE2RegularExpression::RE2RegularExpression(const char* utf8_regexp)
-+ : utf8_regexp_(utf8_regexp) {
-+ DCHECK(utf8_regexp);
-+}
-+
-+bool RE2RegularExpression::Consume(RegularExpressionInput* input_string,
-+ bool beginning_only,
-+ std::string* matched_string1,
-+ std::string* matched_string2,
-+ std::string* matched_string3) const {
-+ DCHECK(input_string);
-+ // matched_string1 may be NULL
-+ // matched_string2 may be NULL
-+ if (beginning_only) {
-+ if (matched_string3) {
-+ return RE2::Consume(input_string, utf8_regexp_,
-+ matched_string1, matched_string2, matched_string3);
-+ } else if (matched_string2) {
-+ return RE2::Consume(input_string, utf8_regexp_,
-+ matched_string1, matched_string2);
-+ } else if (matched_string1) {
-+ return RE2::Consume(input_string, utf8_regexp_, matched_string1);
-+ } else {
-+ return RE2::Consume(input_string, utf8_regexp_);
-+ }
-+ } else {
-+ if (matched_string3) {
-+ return RE2::FindAndConsume(input_string, utf8_regexp_,
-+ matched_string1, matched_string2,
-+ matched_string3);
-+ } else if (matched_string2) {
-+ return RE2::FindAndConsume(input_string, utf8_regexp_,
-+ matched_string1, matched_string2);
-+ } else if (matched_string1) {
-+ return RE2::FindAndConsume(input_string, utf8_regexp_, matched_string1);
-+ } else {
-+ return RE2::FindAndConsume(input_string, utf8_regexp_);
-+ }
-+ }
-+}
-+
-+bool RE2RegularExpression::Match(const char* input_string,
-+ bool full_match,
-+ std::string* matched_string) const {
-+ DCHECK(input_string);
-+ // matched_string may be NULL
-+ if (full_match) {
-+ if (matched_string)
-+ return RE2::FullMatch(input_string, matched_string);
-+ else
-+ return RE2::FullMatch(input_string);
-+ } else {
-+ if (matched_string)
-+ return RE2::PartialMatch(input_string, matched_string);
-+ else
-+ return RE2::PartialMatch(input_string);
-+ }
-+}
-+
-+bool RE2RegularExpression::Replace(std::string* string_to_process,
-+ bool global,
-+ const char* replacement_string) const {
-+ DCHECK(string_to_process);
-+ DCHECK(replacement_string);
-+ if (global) {
-+ StringPiece str(replacement_string);
-+ return RE2::GlobalReplace(string_to_process, str);
-+ } else {
-+ return RE2::Replace(string_to_process, replacement_string);
-+ }
-+}
-+
-+
-+namespace reg_exp {
-+
-+RegularExpressionInput* CreateRegularExpressionInput(const char* utf8_input) {
-+ if (!re2_cache.get())
-+ re2_cache.reset(new RE2Cache(64));
-+ return new RE2RegularExpressionInput(utf8_input);
-+}
-+
-+RegularExpression* CreateRegularExpression(const char* utf8_regexp) {
-+ if (!re2_cache.get())
-+ re2_cache.reset(new RE2Cache(64));
-+ return new RE2RegularExpression(utf8_regexp);
-+}
-+
-+} // namespace reg_exp
-+
-
-Property changes on: regexp_adapter_re2.cc
-___________________________________________________________________
-Added: svn:eol-style
- + LF
-
-Index: phonenumberutil_test.cc
-===================================================================
---- phonenumberutil_test.cc (revision 186)
-+++ phonenumberutil_test.cc (working copy)
-@@ -21,12 +21,12 @@
- #include <string>
-
- #include <gtest/gtest.h>
--#include <re2/re2.h>
-
- #include "phonemetadata.pb.h"
- #include "phonenumber.h"
- #include "phonenumber.pb.h"
- #include "phonenumberutil.h"
-+#include "regexp_adapter.h"
- #include "test_metadata.h"
-
- namespace i18n {
-Index: phonenumberutil.cc
-===================================================================
---- phonenumberutil.cc (revision 186)
-+++ phonenumberutil.cc (working copy)
-@@ -25,8 +25,6 @@
- #include <vector>
-
- #include <google/protobuf/message_lite.h>
--#include <re2/re2.h>
--#include <re2/stringpiece.h>
- #include <unicode/errorcode.h>
- #include <unicode/translit.h>
-
-@@ -38,7 +36,7 @@
- #include "phonemetadata.pb.h"
- #include "phonenumber.h"
- #include "phonenumber.pb.h"
--#include "re2_cache.h"
-+#include "regexp_adapter.h"
- #include "stringutil.h"
- #include "utf/unicodetext.h"
- #include "utf/utf.h"
-@@ -54,14 +52,11 @@
- using std::stringstream;
-
- using google::protobuf::RepeatedPtrField;
--using re2::StringPiece;
-
- namespace {
-
- scoped_ptr<LoggerAdapter> logger;
-
--scoped_ptr<RE2Cache> re2_cache;
--
- // These objects are created in the function InitializeStaticMapsAndSets.
-
- // These mappings map a character (key) to a specific digit that should replace
-@@ -78,7 +73,7 @@
- const char kPlusSign[] = "+";
-
- const char kPlusChars[] = "++";
--scoped_ptr<const RE2> plus_chars_pattern;
-+scoped_ptr<const reg_exp::RegularExpression> plus_chars_pattern;
-
- const char kRfc3966ExtnPrefix[] = ";ext=";
-
-@@ -89,7 +84,7 @@
- // prefixes in a region, they will be represented as a regex string that always
- // contains character(s) other than ASCII digits.
- // Note this regex also includes tilde, which signals waiting for the tone.
--scoped_ptr<const RE2> unique_international_prefix;
-+scoped_ptr<const reg_exp::RegularExpression> unique_international_prefix;
-
- // Digits accepted in phone numbers.
- // Both Arabic-Indic and Eastern Arabic-Indic are supported.
-@@ -97,8 +92,8 @@
- // We accept alpha characters in phone numbers, ASCII only. We store lower-case
- // here only since our regular expressions are case-insensitive.
- const char kValidAlpha[] = "a-z";
--scoped_ptr<const RE2> capturing_digit_pattern;
--scoped_ptr<const RE2> capturing_ascii_digits_pattern;
-+scoped_ptr<const reg_exp::RegularExpression> capturing_digit_pattern;
-+scoped_ptr<const reg_exp::RegularExpression> capturing_ascii_digits_pattern;
-
- // Regular expression of acceptable characters that may start a phone number
- // for the purposes of parsing. This allows us to strip away meaningless
-@@ -110,7 +105,7 @@
- // a number. The string starting with this valid character is captured.
- // This corresponds to VALID_START_CHAR in the java version.
- scoped_ptr<const string> valid_start_char;
--scoped_ptr<const RE2> valid_start_char_pattern;
-+scoped_ptr<const reg_exp::RegularExpression> valid_start_char_pattern;
-
- // Regular expression of characters typically used to start a second phone
- // number for the purposes of parsing. This allows us to strip off parts of
-@@ -121,7 +116,8 @@
- // preceding this is captured.
- // This corresponds to SECOND_NUMBER_START in the java version.
- const char kCaptureUpToSecondNumberStart[] = "(.*)[\\\\/] *x";
--scoped_ptr<const RE2> capture_up_to_second_number_start_pattern;
-+scoped_ptr<const reg_exp::RegularExpression>
-+ capture_up_to_second_number_start_pattern;
-
- // Regular expression of trailing characters that we want to remove. We remove
- // all characters that are not alpha or numerical characters. The hash
-@@ -130,7 +126,7 @@
- // number if this was a match.
- // This corresponds to UNWANTED_END_CHARS in the java version.
- const char kUnwantedEndChar[] = "[^\\p{N}\\p{L}#]";
--scoped_ptr<const RE2> unwanted_end_char_pattern;
-+scoped_ptr<const reg_exp::RegularExpression> unwanted_end_char_pattern;
-
- // Regular expression of acceptable punctuation found in phone numbers. This
- // excludes punctuation found as a leading character only. This consists of
-@@ -177,20 +173,20 @@
- scoped_ptr<const string> known_extn_patterns;
- // Regexp of all known extension prefixes used by different regions followed
- // by 1 or more valid digits, for use when parsing.
--scoped_ptr<const RE2> extn_pattern;
-+scoped_ptr<const reg_exp::RegularExpression> extn_pattern;
-
- // We append optionally the extension pattern to the end here, as a valid phone
- // number may have an extension prefix appended, followed by 1 or more digits.
--scoped_ptr<const RE2> valid_phone_number_pattern;
-+scoped_ptr<const reg_exp::RegularExpression> valid_phone_number_pattern;
-
- // We use this pattern to check if the phone number has at least three letters
- // in it - if so, then we treat it as a number where some phone-number digits
- // are represented by letters.
--scoped_ptr<const RE2> valid_alpha_phone_pattern;
-+scoped_ptr<const reg_exp::RegularExpression> valid_alpha_phone_pattern;
-
--scoped_ptr<const RE2> first_group_capturing_pattern;
-+scoped_ptr<const reg_exp::RegularExpression> first_group_capturing_pattern;
-
--scoped_ptr<const RE2> carrier_code_pattern;
-+scoped_ptr<const reg_exp::RegularExpression> carrier_code_pattern;
-
- void TransformRegularExpressionToRE2Syntax(string* regex) {
- DCHECK(regex);
-@@ -280,18 +276,19 @@
- it = available_formats.begin(); it != available_formats.end(); ++it) {
- int size = it->leading_digits_pattern_size();
- if (size > 0) {
-- StringPiece number_copy(number_for_leading_digits_match);
-+ scoped_ptr<reg_exp::RegularExpressionInput>
-+ number_copy(reg_exp::CreateRegularExpressionInput(
-+ number_for_leading_digits_match.c_str()));
- // We always use the last leading_digits_pattern, as it is the most
- // detailed.
-- if (!RE2::Consume(&number_copy,
-- RE2Cache::ScopedAccess(
-- re2_cache.get(),
-- it->leading_digits_pattern(size - 1)))) {
-+ if (!number_copy->ConsumeRegExp(it->leading_digits_pattern(size - 1),
-+ true, NULL, NULL)) {
- continue;
- }
- }
-- RE2Cache::ScopedAccess pattern_to_match(re2_cache.get(), it->pattern());
-- if (RE2::FullMatch(national_number, pattern_to_match)) {
-+ scoped_ptr<reg_exp::RegularExpression> pattern_to_match(
-+ reg_exp::CreateRegularExpression(it->pattern().c_str()));
-+ if (pattern_to_match->Match(national_number.c_str(), true, NULL)) {
- string formatting_pattern(it->format());
- if (number_format == PhoneNumberUtil::NATIONAL &&
- carrier_code.length() > 0 &&
-@@ -299,11 +296,12 @@
- // Replace the $CC in the formatting rule with the desired carrier code.
- string carrier_code_formatting_rule =
- it->domestic_carrier_code_formatting_rule();
-- RE2::Replace(&carrier_code_formatting_rule, *carrier_code_pattern,
-- carrier_code);
-+ carrier_code_pattern->Replace(&carrier_code_formatting_rule,
-+ false, carrier_code.c_str());
- TransformRegularExpressionToRE2Syntax(&carrier_code_formatting_rule);
-- RE2::Replace(&formatting_pattern, *first_group_capturing_pattern,
-- carrier_code_formatting_rule);
-+ first_group_capturing_pattern->Replace(&formatting_pattern,
-+ false,
-+ carrier_code_formatting_rule.c_str());
- } else {
- // Use the national prefix formatting rule instead.
- string national_prefix_formatting_rule =
-@@ -315,14 +313,15 @@
- // should be formatted at this point.
- TransformRegularExpressionToRE2Syntax(
- &national_prefix_formatting_rule);
-- RE2::Replace(&formatting_pattern, *first_group_capturing_pattern,
-- national_prefix_formatting_rule);
-+ first_group_capturing_pattern->Replace(&formatting_pattern,
-+ false,
-+ national_prefix_formatting_rule.c_str());
- }
- }
- TransformRegularExpressionToRE2Syntax(&formatting_pattern);
- formatted_number->assign(national_number);
-- RE2::GlobalReplace(formatted_number, pattern_to_match,
-- formatting_pattern);
-+ pattern_to_match->Replace(formatted_number, true,
-+ formatting_pattern.c_str());
- return;
- }
- }
-@@ -361,12 +360,14 @@
-
- bool IsNumberMatchingDesc(const string& national_number,
- const PhoneNumberDesc& number_desc) {
-- return (RE2::FullMatch(national_number,
-- RE2Cache::ScopedAccess(re2_cache.get(),
-- number_desc.possible_number_pattern())) &&
-- RE2::FullMatch(national_number,
-- RE2Cache::ScopedAccess(re2_cache.get(),
-- number_desc.national_number_pattern())));
-+ scoped_ptr<const reg_exp::RegularExpression>
-+ possible_pattern(reg_exp::CreateRegularExpression(
-+ number_desc.possible_number_pattern().c_str()));
-+ scoped_ptr<const reg_exp::RegularExpression>
-+ national_pattern(reg_exp::CreateRegularExpression(
-+ number_desc.national_number_pattern().c_str()));
-+ return (possible_pattern->Match(national_number.c_str(), true, NULL) &&
-+ national_pattern->Match(national_number.c_str(), true, NULL));
- }
-
- PhoneNumberUtil::PhoneNumberType GetNumberTypeHelper(
-@@ -452,18 +453,25 @@
- // Initialisation helper function used to populate the regular expressions in a
- // defined order.
- void CreateRegularExpressions() {
-- unique_international_prefix.reset(new RE2("[\\d]+(?:[~⁓∼~][\\d]+)?"));
-- first_group_capturing_pattern.reset(new RE2("(\\$1)"));
-- carrier_code_pattern.reset(new RE2("\\$CC"));
-- capturing_digit_pattern.reset(new RE2(StrCat("([", kValidDigits, "])")));
-- capturing_ascii_digits_pattern.reset(new RE2("(\\d+)"));
-+ unique_international_prefix.reset(
-+ reg_exp::CreateRegularExpression("[\\d]+(?:[~⁓∼~][\\d]+)?"));
-+ first_group_capturing_pattern.reset(
-+ reg_exp::CreateRegularExpression("(\\$1)"));
-+ carrier_code_pattern.reset(
-+ reg_exp::CreateRegularExpression("\\$CC"));
-+ capturing_digit_pattern.reset(
-+ reg_exp::CreateRegularExpression(
-+ StrCat("([", kValidDigits, "])").c_str()));
-+ capturing_ascii_digits_pattern.reset(
-+ reg_exp::CreateRegularExpression("(\\d+)"));
- valid_start_char.reset(new string(StrCat(
- "[", kPlusChars, kValidDigits, "]")));
-- valid_start_char_pattern.reset(new RE2(*valid_start_char));
-- capture_up_to_second_number_start_pattern.reset(new RE2(
-- kCaptureUpToSecondNumberStart));
-- unwanted_end_char_pattern.reset(new RE2(
-- kUnwantedEndChar));
-+ valid_start_char_pattern.reset(
-+ reg_exp::CreateRegularExpression(valid_start_char->c_str()));
-+ capture_up_to_second_number_start_pattern.reset(
-+ reg_exp::CreateRegularExpression(kCaptureUpToSecondNumberStart));
-+ unwanted_end_char_pattern.reset(
-+ reg_exp::CreateRegularExpression(kUnwantedEndChar));
- valid_phone_number.reset(new string(
- StrCat("[", kPlusChars, "]*(?:[", kValidPunctuation, "]*[", kValidDigits,
- "]){3,}[", kValidAlpha, kValidPunctuation, kValidDigits, "]*")));
-@@ -479,17 +487,19 @@
- "int|int|anexo)"
- "[:\\..]?[  \\t,-]*", capturing_extn_digits, "#?|"
- "[- ]+([", kValidDigits, "]{1,5})#")));
-- extn_pattern.reset(new RE2(StrCat("(?i)(?:", *known_extn_patterns, ")$")));
-- valid_phone_number_pattern.reset(new RE2(
-- StrCat("(?i)", *valid_phone_number, "(?:", *known_extn_patterns, ")?")));
-- valid_alpha_phone_pattern.reset(new RE2(
-- StrCat("(?i)(?:.*?[", kValidAlpha, "]){3}")));
-- plus_chars_pattern.reset(new RE2(StrCat("[", kPlusChars, "]+")));
-+ extn_pattern.reset(reg_exp::CreateRegularExpression(
-+ StrCat("(?i)(?:", *known_extn_patterns, ")$").c_str()));
-+ valid_phone_number_pattern.reset(reg_exp::CreateRegularExpression(
-+ StrCat("(?i)", *valid_phone_number, "(?:", *known_extn_patterns,
-+ ")?").c_str()));
-+ valid_alpha_phone_pattern.reset(reg_exp::CreateRegularExpression(
-+ StrCat("(?i)(?:.*?[", kValidAlpha, "]){3}").c_str()));
-+ plus_chars_pattern.reset(reg_exp::CreateRegularExpression(
-+ StrCat("[", kPlusChars, "]+").c_str()));
- }
-
- void InitializeStaticMapsAndSets() {
- // Create global objects.
-- re2_cache.reset(new RE2Cache(64));
- all_plus_number_grouping_symbols.reset(new map<char32, char>);
- alpha_mappings.reset(new map<char32, char>);
- all_normalization_mappings.reset(new map<char32, char>);
-@@ -625,36 +635,37 @@
-
- // Strips the IDD from the start of the number if present. Helper function used
- // by MaybeStripInternationalPrefixAndNormalize.
--bool ParsePrefixAsIdd(const RE2& idd_pattern, string* number) {
-+bool ParsePrefixAsIdd(const reg_exp::RegularExpression* idd_pattern,
-+ string* number) {
- DCHECK(number);
-- StringPiece number_copy(*number);
-+ scoped_ptr<reg_exp::RegularExpressionInput> number_copy(
-+ reg_exp::CreateRegularExpressionInput(number->c_str()));
- // First attempt to strip the idd_pattern at the start, if present. We make a
- // copy so that we can revert to the original string if necessary.
-- if (RE2::Consume(&number_copy, idd_pattern)) {
-+ if (idd_pattern->Consume(number_copy.get(), true, NULL, NULL)) {
- // Only strip this if the first digit after the match is not a 0, since
- // country calling codes cannot begin with 0.
- string extracted_digit;
-- if (RE2::PartialMatch(number_copy,
-- *capturing_digit_pattern,
-- &extracted_digit)) {
-+ if (capturing_digit_pattern->Match(number_copy->ToString().c_str(), false,
-+ &extracted_digit)) {
- PhoneNumberUtil::NormalizeDigitsOnly(&extracted_digit);
- if (extracted_digit == "0") {
- return false;
- }
- }
-- number->assign(number_copy.ToString());
-+ number->assign(number_copy->ToString());
- return true;
- }
- return false;
- }
-
- PhoneNumberUtil::ValidationResult TestNumberLengthAgainstPattern(
-- const RE2& number_pattern, const string& number) {
-+ const reg_exp::RegularExpression* number_pattern, const string& number) {
- string extracted_number;
-- if (RE2::FullMatch(number, number_pattern, &extracted_number)) {
-+ if (number_pattern->Match(number.c_str(), true, &extracted_number)) {
- return PhoneNumberUtil::IS_POSSIBLE;
- }
-- if (RE2::PartialMatch(number, number_pattern, &extracted_number)) {
-+ if (number_pattern->Match(number.c_str(), false, &extracted_number)) {
- return PhoneNumberUtil::TOO_LONG;
- } else {
- return PhoneNumberUtil::TOO_SHORT;
-@@ -862,8 +873,10 @@
- PhoneNumberFormat number_format,
- const RepeatedPtrField<NumberFormat>& user_defined_formats,
- string* formatted_number) const {
-- static const RE2 national_prefix_pattern("\\$NP");
-- static const RE2 first_group_pattern("\\$FG");
-+ static scoped_ptr<const reg_exp::RegularExpression>
-+ national_prefix_pattern(reg_exp::CreateRegularExpression("\\$NP"));
-+ static scoped_ptr<const reg_exp::RegularExpression>
-+ first_group_pattern(reg_exp::CreateRegularExpression("\\$FG"));
- DCHECK(formatted_number);
- int country_calling_code = number.country_code();
- // Note GetRegionCodeForCountryCode() is used because formatting information
-@@ -893,10 +906,12 @@
- num_format_copy->MergeFrom(*it);
- if (!national_prefix.empty()) {
- // Replace $NP with national prefix and $FG with the first group ($1).
-- RE2::Replace(&national_prefix_formatting_rule, national_prefix_pattern,
-- national_prefix);
-- RE2::Replace(&national_prefix_formatting_rule, first_group_pattern,
-- "$1");
-+ national_prefix_pattern->Replace(&national_prefix_formatting_rule,
-+ false,
-+ national_prefix.c_str());
-+ first_group_pattern->Replace(&national_prefix_formatting_rule,
-+ false,
-+ "$1");
- num_format_copy->set_national_prefix_formatting_rule(
- national_prefix_formatting_rule);
- } else {
-@@ -1021,7 +1036,8 @@
- // format of the number is returned, unless there is a preferred international
- // prefix.
- string international_prefix_for_formatting(
-- RE2::FullMatch(international_prefix, *unique_international_prefix)
-+ unique_international_prefix->Match(international_prefix.c_str(),
-+ true, NULL)
- ? international_prefix
- : metadata->preferred_international_prefix());
- if (!international_prefix_for_formatting.empty()) {
-@@ -1133,7 +1149,8 @@
- // format of the number is returned, unless there is a preferred international
- // prefix.
- string international_prefix_for_formatting(
-- RE2::FullMatch(international_prefix, *unique_international_prefix)
-+ unique_international_prefix->Match(international_prefix.c_str(),
-+ true, NULL)
- ? international_prefix
- : metadata->preferred_international_prefix());
- if (!international_prefix_for_formatting.empty()) {
-@@ -1179,8 +1196,10 @@
- number, carrier_code, formatted_number);
- if (number_format == RFC3966) {
- // Replace all separators with a "-".
-- static const RE2 separator_pattern(StrCat("[", kValidPunctuation, "]+"));
-- RE2::GlobalReplace(formatted_number, separator_pattern, "-");
-+ scoped_ptr<const reg_exp::RegularExpression> separator_pattern(
-+ reg_exp::CreateRegularExpression(
-+ StrCat("[", kValidPunctuation, "]+").c_str()));
-+ separator_pattern->Replace(formatted_number, true, "-");
- }
- }
-
-@@ -1288,10 +1307,9 @@
- it != region_codes.end(); ++it) {
- const PhoneMetadata* metadata = GetMetadataForRegion(*it);
- if (metadata->has_leading_digits()) {
-- StringPiece number(national_number);
-- if (RE2::Consume(&number,
-- RE2Cache::ScopedAccess(re2_cache.get(),
-- metadata->leading_digits()))) {
-+ scoped_ptr<reg_exp::RegularExpressionInput> number(
-+ reg_exp::CreateRegularExpressionInput(national_number.c_str()));
-+ if (number->ConsumeRegExp(metadata->leading_digits(), true, NULL, NULL)) {
- *region_code = *it;
- return;
- }
-@@ -1367,8 +1385,10 @@
- const string& number_to_parse,
- const string& default_region) const {
- if (!IsValidRegionCode(default_region) && !number_to_parse.empty()) {
-- StringPiece number_as_string_piece(number_to_parse);
-- if (!RE2::Consume(&number_as_string_piece, *plus_chars_pattern)) {
-+ scoped_ptr<reg_exp::RegularExpressionInput> number_as_string_piece(
-+ reg_exp::CreateRegularExpressionInput(number_to_parse.c_str()));
-+ if (!plus_chars_pattern->Consume(number_as_string_piece.get(),
-+ true, NULL, NULL)) {
- return false;
- }
- }
-@@ -1435,8 +1455,6 @@
- return TOO_SHORT_NSN;
- }
- if (country_metadata) {
-- RE2Cache::ScopedAccess valid_number_pattern(re2_cache.get(),
-- country_metadata->general_desc().national_number_pattern());
- string* carrier_code = keep_raw_input ?
- temp_number.mutable_preferred_domestic_carrier_code() : NULL;
- MaybeStripNationalPrefixAndCarrierCode(*country_metadata,
-@@ -1489,7 +1507,7 @@
- for (it = number_as_unicode.begin(); it != number_as_unicode.end(); ++it) {
- len = it.get_utf8(current_char);
- current_char[len] = '\0';
-- if (RE2::FullMatch(current_char, *valid_start_char_pattern)) {
-+ if (valid_start_char_pattern->Match(current_char, true, NULL)) {
- break;
- }
- }
-@@ -1505,7 +1523,7 @@
- for (; reverse_it.base() != it; ++reverse_it) {
- len = reverse_it.get_utf8(current_char);
- current_char[len] = '\0';
-- if (!RE2::FullMatch(current_char, *unwanted_end_char_pattern)) {
-+ if (!unwanted_end_char_pattern->Match(current_char, true, NULL)) {
- break;
- }
- }
-@@ -1521,9 +1539,9 @@
- " left with: " + *extracted_number);
-
- // Now remove any extra numbers at the end.
-- RE2::PartialMatch(*extracted_number,
-- *capture_up_to_second_number_start_pattern,
-- extracted_number);
-+ capture_up_to_second_number_start_pattern->Match(extracted_number->c_str(),
-+ false,
-+ extracted_number);
- }
-
- bool PhoneNumberUtil::IsPossibleNumber(const PhoneNumber& number) const {
-@@ -1569,9 +1587,10 @@
- return IS_POSSIBLE;
- }
- }
-- RE2Cache::ScopedAccess possible_number_pattern(re2_cache.get(),
-- StrCat("(", general_num_desc.possible_number_pattern(), ")"));
-- return TestNumberLengthAgainstPattern(possible_number_pattern,
-+ scoped_ptr<reg_exp::RegularExpression> possible_number_pattern(
-+ reg_exp::CreateRegularExpression(
-+ StrCat("(", general_num_desc.possible_number_pattern(), ")").c_str()));
-+ return TestNumberLengthAgainstPattern(possible_number_pattern.get(),
- national_number);
- }
-
-@@ -1701,13 +1720,16 @@
-
- string formatted_number;
- Format(copied_proto, INTERNATIONAL, &formatted_number);
-- StringPiece i18n_number(formatted_number);
-+ scoped_ptr<reg_exp::RegularExpressionInput> i18n_number(
-+ reg_exp::CreateRegularExpressionInput(formatted_number.c_str()));
- string digit_group;
- string ndc;
- string third_group;
- for (int i = 0; i < 3; ++i) {
-- if (!RE2::FindAndConsume(&i18n_number, *capturing_ascii_digits_pattern,
-- &digit_group)) {
-+ if (!capturing_ascii_digits_pattern->Consume(i18n_number.get(),
-+ false,
-+ &digit_group,
-+ NULL)) {
- // We should find at least three groups.
- return 0;
- }
-@@ -1734,9 +1756,11 @@
- void PhoneNumberUtil::NormalizeDigitsOnly(string* number) {
- DCHECK(number);
- // Delete everything that isn't valid digits.
-- static const RE2 invalid_digits_pattern(StrCat("[^", kValidDigits, "]"));
-- static const StringPiece empty;
-- RE2::GlobalReplace(number, invalid_digits_pattern, empty);
-+ static scoped_ptr<reg_exp::RegularExpression> invalid_digits_pattern(
-+ reg_exp::CreateRegularExpression(StrCat("[^", kValidDigits,
-+ "]").c_str()));
-+ static const char *empty = "";
-+ invalid_digits_pattern->Replace(number, true, empty);
- // Normalize all decimal digits to ASCII digits.
- UParseError error;
- icu::ErrorCode status;
-@@ -1778,7 +1802,7 @@
- string number_copy(number);
- string extension;
- MaybeStripExtension(&number_copy, &extension);
-- return RE2::FullMatch(number_copy, *valid_alpha_phone_pattern);
-+ return valid_alpha_phone_pattern->Match(number_copy.c_str(), true, NULL);
- }
-
- void PhoneNumberUtil::ConvertAlphaCharactersInNumber(string* number) const {
-@@ -1798,7 +1822,7 @@
- // - Arabic-Indic numerals are converted to European numerals.
- void PhoneNumberUtil::Normalize(string* number) const {
- DCHECK(number);
-- if (RE2::PartialMatch(*number, *valid_alpha_phone_pattern)) {
-+ if (valid_alpha_phone_pattern->Match(number->c_str(), false, NULL)) {
- NormalizeHelper(*all_normalization_mappings, true, number);
- }
- NormalizeDigitsOnly(number);
-@@ -1816,7 +1840,7 @@
- logger->Debug("Number too short to be viable:" + number);
- return false;
- }
-- return RE2::FullMatch(number, *valid_phone_number_pattern);
-+ return valid_phone_number_pattern->Match(number.c_str(), true, NULL);
- }
-
- // Strips any international prefix (such as +, 00, 011) present in the number
-@@ -1836,17 +1860,20 @@
- if (number->empty()) {
- return PhoneNumber::FROM_DEFAULT_COUNTRY;
- }
-- StringPiece number_string_piece(*number);
-- if (RE2::Consume(&number_string_piece, *plus_chars_pattern)) {
-- number->assign(number_string_piece.ToString());
-+ scoped_ptr<reg_exp::RegularExpressionInput> number_string_piece(
-+ reg_exp::CreateRegularExpressionInput(number->c_str()));
-+ if (plus_chars_pattern->Consume(number_string_piece.get(), true,
-+ NULL, NULL)) {
-+ number->assign(number_string_piece->ToString());
- // Can now normalize the rest of the number since we've consumed the "+"
- // sign at the start.
- Normalize(number);
- return PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN;
- }
- // Attempt to parse the first digits as an international prefix.
-- RE2Cache::ScopedAccess idd_pattern(re2_cache.get(), possible_idd_prefix);
-- if (ParsePrefixAsIdd(idd_pattern, number)) {
-+ scoped_ptr<reg_exp::RegularExpression> idd_pattern(
-+ reg_exp::CreateRegularExpression(possible_idd_prefix.c_str()));
-+ if (ParsePrefixAsIdd(idd_pattern.get(), number)) {
- Normalize(number);
- return PhoneNumber::FROM_NUMBER_WITH_IDD;
- }
-@@ -1854,7 +1881,7 @@
- // This shouldn't be done before, since non-numeric characters (+ and ~) may
- // legally be in the international prefix.
- Normalize(number);
-- return ParsePrefixAsIdd(idd_pattern, number)
-+ return ParsePrefixAsIdd(idd_pattern.get(), number)
- ? PhoneNumber::FROM_NUMBER_WITH_IDD
- : PhoneNumber::FROM_DEFAULT_COUNTRY;
- }
-@@ -1879,25 +1906,25 @@
- }
- // We use two copies here since Consume modifies the phone number, and if the
- // first if-clause fails the number will already be changed.
-- StringPiece number_copy(*number);
-- StringPiece number_copy_without_transform(*number);
-+ scoped_ptr<reg_exp::RegularExpressionInput> number_copy(
-+ reg_exp::CreateRegularExpressionInput(number->c_str()));
-+ scoped_ptr<reg_exp::RegularExpressionInput> number_copy_without_transform(
-+ reg_exp::CreateRegularExpressionInput(number->c_str()));
-+
- string number_string_copy(*number);
- string captured_part_of_prefix;
-- RE2Cache::ScopedAccess national_number_rule(
-- re2_cache.get(),
-- metadata.general_desc().national_number_pattern());
-+ scoped_ptr<reg_exp::RegularExpression> national_number_rule(
-+ reg_exp::CreateRegularExpression(
-+ metadata.general_desc().national_number_pattern().c_str()));
- // Attempt to parse the first digits as a national prefix. We make a
- // copy so that we can revert to the original string if necessary.
- const string& transform_rule = metadata.national_prefix_transform_rule();
- if (!transform_rule.empty() &&
-- (RE2::Consume(&number_copy,
-- RE2Cache::ScopedAccess(re2_cache.get(),
-- possible_national_prefix),
-- &carrier_code_temp, &captured_part_of_prefix) ||
-- RE2::Consume(&number_copy,
-- RE2Cache::ScopedAccess(re2_cache.get(),
-- possible_national_prefix),
-- &captured_part_of_prefix)) &&
-+ (number_copy->ConsumeRegExp(possible_national_prefix, true,
-+ &carrier_code_temp,
-+ &captured_part_of_prefix) ||
-+ number_copy->ConsumeRegExp(possible_national_prefix, true,
-+ &captured_part_of_prefix, NULL)) &&
- !captured_part_of_prefix.empty()) {
- string re2_transform_rule(transform_rule);
- TransformRegularExpressionToRE2Syntax(&re2_transform_rule);
-@@ -1905,29 +1932,27 @@
- // have been some part of the prefix that we captured.
- // We make the transformation and check that the resultant number is viable.
- // If so, replace the number and return.
-- RE2::Replace(&number_string_copy,
-- RE2Cache::ScopedAccess(re2_cache.get(),
-- possible_national_prefix),
-- re2_transform_rule);
-- if (RE2::FullMatch(number_string_copy, national_number_rule)) {
-+ scoped_ptr<reg_exp::RegularExpression> possible_national_prefix_rule(
-+ reg_exp::CreateRegularExpression(possible_national_prefix.c_str()));
-+ possible_national_prefix_rule->Replace(&number_string_copy, false,
-+ re2_transform_rule.c_str());
-+ if (national_number_rule->Match(number_string_copy.c_str(), true, NULL)) {
- number->assign(number_string_copy);
- if (carrier_code) {
- carrier_code->assign(carrier_code_temp);
- }
- }
-- } else if (RE2::Consume(&number_copy_without_transform,
-- RE2Cache::ScopedAccess(re2_cache.get(),
-- possible_national_prefix),
-- &carrier_code_temp) ||
-- RE2::Consume(&number_copy_without_transform,
-- RE2Cache::ScopedAccess(re2_cache.get(),
-- possible_national_prefix))) {
-+ } else if (number_copy_without_transform->ConsumeRegExp(
-+ possible_national_prefix, true, &carrier_code_temp, NULL) ||
-+ number_copy_without_transform->ConsumeRegExp(
-+ possible_national_prefix, true, NULL, NULL)) {
- logger->Debug("Parsed the first digits as a national prefix.");
-+ string unconsumed_part(number_copy_without_transform->ToString());
- // If captured_part_of_prefix is empty, this implies nothing was captured by
- // the capturing groups in possible_national_prefix; therefore, no
- // transformation is necessary, and we just remove the national prefix.
-- if (RE2::FullMatch(number_copy_without_transform, national_number_rule)) {
-- number->assign(number_copy_without_transform.ToString());
-+ if (national_number_rule->Match(unconsumed_part.c_str(), true, NULL)) {
-+ number->assign(unconsumed_part);
- if (carrier_code) {
- carrier_code->assign(carrier_code_temp);
- }
-@@ -1949,11 +1974,13 @@
- string possible_extension_two;
- string possible_extension_three;
- string number_copy(*number);
-- if (RE2::PartialMatch(number_copy, *extn_pattern,
-- &possible_extension_one, &possible_extension_two,
-- &possible_extension_three)) {
-+ scoped_ptr<reg_exp::RegularExpressionInput> number_copy_regex_input(
-+ reg_exp::CreateRegularExpressionInput(number_copy.c_str()));
-+ if (extn_pattern->Consume(number_copy_regex_input.get(), false,
-+ &possible_extension_one, &possible_extension_two,
-+ &possible_extension_three)) {
- // Replace the extensions in the original string here.
-- RE2::Replace(&number_copy, *extn_pattern, "");
-+ extn_pattern->Replace(&number_copy, false, "");
- logger->Debug("Found an extension. Possible extension one: "
- + possible_extension_one
- + ". Possible extension two: " + possible_extension_two
-@@ -2061,25 +2088,29 @@
- &potential_national_number)) {
- const PhoneNumberDesc& general_num_desc =
- default_region_metadata->general_desc();
-- RE2Cache::ScopedAccess valid_number_pattern(
-- re2_cache.get(),
-- general_num_desc.national_number_pattern());
-+ scoped_ptr<reg_exp::RegularExpression> valid_number_pattern(
-+ reg_exp::CreateRegularExpression(
-+ general_num_desc.national_number_pattern().c_str()));
-+
- MaybeStripNationalPrefixAndCarrierCode(*default_region_metadata,
- &potential_national_number,
- NULL);
- logger->Debug("Number without country code prefix: "
- + potential_national_number);
- string extracted_number;
-- RE2Cache::ScopedAccess possible_number_pattern(
-- re2_cache.get(),
-- StrCat("(", general_num_desc.possible_number_pattern(), ")"));
-+ scoped_ptr<reg_exp::RegularExpression> possible_number_pattern(
-+ reg_exp::CreateRegularExpression(
-+ StrCat("(", general_num_desc.possible_number_pattern(),
-+ ")").c_str()));
- // If the number was not valid before but is valid now, or if it was too
- // long before, we consider the number with the country code stripped to
- // be a better result and keep that instead.
-- if ((!RE2::FullMatch(*national_number, valid_number_pattern) &&
-- RE2::FullMatch(potential_national_number, valid_number_pattern)) ||
-- TestNumberLengthAgainstPattern(possible_number_pattern,
-- *national_number)
-+ if ((!valid_number_pattern->Match(national_number->c_str(),
-+ true, NULL) &&
-+ valid_number_pattern->Match(potential_national_number.c_str(),
-+ true, NULL)) ||
-+ TestNumberLengthAgainstPattern(possible_number_pattern.get(),
-+ *national_number)
- == TOO_LONG) {
- national_number->assign(potential_national_number);
- if (keep_raw_input) {
-Index: regexp_adapter_unittest.cc
-===================================================================
---- regexp_adapter_unittest.cc (revision 0)
-+++ regexp_adapter_unittest.cc (revision 0)
-@@ -0,0 +1,142 @@
-+// Copyright (C) 2011 Google Inc.
-+//
-+// 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.
-+
-+// Author: George Yakovlev
-+#include <gtest/gtest.h>
-+
-+#include "base/scoped_ptr.h"
-+#include "regexp_adapter.h"
-+
-+namespace reg_exp {
-+
-+TEST(RegExpAdapter, TestConsumeRegExp) {
-+ scoped_ptr<const reg_exp::RegularExpression> reg_exp1(
-+ reg_exp::CreateRegularExpression("[0-9a-z]+"));
-+ scoped_ptr<const reg_exp::RegularExpression> reg_exp2(
-+ reg_exp::CreateRegularExpression(" \\(([0-9a-z]+)\\)"));
-+ scoped_ptr<const reg_exp::RegularExpression> reg_exp3(
-+ reg_exp::CreateRegularExpression("([0-9a-z]+)-([0-9a-z]+)"));
-+
-+ scoped_ptr<reg_exp::RegularExpressionInput> reg_input1(
-+ reg_exp::CreateRegularExpressionInput("+1-123-456-789"));
-+ scoped_ptr<reg_exp::RegularExpressionInput> reg_input2(
-+ reg_exp::CreateRegularExpressionInput("1 (123)456-789"));
-+
-+ EXPECT_FALSE(reg_exp1->Consume(reg_input1.get(), true, NULL, NULL));
-+ EXPECT_EQ(reg_input1->ToString(), "+1-123-456-789");
-+ EXPECT_TRUE(reg_exp1->Consume(reg_input1.get(), false, NULL, NULL));
-+ EXPECT_EQ(reg_input1->ToString(), "-123-456-789");
-+ std::string res1, res2;
-+ EXPECT_FALSE(reg_exp2->Consume(reg_input1.get(), true, &res1, NULL));
-+ EXPECT_FALSE(reg_exp3->Consume(reg_input1.get(), true, &res1, &res2));
-+ EXPECT_TRUE(reg_exp3->Consume(reg_input1.get(), false, &res1, &res2));
-+ EXPECT_EQ(reg_input1->ToString(), "-789");
-+ EXPECT_EQ(res1, "123");
-+ EXPECT_EQ(res2, "456");
-+
-+ EXPECT_EQ(reg_input2->ToString(), "1 (123)456-789");
-+ EXPECT_TRUE(reg_exp1->Consume(reg_input2.get(), true, NULL, NULL));
-+ EXPECT_EQ(reg_input2->ToString(), " (123)456-789");
-+ EXPECT_TRUE(reg_exp2->Consume(reg_input2.get(), true, &res1, NULL));
-+ EXPECT_EQ(reg_input2->ToString(), "456-789");
-+ EXPECT_EQ(res1, "123");
-+ EXPECT_TRUE(reg_exp3->Consume(reg_input2.get(), true, &res1, &res2));
-+ EXPECT_EQ(reg_input2->ToString(), "");
-+ EXPECT_EQ(res1, "456");
-+ EXPECT_EQ(res2, "789");
-+}
-+
-+TEST(RegExpAdapter, TestConsumeInput) {
-+ scoped_ptr<reg_exp::RegularExpressionInput> reg_input(
-+ reg_exp::CreateRegularExpressionInput("1 (123)456-789"));
-+ std::string res1, res2;
-+ EXPECT_EQ(reg_input->ToString(), "1 (123)456-789");
-+ EXPECT_FALSE(reg_input->ConsumeRegExp(std::string("\\[1\\]"),
-+ true,
-+ &res1,
-+ &res2));
-+ EXPECT_EQ(reg_input->ToString(), "1 (123)456-789");
-+ EXPECT_FALSE(reg_input->ConsumeRegExp(std::string("([0-9]+) \\([0-9]+\\)"),
-+ true,
-+ &res1,
-+ &res2));
-+ EXPECT_EQ(reg_input->ToString(), "1 (123)456-789");
-+ EXPECT_TRUE(reg_input->ConsumeRegExp(std::string("([0-9]+) \\(([0-9]+)\\)"),
-+ true,
-+ &res1,
-+ &res2));
-+ EXPECT_EQ(reg_input->ToString(), "456-789");
-+ EXPECT_EQ(res1, "1");
-+ EXPECT_EQ(res2, "123");
-+}
-+
-+TEST(RegExpAdapter, TestMatch) {
-+ scoped_ptr<const reg_exp::RegularExpression> reg_exp(
-+ reg_exp::CreateRegularExpression("([0-9a-z]+)"));
-+ std::string matched;
-+ EXPECT_TRUE(reg_exp->Match("12345af", true, &matched));
-+ EXPECT_EQ(matched, "12345af");
-+ EXPECT_TRUE(reg_exp->Match("12345af", false, &matched));
-+ EXPECT_EQ(matched, "12345af");
-+ EXPECT_TRUE(reg_exp->Match("12345af", false, NULL));
-+ EXPECT_TRUE(reg_exp->Match("12345af", true, NULL));
-+
-+ EXPECT_FALSE(reg_exp->Match("[12]", true, &matched));
-+ EXPECT_TRUE(reg_exp->Match("[12]", false, &matched));
-+ EXPECT_EQ(matched, "12");
-+
-+ EXPECT_FALSE(reg_exp->Match("[]", true, &matched));
-+ EXPECT_FALSE(reg_exp->Match("[]", false, &matched));
-+}
-+
-+TEST(RegExpAdapter, TestReplace) {
-+ scoped_ptr<const reg_exp::RegularExpression> reg_exp(
-+ reg_exp::CreateRegularExpression("[0-9]"));
-+
-+ std::string s("123-4567 ");
-+ EXPECT_TRUE(reg_exp->Replace(&s, false, "+"));
-+ EXPECT_EQ(s, "+23-4567 ");
-+ EXPECT_TRUE(reg_exp->Replace(&s, false, "+"));
-+ EXPECT_EQ(s, "++3-4567 ");
-+ EXPECT_TRUE(reg_exp->Replace(&s, true, "*"));
-+ EXPECT_EQ(s, "++*-**** ");
-+ EXPECT_TRUE(reg_exp->Replace(&s, true, "*"));
-+ EXPECT_EQ(s, "++*-**** ");
-+
-+ scoped_ptr<const reg_exp::RegularExpression> full_number_expr(
-+ reg_exp::CreateRegularExpression("(\\d{3})(\\d{3})(\\d{4})"));
-+ s = "1234567890:0987654321";
-+ EXPECT_TRUE(full_number_expr->Replace(&s, true, "(\\1) \\2-\\3$1"));
-+ EXPECT_EQ(s, "(123) 456-7890$1:(098) 765-4321$1");
-+}
-+
-+TEST(RegExpAdapter, TestUtf8) {
-+ // Expression: <tel symbol><opening square bracket>[<alpha>-<omega>]*
-+ // <closing square bracket>
-+ scoped_ptr<const reg_exp::RegularExpression> reg_exp(
-+ reg_exp::CreateRegularExpression(
-+ "\xe2\x84\xa1\xe2\x8a\x8f([\xce\xb1-\xcf\x89]*)\xe2\x8a\x90"));
-+ std::string matched;
-+ // The string is split to avoid problem with MSVC compiler when it thinks
-+ // 123 is a part of character code.
-+ EXPECT_FALSE(reg_exp->Match("\xe2\x84\xa1\xe2\x8a\x8f" "123\xe2\x8a\x90",
-+ true, &matched));
-+ EXPECT_TRUE(reg_exp->Match(
-+ "\xe2\x84\xa1\xe2\x8a\x8f\xce\xb1\xce\xb2\xe2\x8a\x90", true, &matched));
-+ // <alpha><betha>
-+ EXPECT_EQ(matched, "\xce\xb1\xce\xb2");
-+}
-+
-+} // namespace reg_exp
-+
-
-Property changes on: regexp_adapter_unittest.cc
-___________________________________________________________________
-Added: svn:eol-style
- + LF
-
diff --git a/third_party/libphonenumber/resources/PhoneNumberMetaData.xml b/third_party/libphonenumber/resources/PhoneNumberMetaData.xml
deleted file mode 100644
index 748ce21..0000000
--- a/third_party/libphonenumber/resources/PhoneNumberMetaData.xml
+++ /dev/null
@@ -1,19202 +0,0 @@
-<!-- Copyright (C) 2009 Google Inc.
-
- 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.
-
- @author: Shaopeng Jia
- @author: Lara Rennie
-
- MetaData on Phone Number Plan and formatting rules
- Note: Territories are in alphabetical order by their IDs, which are based on ISO 3166-1
- two-letter country codes. The country names in the comments are the official short names
- in English according to ISO 3166-1.
-
- For more information on what each element represents, see
- java/com/google/i18n/phonenumbers/phonemetadata.proto
-
- Note that if you want to add validation metadata, the generalDesc nationalNumberPattern and
- possibleNumberPattern must be provided. If this is missing, then the country will be
- considered to have no more specific phone-number type metadata (fixedLine, mobile etc) and
- hence only basic validation rules (numbers should be between 3 and 15 digits long) will be
- applied.
-
- Country code, international and national prefix information main source:
- http://www.itu.int/publ/T-SP-E.164C-2010/en
--->
-
-<!DOCTYPE phoneNumberMetadata [
- <!ELEMENT phoneNumberMetadata (territories)>
- <!ELEMENT territories (territory+)>
- <!ELEMENT territory (availableFormats?, generalDesc?, noInternationalDialling?,
- areaCodeOptional?, fixedLine?, mobile?, pager?, tollFree?, premiumRate?,
- sharedCost?, personalNumber?, voip?, uan?, shortCode?)>
- <!ELEMENT generalDesc (nationalNumberPattern, possibleNumberPattern)>
- <!ELEMENT noInternationalDialling (nationalNumberPattern, possibleNumberPattern,
- exampleNumber?)>
- <!ELEMENT areaCodeOptional (nationalNumberPattern, possibleNumberPattern, exampleNumber?)>
- <!ELEMENT fixedLine (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
- <!ELEMENT mobile (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
- <!ELEMENT pager (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
- <!ELEMENT tollFree (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
- <!ELEMENT premiumRate (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
- <!ELEMENT sharedCost (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
- <!ELEMENT personalNumber (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
- <!ELEMENT voip (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
- <!ELEMENT uan (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
- <!ELEMENT shortCode (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
- <!ELEMENT availableFormats (numberFormat+, intlNumberFormat*)>
- <!ELEMENT nationalNumberPattern (#PCDATA)>
- <!ELEMENT possibleNumberPattern (#PCDATA)>
- <!ELEMENT exampleNumber (#PCDATA)>
- <!ELEMENT numberFormat (leadingDigits*, format)>
- <!ELEMENT intlNumberFormat (leadingDigits*, format)>
- <!ELEMENT format (#PCDATA)>
- <!ELEMENT leadingDigits (#PCDATA)>
-
- <!ATTLIST territory id CDATA #REQUIRED>
- <!ATTLIST territory countryCode CDATA #REQUIRED>
- <!ATTLIST territory leadingDigits CDATA #IMPLIED>
- <!ATTLIST territory preferredInternationalPrefix CDATA #IMPLIED>
- <!ATTLIST territory internationalPrefix CDATA #REQUIRED>
- <!ATTLIST territory nationalPrefix CDATA #IMPLIED>
- <!ATTLIST territory nationalPrefixForParsing CDATA #IMPLIED>
- <!ATTLIST territory nationalPrefixTransformRule CDATA #IMPLIED>
- <!ATTLIST territory preferredExtnPrefix CDATA #IMPLIED>
- <!ATTLIST territory nationalPrefixFormattingRule CDATA #IMPLIED>
- <!ATTLIST territory mainCountryForCode (true) #IMPLIED>
- <!ATTLIST territory leadingZeroPossible (true) #IMPLIED>
- <!ATTLIST territory carrierCodeFormattingRule CDATA #IMPLIED>
- <!ATTLIST numberFormat nationalPrefixFormattingRule CDATA #IMPLIED>
- <!ATTLIST numberFormat carrierCodeFormattingRule CDATA #IMPLIED>
- <!ATTLIST numberFormat pattern CDATA #REQUIRED>
- <!ATTLIST intlNumberFormat pattern CDATA #REQUIRED>
- <!ATTLIST intlNumberFormat carrierCodeFormattingRule CDATA #IMPLIED>
-]>
-
-<phoneNumberMetadata>
- <territories>
- <!-- Ascension Island -->
- <!-- www.itu.int/oth/T02020000AF -->
- <territory id="AC" countryCode="247" internationalPrefix="00">
- <!-- Formatted as a block. -->
- <generalDesc>
- <nationalNumberPattern>[2-46]\d{3}</nationalNumberPattern>
- <possibleNumberPattern>\d{4}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 3[0-5]|
- 4[4-6]|
- [26]\d
- )\d{2}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{4}</possibleNumberPattern>
- <exampleNumber>6889</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>NA</nationalNumberPattern>
- <possibleNumberPattern>NA</possibleNumberPattern>
- </mobile>
- </territory>
-
- <!-- Andorra -->
- <!-- http://www.itu.int/oth/T0202000005/en -->
- <territory id="AD" countryCode="376" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{3})">
- <leadingDigits>[346-9]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(180[02])(\d{4})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- (?:
- [346-9]|
- 180
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[78]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- <exampleNumber>712345</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[346]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- <exampleNumber>312345</exampleNumber>
- </mobile>
- <tollFree>
- <!-- Note that the definitions of 1800 and 1802 numbers differ in the plan and on the
- Andorran www.sta.ad website, but we consider both to be freephone here. -->
- <nationalNumberPattern>180[02]\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>18001234</exampleNumber>
- </tollFree>
- <!-- The national numbering plan says that numbers beginning with 9 are reserved for special
- services, so we assume they are premium rate here, although we cannot find examples
- online. -->
- <premiumRate>
- <nationalNumberPattern>9\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- <exampleNumber>912345</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- United Arab Emirates -->
- <!-- http://www.itu.int/oth/T02020000DC/en -->
- <territory id="AE" countryCode="971" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([2-4679])(\d{3})(\d{4})">
- <leadingDigits>[2-4679][2-8]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(5[056])(\d{3})(\d{4})">
- <leadingDigits>5</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([4679]00)(\d)(\d{5})" nationalPrefixFormattingRule="$FG">
- <leadingDigits>[4679]0</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(800)(\d{2,9})" nationalPrefixFormattingRule="$FG">
- <leadingDigits>8</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [2-79]\d{7,8}|
- 800\d{2,9}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,12}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- [2-4679][2-8]\d|
- 600[25]
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- <exampleNumber>22345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>5[056]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>501234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 400\d{6}|
- 800\d{2,9}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,12}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[02]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>900234567</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>700[05]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>700012345</exampleNumber>
- </sharedCost>
- </territory>
-
- <!-- Afghanistan -->
- <!-- http://www.itu.int/oth/T0202000001/en -->
- <territory id="AF" countryCode="93" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([2-7]\d)(\d{3})(\d{4})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-7]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- [25][0-8]|
- [34][0-4]|
- 6[0-5]
- )[2-9]\d{6}
- </nationalNumberPattern>
- <exampleNumber>234567890</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[057-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>701234567</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Antigua and Barbuda -->
- <!-- http://www.itu.int/oth/T0202000008/en -->
- <territory id="AG" countryCode="1" leadingDigits="268"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[2589]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- 268 468 is not in the plan, but has been added after numbers with this prefix have been
- found in online searches. -->
- <nationalNumberPattern>
- 268(?:
- 4(?:
- 6[0-38]|
- 84
- )|
- 56[0-2]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>2684601234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- 268 776/778/779 are not in the plan, but have been added after numbers with these
- prefixes have been found in online searches. Same for 268 780/782/784/786. -->
- <nationalNumberPattern>
- 268(?:
- 464|
- 7(?:
- 2[0-9]|
- 64|
- 7[0-689]|
- 8[02-68]
- )
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>2684641234</exampleNumber>
- </mobile>
- <pager>
- <nationalNumberPattern>26840[69]\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>2684061234</exampleNumber>
- </pager>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- <voip>
- <!-- This is included as Centrex in the plan. -->
- <nationalNumberPattern>26848[01]\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>2684801234</exampleNumber>
- </voip>
- </territory>
-
- <!-- Anguilla -->
- <!-- http://www.itu.int/oth/T0202000007/en -->
- <territory id="AI" countryCode="1" leadingDigits="264"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[2589]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 2644(?:
- 6[12]|
- 9[78]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>2644612345</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 264(?:
- 235|
- 476|
- 5(?:
- 3[6-9]|
- 8[1-4]
- )|
- 7(?:
- 29|
- 72
- )
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>2642351234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Albania -->
- <!-- http://www.itu.int/oth/T0202000002/en -->
- <territory id="AL" countryCode="355" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- Formats mostly follow http://tirana.usembassy.gov/list_of_doctors.html -->
- <numberFormat pattern="(4)(\d{3})(\d{4})">
- <leadingDigits>4[0-6]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(6[6-9])(\d{3})(\d{4})">
- <leadingDigits>6</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{3})">
- <leadingDigits>
- [2358][2-5]|
- 4[7-9]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3,5})">
- <leadingDigits>
- [235][16-9]|
- 8[016-9]|
- [79]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [2-57]\d{7}|
- 6\d{8}|
- 8\d{5,7}|
- 9\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2(?:
- [168][1-9]|
- [247]\d|
- 9[1-7]
- )|
- 3(?:
- 1[1-3]|
- [2-6]\d|
- [79][1-8]|
- 8[1-9]
- )|
- 4\d{2}|
- 5(?:
- 1[1-4]|
- [2-578]\d|
- 6[1-5]|
- 9[1-7]
- )|
- 8(?:
- [19][1-5]|
- [2-6]\d|
- [78][1-7]
- )
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,8}</possibleNumberPattern>
- <exampleNumber>22345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>6[6-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>661234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>8001234</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- It is named "Shared Revenue Services" in the plan, but as there is a separate "Shared
- Cost Services", it is highly likely these numbers are premium rate numbers. No
- information/example is found in the Internet. -->
- <nationalNumberPattern>900\d{3}</nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- <exampleNumber>900123</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>808\d{3}</nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- <exampleNumber>808123</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>700\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>70012345</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Armenia -->
- <!-- http://www.itu.int/oth/T020200000A/en -->
- <!-- We think the national dialling prefix is 0 - it seems this was a change in 2005 (or 2008)
- along with the new city codes. However, their official document makes no mention of it,
- websites disagree, and we are not sure if the change has actually been made. -->
- <territory id="AM" countryCode="374" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{6})">
- <leadingDigits>
- [17]|
- 9[1-9]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{6})"
- nationalPrefixFormattingRule="$NP$FG">
- <leadingDigits>6</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{5})">
- <leadingDigits>[23]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{2})(\d{3})"
- nationalPrefixFormattingRule="$NP $FG">
- <leadingDigits>
- 8|
- 90
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-36-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 10\d|
- 2(?:
- 2[2-46]|
- 3[1-8]|
- 4[2-69]|
- 5[2-7]|
- 6[1-9]|
- 8[1-7]
- )|
- 3[12]2
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>10123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 77|
- 9[1-46-9]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>77123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90[016]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>90012345</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>80[1-4]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80112345</exampleNumber>
- </sharedCost>
- <voip>
- <!-- More info on this found at www.arminco.com/en/voip -->
- <nationalNumberPattern>6027\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>60271234</exampleNumber>
- </voip>
- <shortCode>
- <nationalNumberPattern>
- 8[1-7]\d{2}|
- 1\d{2}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
- <exampleNumber>8711</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Netherlands Antilles -->
- <!-- http://www.itu.int/oth/T0202000097/en -->
- <territory id="AN" countryCode="599" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <leadingDigits>[13-7]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(9)(\d{3})(\d{4})">
- <leadingDigits>9</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[13-79]\d{6,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 318|
- 5(?:
- 25|
- 4\d|
- 8[239]
- )|
- 7(?:
- 1[578]|
- 50
- )|
- 9(?:
- [48]\d{2}|
- 50\d|
- 7(?:
- 2[0-2]|
- [34]\d|
- 6[35-7]|
- 77
- )
- )
- )\d{4}|
- 416[0239]\d{3}
- </nationalNumberPattern>
- <exampleNumber>7151234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 318|
- 5(?:
- 1[01]|
- 2[0-7]|
- 5\d|
- 8[016-8]
- )|
- 7(?:
- 0[01]|
- [89]\d
- )|
- 9(?:
- 5(?:
- [1246]\d|
- 3[01]
- )|
- 6(?:
- [1679]\d|
- 3[01]
- )
- )
- )\d{4}|
- 416[15-8]\d{3}
- </nationalNumberPattern>
- <exampleNumber>3181234</exampleNumber>
- </mobile>
- <!-- Value-added services are lumped together under shared cost, since we are not sure exactly
- what they are. -->
- <sharedCost>
- <nationalNumberPattern>
- (?:
- 10|
- 69
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>1011234</exampleNumber>
- </sharedCost>
- </territory>
-
- <!-- Angola -->
- <!-- http://www.itu.int/oth/T0202000006/en -->
- <territory id="AO" countryCode="244" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{3})(\d{3})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[29]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 2\d(?:
- [26-9]\d|
- \d[26-9]
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>222123456</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Expanded the 92 prefix possibilities to match numbers found online. -->
- <nationalNumberPattern>9[1-3]\d{7}</nationalNumberPattern>
- <exampleNumber>923123456</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Argentina -->
- <!-- http://www.itu.int/oth/T0202000009/en -->
- <!-- http://www.cnc.gov.ar/numeracion/IndicativosInterurbanos.asp -->
- <territory id="AR" countryCode="54" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixForParsing="0(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1-367])|3(?:[06]2|1[467]|2[02-6]|3[13-8]|[49][2-6]|5[2-8]|7)|47[3-578]|6(?:1|2[2-7]|4[6-8]?|5[125-8])|9(?:0[1-3]|[19]|2\d|3[1-6]|4[0-24-68]|5[2-4]|6[2-6]|72?|8[23]?))|3(?:3(?:2[79]|8[2578])|4(?:0[124-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6\d|7[126]|8[237-9]|9[1-36-8])|5(?:1|2[1245]|3[2-4]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|7(?:1[15-8]|2[125]|3[1245]|4[13]|5[124-8]|7[2-57]|8[1-36])|8(?:1|2[125-7]|3[23578]|4[13-6]|5[4-8]?|6[1-357-9]|7[5-8]?|8[4-7]?|9[124])))15)?"
- nationalPrefixTransformRule="9$1" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([68]\d{2})(\d{3})(\d{4})">
- <leadingDigits>[68]</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <intlNumberFormat pattern="([68]\d{2})(\d{3})(\d{4})">
- <leadingDigits>[68]</leadingDigits>
- <format>$1-$2-$3</format>
- </intlNumberFormat>
- <numberFormat pattern="9(11)(\d{4})(\d{4})">
- <leadingDigits>91</leadingDigits>
- <format>$1 15-$2-$3</format>
- </numberFormat>
- <intlNumberFormat pattern="9(11)(\d{4})(\d{4})">
- <leadingDigits>91</leadingDigits>
- <format>9 $1 $2-$3</format>
- </intlNumberFormat>
- <numberFormat pattern="9(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 9(?:
- 2[2369]|
- 3[458]
- )
- </leadingDigits>
- <leadingDigits>
- 9(?:
- 2(?:
- 2[013]|
- 37|
- 6[14]|
- 9[179]
- )|
- 3(?:
- 4[1235]|
- 5[138]|
- 8[1578]
- )
- )
- </leadingDigits>
- <format>$1 15-$2-$3</format>
- </numberFormat>
- <intlNumberFormat pattern="9(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 9(?:
- 2[2369]|
- 3[458]
- )
- </leadingDigits>
- <leadingDigits>
- 9(?:
- 2(?:
- 2[013]|
- 37|
- 6[14]|
- 9[179]
- )|
- 3(?:
- 4[1235]|
- 5[138]|
- 8[1578]
- )
- )
- </leadingDigits>
- <format>9 $1 $2-$3</format>
- </intlNumberFormat>
- <numberFormat pattern="9(\d{4})(\d{2})(\d{4})">
- <leadingDigits>
- 9(?:
- 2[2-469]|
- 3[3-578]
- )
- </leadingDigits>
- <leadingDigits>
- 9(?:
- 2(?:
- 2[24-9]|
- 3[0-69]|
- 47|
- 6[25]|
- 9[02-68]
- )|
- 3(?:
- 3[28]|
- 4[046-9]|
- 5[2467]|
- 7[1-578]|
- 8[23469]
- )
- )
- </leadingDigits>
- <format>$1 15-$2-$3</format>
- </numberFormat>
- <intlNumberFormat pattern="9(\d{4})(\d{2})(\d{4})">
- <leadingDigits>
- 9(?:
- 2[2-469]|
- 3[3-578]
- )
- </leadingDigits>
- <leadingDigits>
- 9(?:
- 2(?:
- 2[24-9]|
- 3[0-69]|
- 47|
- 6[25]|
- 9[02-68]
- )|
- 3(?:
- 3[28]|
- 4[046-9]|
- 5[2467]|
- 7[1-578]|
- 8[23469]
- )
- )
- </leadingDigits>
- <format>9 $1 $2-$3</format>
- </intlNumberFormat>
- <numberFormat pattern="(11)(\d{4})(\d{4})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2-$3</format>
- </numberFormat>
- <intlNumberFormat pattern="(11)(\d{4})(\d{4})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2-$3</format>
- </intlNumberFormat>
- <!-- Some 4-digit area codes actually are caught by this rule. I'm giving however preference
- to the 3-digit area codes, since they are considerably larger communities. -->
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 2(?:
- 2[013]|
- 37|
- 6[14]|
- 9[179]
- )|
- 3(?:
- 4[1235]|
- 5[138]|
- 8[1578]
- )
- </leadingDigits>
- <format>$1 $2-$3</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 2(?:
- 2[013]|
- 37|
- 6[14]|
- 9[179]
- )|
- 3(?:
- 4[1235]|
- 5[138]|
- 8[1578]
- )
- </leadingDigits>
- <format>$1 $2-$3</format>
- </intlNumberFormat>
- <numberFormat pattern="(\d{4})(\d{2})(\d{4})">
- <leadingDigits>[23]</leadingDigits>
- <format>$1 $2-$3</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d{4})(\d{2})(\d{4})">
- <leadingDigits>[23]</leadingDigits>
- <format>$1 $2-$3</format>
- </intlNumberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{9,11}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,12}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[1-9]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- <exampleNumber>1123456789</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 9(?:
- 11[2-9]\d{7}|
- (?:
- 2(?:
- 2[013]|
- 37|
- 6[14]|
- 9[179]
- )|
- 3(?:
- 4[1235]|
- 5[138]|
- 8[1578]
- )
- )[2-9]\d{6}|
- \d{4}[2-9]\d{5}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,12}</possibleNumberPattern>
- <exampleNumber>91123456789</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8012345678</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- 6(?:
- 0\d|
- 10
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>6001234567</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- American Samoa -->
- <!-- http://www.itu.int/oth/T0202000004/en -->
- <territory id="AS" countryCode="1" leadingDigits="684"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[5689]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 6846(?:
- 22|
- 33|
- 44|
- 55|
- 77|
- 88|
- 9[19]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>6846221234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 684(?:
- 733|
- 258
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>6847331234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Austria -->
- <!-- http://www.rtr.at/en/tk/E129 -->
- <territory id="AT" countryCode="43" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([15])(\d{3,12})">
- <leadingDigits>
- 1|
- 5[079]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3,10})">
- <leadingDigits>
- 316|
- 46|
- 51|
- 732|
- 6(?:
- 44|
- 5[0-3579]|
- [6-9]
- )|
- 7(?:
- 1|
- [28]0
- )|
- [89]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{4})(\d{3,9})">
- <leadingDigits>
- 2|
- 3(?:
- 1[1-578]|
- [3-8]
- )|
- 4[2378]|
- 5[2-6]|
- 6(?:
- [12]|
- 4[1-35-9]|
- 5[468]
- )|
- 7(?:
- 2[1-8]|
- 35|
- 4[1-8]|
- [57-9]
- )
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>\d{4,13}</nationalNumberPattern>
- <possibleNumberPattern>\d{3,13}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Note the 050, 057 and 059 prefixes are defined as "private network" in the Austrian
- plan. This just means they are registered to companies who are distributed over
- different geographical areas and maintain their own network. Examples here:
- http://www.rtr.at/?id=4506&S=05&art=d Also note that the full area code is not
- validated - just the first 3 digits. This also means that even though for most
- Austrian numbers the minimum length is 7, we allow 6 since we don't differentiate below
- between 3 and 4 digit area codes for reasons of efficiency. -->
- <nationalNumberPattern>
- 1\d{3,12}|
- (?:
- 2(?:
- 1[467]|
- 2[134-8]|
- 5[2357]|
- 6[1-46-8]|
- 7[1-8]|
- 8[124-7]|
- 8[1458]
- )|
- 3(?:
- 1[1-8]|
- 3[23568]|
- 4[5-7]|
- 5[1378]|
- 6[1-38]|
- 8[3-68]
- )|
- 4(?:
- 2[1-8]|
- 35|
- 63|
- 7[1368]|
- 8[2457]
- )|
- 5(?:
- 1[27]|
- 2[1-8]|
- 3[357]|
- 4[147]|
- 5[12578]|
- 6[37]
- )|
- 6(?:
- 13|
- 2[1-47]|
- 4[1-35-8]|
- 5[468]|
- 62
- )|
- 7(?:
- 2[1-8]|
- 3[25]|
- 4[13478]|
- 5[68]|
- 6[16-8]|
- 7[1-6]|
- 9[45]
- )
- )\d{3,10}|
- 5(?:
- 0[1-9]|
- [79]\d
- )\d{2,10}|
- 720\d{6,10}
- </nationalNumberPattern>
- <exampleNumber>1234567890</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 6(?:
- 44|
- 5[0-3579]|
- 6[013-9]|
- [7-9]\d
- )\d{4,10}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,13}</possibleNumberPattern>
- <exampleNumber>644123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80[02]\d{6,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{9,13}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- (?:
- 711|
- 9(?:
- 0[01]|
- 3[019]
- )
- )\d{6,10}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9,13}</possibleNumberPattern>
- <exampleNumber>900123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>
- 8(?:
- 10|
- 2[018]
- )\d{6,10}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9,13}</possibleNumberPattern>
- <exampleNumber>810123456</exampleNumber>
- </sharedCost>
- <voip>
- <nationalNumberPattern>780\d{6,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{9,13}</possibleNumberPattern>
- <exampleNumber>780123456</exampleNumber>
- </voip>
- </territory>
-
- <!-- Australia -->
- <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T020200000D0001MSWE.doc -->
- <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_Australia -->
- <territory id="AU" countryCode="61" preferredInternationalPrefix="0011"
- internationalPrefix="(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]"
- nationalPrefix="0">
- <availableFormats>
- <numberFormat nationalPrefixFormattingRule="($NP$FG)"
- pattern="([2378])(\d{4})(\d{4})">
- <leadingDigits>[2378]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="(4\d{2})(\d{3})(\d{3})">
- <leadingDigits>4</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="(5[05]0)(\d{3})(\d{3})">
- <leadingDigits>5</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="(1[389]\d{2})(\d{3})(\d{3})">
- <leadingDigits>
- 1(?:
- [38]0|
- 9
- )
- </leadingDigits>
- <leadingDigits>
- 1(?:
- [38]00|
- 9
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- Although the national plan doesn't explicitly say so, there is no evidence that a 180
- xxxx number could be 180 0xxx. -->
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="(180)(\d{4})">
- <leadingDigits>180</leadingDigits>
- <leadingDigits>180[1-9]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="(13)(\d{2})(\d{2})">
- <leadingDigits>13[1-9]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-578]\d{5,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[2378]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- <exampleNumber>212345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 4(?:
- [0-2]\d|
- 3[0-57-9]|
- 4[47-9]|
- 5[0-37-9]|
- 6[6-9]|
- 7[07-9]|
- 8[7-9]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>412345678</exampleNumber>
- </mobile>
- <tollFree>
- <!-- Local-rate (SmartNumbers) are put here for now because they are also a reverse-charge
- network, although they charge a small local call connect fee (around 25c). These start
- with 13 or 1300. -->
- <nationalNumberPattern>
- 1(?:
- 80(?:
- 0\d{2}
- )? |
- 3(?:
- 00\d{2}
- )?
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- <exampleNumber>1800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>190[0126]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1900123456</exampleNumber>
- </premiumRate>
- <!-- Wikipedia was the source for these types of numbers, and number allocation search here
- http://web.acma.gov.au/numb/openAccess/inquiry/allocationSearch.do confirms this. (Search
- from 0500000000 to 0590000000) -->
- <personalNumber>
- <nationalNumberPattern>500\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>500123456</exampleNumber>
- </personalNumber>
- <voip>
- <nationalNumberPattern>550\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>550123456</exampleNumber>
- </voip>
- </territory>
-
- <!-- Aruba -->
- <!-- http://www.itu.int/oth/T020200000B/en -->
- <territory id="AW" countryCode="297" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="([5-9]\d{2})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[5-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 5(?:
- 2\d{2}|
- 8(?:
- [2-7]\d|
- 8[0-79]|
- 9[48]
- )
- )\d{3}
- </nationalNumberPattern>
- <exampleNumber>5212345</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding 660 since SMS messages have been successfully delivered to numbers with this
- prefix, and numbers can be found in the yellow pages. -->
- <nationalNumberPattern>
- (?:
- 5[69]\d|
- 660|
- 9(?:
- 6\d|
- 9[02-9]
- )|
- 7[34]\d
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>5601234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{4}</nationalNumberPattern>
- <exampleNumber>8001234</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{4}</nationalNumberPattern>
- <exampleNumber>9001234</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Azerbaijan -->
- <!-- http://www.itu.int/oth/T020200000F/en -->
- <territory id="AZ" countryCode="994" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{3})(\d{2})(\d{2})">
- <leadingDigits>1[28]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})">
- <leadingDigits>22</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{2,3})(\d{2})(\d{2})">
- <leadingDigits>3</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d)(\d{2})(\d{2})">
- <leadingDigits>
- 1[013-79]|
- 2[013-9]
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{2})(\d{2})"
- nationalPrefixFormattingRule="$NP$FG">
- <leadingDigits>[4-8]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{2})(\d{2})(\d{2})"
- nationalPrefixFormattingRule="$NP$FG">
- <leadingDigits>9</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Added the 164 area code after it was found in other online lists and in many online
- numbers. Also includes the area code 44 for CDMA regions, which are classified under
- "Fixed Network" by the national plan. -->
- <nationalNumberPattern>
- (?:
- 1(?:
- (?:
- [28]\d|
- 9
- )\d|
- 02|
- 1[0-589]|
- 3[358]|
- 4[013-79]|
- 5[0-479]|
- 6[02346-9]|
- 7[0-24-8]
- )|
- 2(?:
- 16|
- 2\d|
- 3[0-24]|
- 4[1468]|
- 55|
- 6[56]|
- 79
- )|
- 365?\d|
- 44\d{2}
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>123123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- [46]0|
- 5[015]|
- 7[07]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>401234567</exampleNumber>
- </mobile>
- <tollFree>
- <!-- 88 is listed as fixed-line for Baku in the ITU document, but online numbers seem to
- suggest they are in fact national toll-free numbers. -->
- <nationalNumberPattern>88\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>881234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- These are marked as Interactive Calls in the ITU document. -->
- <nationalNumberPattern>900200\d{3}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>900200123</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Bosnia and Herzegovina -->
- <!-- http://www.cra.ba/en/telecom/numbering/ -->
- <!-- http://en.wikipedia.org/wiki/+387 -->
- <territory id="BA" countryCode="387" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([3-689]\d)(\d{3})(\d{3})">
- <format>$1 $2-$3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[3-689]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- [35]\d|
- 49
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>30123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>6[1-356]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>61123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>8[08]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>9[0246]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>90123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <!-- Using this category to model national tariff numbers - these are under Shared Cost in
- the plan. -->
- <nationalNumberPattern>82\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>82123456</exampleNumber>
- </sharedCost>
- <uan>
- <nationalNumberPattern>81\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>81123456</exampleNumber>
- </uan>
- </territory>
-
- <!-- Barbados -->
- <!-- http://www.itu.int/oth/T0202000013/en -->
- <territory id="BB" countryCode="1" leadingDigits="246"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[2589]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>246[2-9]\d{6}</nationalNumberPattern>
- <exampleNumber>2462345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 246(?:
- (?:
- 2[346]|
- 45|
- 82
- )\d|
- 25[0-4]
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>2462501234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Bangladesh -->
- <!-- http://www.itu.int/oth/T0202000012/en -->
- <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_Bangladesh -->
- <!-- http://www.btrc.gov.bd/engineering/national_numbering_plan_2005.pdf -->
- <territory id="BD" countryCode="880" internationalPrefix="00[12]?"
- preferredInternationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(2)(\d{7})">
- <leadingDigits>2</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{4,6})">
- <leadingDigits>[3-79]1</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3,7})">
- <leadingDigits>
- [3-79][2-9]|
- 8
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{4})(\d{6})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <!-- This is quite complex so we can define that numbers beginning with 88 are not part of the
- plan, so the country code can be accurately stripped off. -->
- <nationalNumberPattern>
- [2-79]\d{5,9}|
- 1\d{9}|
- 8[0-7]\d{4,8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- There was a plan to move to 10 digit fixed-line numbers, but this does not seem to have
- been realised, judging by online numbers and wikipedia. These patterns are grouped
- first by leading digit, then within by number of digits. Several Dhaka prefixes (02
- 731, 751 etc) are included despite not being mentioned on the wikipedia page due to
- online evidence. Another oddity is Chittagong - some numbers have a leading 2, others
- do not - both are allowed for now. -->
- <nationalNumberPattern>
- 2(?:
- 7\d1|
- 8(?:
- [026]1|
- [1379][1-5]|
- 8[1-8]
- )|
- 9(?:
- 0[0-2]|
- 1[1-4]|
- 3[3-5]|
- 5[56]|
- 6[67]|
- 71|
- 8[078]
- )
- )\d{4}|
- 3(?:
- [6-8]1|
- (?:
- 0[23]|
- [25][12]|
- 82|
- 416
- )\d|
- (?:
- 31|
- 12?[5-7]
- )\d{2}
- )\d{3}|
- 4(?:
- (?:
- 02|
- [49]6|
- [68]1
- )|
- (?:
- 0[13]|
- 21\d? |
- [23]2|
- [457][12]|
- 6[28]
- )\d|
- (?:
- 23|
- [39]1
- )\d{2}|
- 1\d{3}
- )\d{3}|
- 5(?:
- (?:
- [457-9]1|
- 62
- )|
- (?:
- 1\d? |
- 2[12]|
- 3[1-3]|
- 52
- )\d|
- 61{2}
- )|
- 6(?:
- [45]1|
- (?:
- 11|
- 2[15]|
- [39]1
- )\d|
- (?:
- [06-8]1|
- 62
- )\d{2}
- )|
- 7(?:
- (?:
- 32|
- 91
- )|
- (?:
- 02|
- 31|
- [67][12]
- )\d|
- [458]1\d{2}|
- 21\d{3}
- )\d{3}|
- 8(?:
- (?:
- 4[12]|
- [5-7]2|
- 1\d?
- )|
- (?:
- 0|
- 3[12]|
- [5-7]1|
- 217
- )\d
- )\d{4}|
- 9(?:
- [35]1|
- (?:
- [024]2|
- 81
- )\d|
- (?:
- 1|
- [24]1
- )\d{2}
- )\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- <exampleNumber>27111234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Presuming that mobile numbers with the prefixes 66, 37, 44 and 38 must be followed by
- numbers [02-9] or they would clash with fixed-line codes. According to the plan, mobile
- numbers should be moving to 1[13-9] anyway. -->
- <nationalNumberPattern>
- (?:
- 1[13-9]\d|
- (?:
- 3[78]|
- 44
- )[02-9]|
- 6(?:
- 44|
- 6[02-9]
- )
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1812345678</exampleNumber>
- </mobile>
- <tollFree>
- <!-- Note: Including Tele-voting numbers here as they are free of charge. -->
- <nationalNumberPattern>80[03]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- </territory>
-
- <!-- Belgium -->
- <!-- http://www.bipt.be/en/161/ShowContent/502/Database/Databases.aspx -->
- <!-- http://www.telefoonzones.be/ -->
- <!-- Information on non-geographic numbers here: (Dutch)
- http://www.scarletbusiness.be/business/largeenterprise/nl/products/voiceservices/servicenumbers.jsp
- -->
- <territory id="BE" countryCode="32" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(4[7-9]\d)(\d{2})(\d{2})(\d{2})">
- <leadingDigits>4[7-9]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="([2-49])(\d{3})(\d{2})(\d{2})">
- <leadingDigits>
- [23]|
- [49][23]
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="([15-8]\d)(\d{2})(\d{2})(\d{2})">
- <leadingDigits>
- [156]|
- 7[0178]|
- 8(?:
- 0[1-9]|
- [1-79]
- )
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="([89]\d{2})(\d{2})(\d{3})">
- <leadingDigits>
- (?:
- 80|
- 9
- )0
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Note that 80 is a valid area code, so we explicitly check for this case that the third
- digit begins with 1-9 -->
- <nationalNumberPattern>
- (?:
- 1[0-69]|
- [23][2-8]|
- [49][23]|
- 5\d|
- 6[013-57-9]|
- 7[18]
- )\d{6}|
- 8(?:
- 0[1-9]|
- [1-69]\d
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>12345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 4(?:
- 7\d|
- 8[4-9]|
- 9[1-9]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>470123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- (?:
- 90|
- 7[07]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>90123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>87\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>87123456</exampleNumber>
- </sharedCost>
- </territory>
-
- <!-- Burkina Faso -->
- <!-- http://www.itu.int/oth/T0202000021/en -->
- <territory id="BF" countryCode="226" internationalPrefix="00">
- <availableFormats>
- <!-- The national numbering plan from ITU suggests grouping of 2, 2 and 4, but we have
- chosen to use the standard from numbers found on the internet instead. -->
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2457]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- 50 48 and 50 49 exist as well. -->
- <nationalNumberPattern>
- (?:
- 20(?:
- 49|
- 5[23]|
- 9[016-9]
- )|
- 40(?:
- 4[569]|
- 55|
- 7[0179]
- )|
- 50[34]\d
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>20491234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Including the whole range of 75 despite the document restricting it to only a few,
- since diallable numbers have been found outside the range that the document specifies.
- Including 716 as well since many numbers seem to have this prefix. -->
- <nationalNumberPattern>
- 7(?:
- [024-6]\d|
- 1[0-4689]|
- 3[0-6]|
- 7[01]|
- 8[013-9]|
- 9[0-4]
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>70123456</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Bulgaria -->
- <!-- http://www.itu.int/oth/T0202000020/en -->
- <territory id="BG" countryCode="359" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(2)(\d{3})(\d{3,4})">
- <leadingDigits>2</leadingDigits>
- <format>$1/$2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{4})">
- <leadingDigits>
- 43[124-7]|
- 70[1-9]
- </leadingDigits>
- <format>$1/$2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{2})">
- <leadingDigits>
- 43[124-7]|
- 70[1-9]
- </leadingDigits>
- <format>$1/$2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{2})(\d{3})">
- <leadingDigits>[78]00</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{2,3})">
- <leadingDigits>
- [356]|
- 7[1-9]|
- 8[1-6]|
- 9[1-7]
- </leadingDigits>
- <format>$1/$2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{3,4})">
- <leadingDigits>
- 48|
- 8[7-9]|
- 9[08]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-9]\d{6,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2\d|
- [36]\d|
- 5[1-9]|
- 8[1-6]|
- 9[1-7]
- )\d{5,6}|
- (?:
- 4(?:
- [124-7]\d|
- 3[1-6]
- )|
- 7(?:
- 0[1-9]|
- [1-9]\d
- )
- )\d{4,5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- <exampleNumber>2123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 8[7-9]|
- 98
- )\d{7}|
- 4(?:
- 3[0789]|
- 8\d
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- <exampleNumber>48123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>90123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <nationalNumberPattern>700\d{5}</nationalNumberPattern>
- <exampleNumber>70012345</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Bahrain -->
- <!-- http://www.itu.int/oth/T0202000011/en -->
- <!-- http://www.tra.org.bh/en/pdf/National_Numbering_Plan_2.pdf -->
- <territory id="BH" countryCode="973" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{4})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[136-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <!-- Universal Service numbers are under both Mobile and Fixed-Line, as they can be assigned
- to either. -->
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 1(?:
- 3[3-6]|
- 6[0156]|
- 7\d
- )|
- 6(?:
- 1[16]|
- 6[03469]|
- 9[69]
- )|
- 77\d
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>17001234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 3(?:
- [369]\d|
- 77|
- 8[38]
- )|
- 6(?:
- 1[16]|
- 6[03469]|
- 9[69]
- )|
- 77\d
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>36001234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{6}</nationalNumberPattern>
- <exampleNumber>80123456</exampleNumber>
- </tollFree>
- <!-- 87 numbers are "wholly paid by the caller", so they are slotted under premium-rate for
- now. -->
- <premiumRate>
- <nationalNumberPattern>
- (?:
- 87|
- 9[014578]
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>90123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>84\d{6}</nationalNumberPattern>
- <exampleNumber>84123456</exampleNumber>
- </sharedCost>
- </territory>
-
- <!-- Burundi -->
- <!-- http://www.itu.int/oth/T0202000022/en -->
- <territory id="BI" countryCode="257" internationalPrefix="00">
- <availableFormats>
- <numberFormat
- pattern="([27]\d)(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[27]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 22(?:
- 2[0-7]|
- [3-5]0
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>22201234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Extra online mobile number prefixes found: 79 10, 78 \d{2} and 76 [29]\d. The 29
- prefix is listed as a mobile prefix, but many people list it as their fixed home
- number. We will keep it as mobile for now, but it may actually be a prefix for fixed
- satellite phones. -->
- <nationalNumberPattern>
- (?:
- 29\d|
- 7(?:
- 1[1-3]|
- [4-9]\d
- )
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>79561234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Benin -->
- <!-- http://www.itu.int/oth/T0202000017/en -->
- <territory id="BJ" countryCode="229" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <!-- Numbers beginning with 7 should be formatted as a block. -->
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [2689]\d{7}|
- 7\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{4,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- These come from the national numbering plan, but have been widened to include other
- prefixes found in the yellow pages - specifically 21 0. -->
- <nationalNumberPattern>
- 2(?:
- 02|
- 1[037]|
- 2[45]|
- 3[68]
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>20211234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- 93 0, 93 4, 93 5 and 93 8 have been added as many online examples of these prefixes can
- be found. 9[68] and 97[23] prefixes have also been added because of online numbers
- following these patterns and numbers where SMSs were successfully delivered. 66 has
- been also added, as it seems to be a prefix for Mobile MTN. -->
- <nationalNumberPattern>
- 66\d{6}|
- 9(?:
- 0[069]|
- [35][0-2457-9]|
- [6-8]\d
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>90011234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>7[3-5]\d{2}</nationalNumberPattern>
- <possibleNumberPattern>\d{4}</possibleNumberPattern>
- <exampleNumber>7312</exampleNumber>
- </tollFree>
- <!-- Other numbers beginning with 81 are reserved for _either_ free phone or shared-cost, but
- there is no clear differentiation between these. -->
- <voip>
- <nationalNumberPattern>857[58]\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>85751234</exampleNumber>
- </voip>
- </territory>
-
- <!-- Saint Barthélemy, French Antilles -->
- <!-- There seems to be some overlap with phone numbers from Saint Martin and Guadeloupe. The
- national numbering plan does not specify any St Barthélemy-specific numbering prefixes, but
- it appears from searches in online white and yellow pages that a subset of the prefixes
- available in Guadeloupe are used. In these cases, if getRegionCodeForNumber is used, one of
- these region codes will be returned, although numbers will be valid for both regions. -->
- <!-- http://www.itu.int/oth/T0202000058/en -->
- <territory id="BL" countryCode="590" internationalPrefix="00"
- nationalPrefix="0">
- <!-- Formatting rules borrowed from Guadeloupe. -->
- <generalDesc>
- <nationalNumberPattern>[56]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 590(?:
- 2[7-9]|
- 5[12]|
- 87
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>590271234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 690(?:
- 10|
- 2[27]|
- 66|
- 77|
- 8[78]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>690221234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Bermuda -->
- <!-- http://www.itu.int/oth/T0202000018/en -->
- <territory id="BM" countryCode="1" leadingDigits="441"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[4589]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 441(?:
- 2(?:
- 02|
- 23|
- 61|
- [3479]\d
- )|
- [46]\d{2}|
- 5(?:
- 4\d|
- 60|
- 89
- )|
- 824
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>4412345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 441(?:
- [37]\d|
- 5[0-39]
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>4413701234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Brunei Darussalam -->
- <!-- http://www.itu.int/oth/T020200001F/en -->
- <territory id="BN" countryCode="673" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <!-- Format is from http://aiti.gov.bn/contact.html -->
- <availableFormats>
- <numberFormat pattern="([2-578]\d{2})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-578]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[2-5]\d{6}</nationalNumberPattern>
- <exampleNumber>2345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[78]\d{6}</nationalNumberPattern>
- <exampleNumber>7123456</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Bolivia -->
- <!-- http://www.itu.int/oth/T020200001A/en -->
- <!-- http://www.bolivia.com/Servicios/Plandenumeracion.pdf -->
- <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T020200001A0001MSWE.doc -->
- <territory id="BO" countryCode="591"
- internationalPrefix="00(1\d)?"
- nationalPrefix="0"
- nationalPrefixForParsing="0(1\d)?"
- carrierCodeFormattingRule="$NP$CC $FG">
- <availableFormats>
- <numberFormat pattern="([234])(\d{7})">
- <leadingDigits>[234]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([67]\d{7})">
- <leadingDigits>[67]</leadingDigits>
- <format>$1</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[23467]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2(?:
- 2\d{2}|
- 5(?:11|[258]\d|9[67])|
- 6(?:12|2\d|9[34])|
- 8(?:2[34]|39|62)
- )|
- 3(?:
- 3\d{2}|
- 4(?:6\d|8[24])|
- 8(?:25|42|5[257]|86|9[25])|
- 9(?:2\d|3[234]|4[248]|5[24]|6[2-6]|7\d)
- )|
- 4(?:
- 4\d{2}|
- 6(?:11|[24689]\d|72)
- )
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- <exampleNumber>22123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[67]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>71234567</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Brazil -->
- <!-- http://en.wikipedia.org/wiki/%2B55 -->
- <territory id="BR" countryCode="55"
- internationalPrefix="00(?:1[45]|2[135]|[34]1|43)"
- nationalPrefix="0"
- nationalPrefixForParsing="0(?:(1[245]|2[135]|[34]1)(\d{10}))?"
- nationalPrefixTransformRule="$2">
- <!--The national prefix for parsing here also contains a capturing group for the main number,
- since the carrier codes here may also be area codes, so we want to check the length of
- the number after capturing. We also need a nationalTransformRule to repopulate with the
- number without the carrier code. -->
- <availableFormats>
- <numberFormat nationalPrefixFormattingRule="($FG)"
- pattern="(\d{2})(\d{4})(\d{4})"
- carrierCodeFormattingRule="$NP $CC ($FG)">
- <leadingDigits>[1-9][1-9]</leadingDigits>
- <format>$1 $2-$3</format>
- </numberFormat>
- <numberFormat pattern="([34]00\d)(\d{4})">
- <leadingDigits>[34]00</leadingDigits>
- <leadingDigits>
- 400|
- 3003
- </leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="([3589]00)(\d{2,3})(\d{4})">
- <leadingDigits>[3589]00</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{7,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- [14689][1-9]|
- 2[12478]|
- 3[1-578]|
- 5[13-5]|
- 7[13-579]
- )[2-5]\d{7}
- </nationalNumberPattern>
- <exampleNumber>1123456789</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- [14689][1-9]|
- 2[12478]|
- 3[1-578]|
- 5[13-5]|
- 7[13-579]
- )[6-9]\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1161234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6,7}</nationalNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>[359]00\d{6,7}</nationalNumberPattern>
- <exampleNumber>300123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>
- (?:
- 400\d|
- 3003
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>40041234</exampleNumber>
- </sharedCost>
- </territory>
-
- <!-- Bahamas -->
- <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000100001MSWE.pdf -->
- <territory id="BS" countryCode="1" leadingDigits="242"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[2589]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 242(?:
- 3(?:
- 02|
- [236][1-9]|
- 4[0-24-9]|
- 5[0-68]|
- 7[3467]|
- 8[0-4]|
- 9[2-467]
- )|
- 461|
- 502|
- 6(?:
- 12|
- 7[67]|
- 8[78]|
- 9[89]
- )|
- 702
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>2423456789</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 242(?:
- 3(?:
- 5[79]|
- [79]5
- )|
- 4(?:
- [2-4][1-9]|
- 5[1-8]|
- 6[2-8]|
- 7\d|
- 81
- )|
- 5(?:
- 2[34]|
- 3[35]|
- 44|
- 5[1-9]|
- 65|
- 77
- )|
- 6[34]6|
- 727
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>2423591234</exampleNumber>
- </mobile>
- <tollFree>
- <!-- 242 300 is a Domestic Toll Free service. -->
- <nationalNumberPattern>
- 242300\d{4}|
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Bhutan -->
- <!-- http://www.itu.int/oth/T0202000019/en -->
- <territory id="BT" countryCode="975" internationalPrefix="00">
- <availableFormats>
- <!-- Format is from
- http://www.tourism.gov.bt/tour-operators/bhutan-abbot-tours-and-travels.html -->
- <numberFormat pattern="(17)(\d{2})(\d{2})(\d{2})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="([2-8])(\d{3})(\d{3})">
- <leadingDigits>[2-8]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- (?:
- 17|
- [2-8]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2[3-6]|
- [34][5-7]|
- 5[236]|
- 6[2-46]|
- 7[246]|
- 8[2-4]
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,7}</possibleNumberPattern>
- <exampleNumber>2345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>17\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>17123456</exampleNumber>
- </mobile>
- <!-- No information on other types of phone numbers for Bhutan has been found. -->
- </territory>
-
- <!-- Botswana -->
- <!-- http://www.itu.int/oth/T020200001C/en -->
- <territory id="BW" countryCode="267" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <leadingDigits>[2-6]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(7\d)(\d{3})(\d{3})">
- <leadingDigits>7</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(90)(\d{5})">
- <leadingDigits>9</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-79]\d{6,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2(?:
- 4[0-48]|
- 6[0-24]|
- 9[0578]
- )|
- 3(?:
- 1[0235-9]|
- 55|
- 6\d|
- 7[01]|
- 9[0-57]
- )|
- 4(?:
- 6[03]|
- 7[1267]|
- 9[0-5]
- )|
- 5(?:
- 3[0389]|
- 4[0489]|
- 7[1-47]|
- 88|
- 9[0-49]
- )|
- 6(?:
- 2[1-35]|
- 5[149]|
- 8[067]
- )
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>2401234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 7(?:
- [1-35]\d{6}|
- [46][0-7]\d{5}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>71123456</exampleNumber>
- </mobile>
- <!-- No reliable information about toll-free numbers can be found; many are written on the
- internet like 0800 123 456, but this is not supported by any documentation and no
- numbers can be found that actually work. -->
- <premiumRate>
- <nationalNumberPattern>90\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>9012345</exampleNumber>
- </premiumRate>
- <voip>
- <nationalNumberPattern>79[12][01]\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>79101234</exampleNumber>
- </voip>
- </territory>
-
- <!-- Belarus -->
- <!-- http://eng.beltelecom.by/info/numbering/ -->
- <!-- Information on national prefix provided by a Belarussian person. -->
- <territory id="BY" countryCode="375" internationalPrefix="8~10"
- nationalPrefixForParsing="80?" nationalPrefix="8">
- <availableFormats>
- <numberFormat nationalPrefixFormattingRule="$NP 0$FG"
- pattern="([1-4]\d)(\d{3})(\d{4})">
- <leadingDigits>[1-4]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP $FG"
- pattern="([89]\d{2})(\d{3})(\d{4})">
- <leadingDigits>[89]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [12-4]\d{8}|
- [89]\d{9}
- </nationalNumberPattern>
- <!-- Numbers are often written without the city code. -->
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 1(?:
- 5(?:
- 1[1-5]|
- 2\d|
- 6[1-4]|
- 9[1-7]
- )|
- 6(?:
- [235]\d|
- 4[1-7]
- )|
- 7\d{2}
- )|
- 2(?:
- 1(?:
- [246]\d|
- 3[0-35-9]|
- 5[1-9]
- )|
- 2(?:
- [235]\d|
- 4[0-8]
- )|
- 3(?:
- 2\d|
- 3[02-79]|
- 4[024-7]|
- 5[0-7]
- )
- )
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- <!-- Using test number for Grodno from the plan. -->
- <exampleNumber>152450911</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 2(?:
- 5[679]|
- 9[1-9]
- )|
- 33\d|
- 44\d
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <!-- Using test number for BelCel from the plan. -->
- <exampleNumber>294911911</exampleNumber>
- </mobile>
- <tollFree>
- <!-- Putting Interactive Polling Service (free) here too. -->
- <nationalNumberPattern>80[13]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8011234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>902\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9021234567</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Belize -->
- <!-- http://www.itu.int/oth/T0202000016/en -->
- <!-- The trunk prefix, formally 0, was dropped in the last reorganisation of the numbering plan.
- -->
- <territory id="BZ" countryCode="501" internationalPrefix="00" leadingZeroPossible="true">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <leadingDigits>[2-8]</leadingDigits>
- <!-- Adding hyphen following the Belize Telemedia formatting rules. -->
- <format>$1-$2</format>
- </numberFormat>
- <numberFormat pattern="(0)(800)(\d{4})(\d{3})">
- <leadingDigits>0</leadingDigits>
- <format>$1-$2-$3-$4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [2-8]\d{6}|
- 0\d{10}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{4})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[234578][02]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>2221234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- 62[6-9] were added as we have been able to successfully send SMSs to these numbers. -->
- <nationalNumberPattern>
- 6(?:
- [0-2]\d|
- [67][01]
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>6221234</exampleNumber>
- </mobile>
- <!-- We don't know how these would be dialled internationally - it is possible that they can't
- be dialled internationally at all - so we represent the leading 0 as part of the number.
- Information from www.belizetelemedia.net. -->
- <tollFree>
- <nationalNumberPattern>0800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>08001234123</exampleNumber>
- </tollFree>
- </territory>
-
- <!-- Canada -->
- <!-- http://www.cnac.ca/canadian_dial_plan/canadian_dial_plan.htm -->
- <territory id="CA" countryCode="1" internationalPrefix="011" nationalPrefix="1">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>
- [2-9]\d{9}|
- 3\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2(?:
- 04|
- 26|
- [48]9|
- 50
- )|
- 3(?:
- 06|
- 43
- )|
- 4(?:
- 03|
- 1[68]|
- 38|
- 5[06]
- )|
- 5(?:
- 0[06]|
- 1[49]|
- 79|
- 8[17]
- )|
- 6(?:
- 0[04]|
- 13|
- 47
- )|
- 7(?:
- 0[059]|
- [18]0|
- 78
- )|
- 8(?:
- [06]7|
- 19|
- )|
- 90[25]
- )[2-9]\d{6}|
- 310\d{4}
- </nationalNumberPattern>
- <exampleNumber>2042345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 2(?:
- 04|
- 26|
- [48]9|
- 50
- )|
- 3(?:
- 06|
- 43
- )|
- 4(?:
- 03|
- 1[68]|
- 38|
- 5[06]
- )|
- 5(?:
- 0[06]|
- 1[49]|
- 79|
- 8[17]
- )|
- 6(?:
- 0[04]|
- 13|
- 47
- )|
- 7(?:
- 0[059]|
- [18]0|
- 78
- )|
- 8(?:
- [06]7|
- 19|
- )|
- 90[25]
- )[2-9]\d{6}
- </nationalNumberPattern>
- <exampleNumber>2042345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}|
- 310\d{4}
- </nationalNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Congo, Dem. Rep. of the (formerly Zaire) -->
- <!-- http://www.itu.int/oth/T0202000037/en -->
- <territory id="CD" countryCode="243" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([89]\d{2})(\d{3})(\d{3})">
- <leadingDigits>[89]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([1-6]\d)(\d{5})">
- <leadingDigits>[1-6]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [89]\d{8}|
- [1-6]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[1-6]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>1234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 8[0-2489]|
- 9[7-9]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>991234567</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Central African Republic -->
- <!-- http://www.itu.int/oth/T0202000028/en -->
- <territory id="CF" countryCode="236" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[278]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>2[12]\d{6}</nationalNumberPattern>
- <exampleNumber>21612345</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[0257]\d{6}</nationalNumberPattern>
- <exampleNumber>70012345</exampleNumber>
- </mobile>
- <premiumRate>
- <nationalNumberPattern>8776\d{4}</nationalNumberPattern>
- <exampleNumber>87761234</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Congo (Rep. of the) (Brazzaville) -->
- <!-- http://www.itu.int/oth/T020200002E/en -->
- <territory id="CG" countryCode="242" internationalPrefix="00" leadingZeroPossible="true">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{3})(\d{4})">
- <leadingDigits>[02]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{4})(\d{4})">
- <leadingDigits>8</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[028]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>222[1-589]\d{5}</nationalNumberPattern>
- <exampleNumber>222123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>0[14-6]\d{7}</nationalNumberPattern>
- <exampleNumber>061234567</exampleNumber>
- </mobile>
- <!-- Referred to as a "Green number" in the telephone plan. -->
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- </territory>
-
- <!-- Switzerland -->
- <!-- http://www.bakom.admin.ch/themen/telekom/00479/00604/index.html?lang=en
- under Technical prescriptions: Numbering plan for international carriers -->
- <territory id="CH" countryCode="41" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([2-9]\d)(\d{3})(\d{2})(\d{2})">
- <leadingDigits>
- [2-7]|
- [89]1
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="([89]\d{2})(\d{3})(\d{3})">
- <leadingDigits>
- 8[047]|
- 90
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-9]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2[12467]|
- 3[1-4]|
- 4[134]|
- 5[12568]|
- 6[12]|
- [7-9]1
- )\d{7}
- </nationalNumberPattern>
- <exampleNumber>212345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[46-9]\d{7}</nationalNumberPattern>
- <exampleNumber>741234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90[016]\d{6}</nationalNumberPattern>
- <exampleNumber>900123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>84[0248]\d{6}</nationalNumberPattern>
- <exampleNumber>840123456</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>878\d{6}</nationalNumberPattern>
- <exampleNumber>878123456</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Côte d'Ivoire -->
- <!-- http://www.itu.int/oth/T0202000031/en -->
- <territory id="CI" countryCode="225" internationalPrefix="00" leadingZeroPossible="true">
- <availableFormats>
- <!-- Using format from online yellow pages over format implied in national numbering plan.
- -->
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[02-5]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2(?:
- 0[023]|
- 1[02357]|
- [23][045]|
- 4[03-5]
- )|
- 3(?:
- 0[06]|
- 1[069]|
- [2-4][07]|
- 5[09]|
- 6[08]
- )
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>21234567</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Added the prefixes 40 and 57 because SMS messages have been successfully delivered.
- Supported by numbers found on the internet. -->
- <nationalNumberPattern>
- (?:
- 0[1-9]|
- 4[04-9]|
- 5[07]|
- 6[067]
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>01234567</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Cook Islands -->
- <!-- http://www.itu.int/oth/T020200002F/en -->
- <territory id="CK" countryCode="682" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{3})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-57]\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{5}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2\d|
- 3[13-7]|
- 4[1-5]
- )\d{3}
- </nationalNumberPattern>
- <exampleNumber>21234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 5[0-68]|
- 7\d
- )\d{3}
- </nationalNumberPattern>
- <exampleNumber>71234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Chile -->
- <!-- http://www.itu.int/oth/T020200002A/en -->
- <!-- http://en.wikipedia.org/wiki/%2B56 -->
- <!-- Carriers listed here: http://www.turismochile.com/datos/carrier.php -->
- <territory id="CL" countryCode="56"
- internationalPrefix="(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0"
- nationalPrefix="0"
- nationalPrefixForParsing="0|(1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))"
- nationalPrefixFormattingRule="$NP$FG">
- <!-- When dialling mobile numbers from landlines, or vice versa, you need a prefix of 0, which
- we strip here. National destinations may be dialled with a carrier if they are not local so
- we extract these carrier codes as well. -->
- <availableFormats>
- <numberFormat pattern="(2)(\d{3})(\d{4})"
- nationalPrefixFormattingRule="($FG)"
- carrierCodeFormattingRule="$CC ($FG)">
- <leadingDigits>2</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{2,3})(\d{4})"
- nationalPrefixFormattingRule="($FG)"
- carrierCodeFormattingRule="$CC ($FG)">
- <leadingDigits>
- [357]|
- 4[1-35]|
- 6[13-57]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(9)([6-9]\d{3})(\d{4})">
- <leadingDigits>9</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(44)(\d{3})(\d{4})">
- <leadingDigits>44</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="([68]00)(\d{3})(\d{3,4})">
- <leadingDigits>
- 60|
- 8
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="(600)(\d{3})(\d{2})(\d{3})">
- <leadingDigits>60</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="(1230)(\d{3})(\d{4})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- (?:
- [2-9]|
- 600|
- 123
- )\d{7,8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2|
- 32|
- 41
- )\d{7}|
- (?:
- 3[3-5]|
- 4[235]|
- 5[1-3578]|
- 6[13-57]|
- 7[1-35]
- )\d{6,7}
- </nationalNumberPattern>
- <!-- Area codes do not need to be dialled when dialling within the same area, so the
- smallest possible number is length 6. -->
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- <exampleNumber>21234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>9[6-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- <exampleNumber>961234567</exampleNumber>
- </mobile>
- <!-- Toll free and premium rate patterns have been collected by looking at numbers on the
- internet, rather than from a definitive source. -->
- <tollFree>
- <!-- 1230 numbers are used by Visa/Mastercard helplines in Chile -->
- <nationalNumberPattern>
- 800\d{6}|
- 1230\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9,11}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>600\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10,11}</possibleNumberPattern>
- <exampleNumber>6001234567</exampleNumber>
- </premiumRate>
- <voip>
- <nationalNumberPattern>44\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>441234567</exampleNumber>
- </voip>
- </territory>
-
- <!-- Cameroon -->
- <!-- http://www.itu.int/oth/T0202000024/en -->
- <territory id="CM" countryCode="237" internationalPrefix="00">
- <availableFormats>
- <!-- Formatting on the internet is consistently with the first 2 extracted, and usually in
- the same format as France (all 2 digit groups) so we use this instead of the guidance
- of the national numbering plan (which has 1 3 2 2 and 4 4 as its two formatting
- examples.) -->
- <numberFormat pattern="([237-9]\d)(\d{2})(\d{2})(\d{2})">
- <leadingDigits>
- [2379]|
- 88
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(800)(\d{2})(\d{3})">
- <leadingDigits>80</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[237-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Technically, the numbers are required only to start with a 2 or a 3, but all numbers at
- the moment start with 22 or 33 since they have been migrated from seven digit numbers
- beginning with these numbers. This rule should be relaxed if/when we start getting
- numbers beginning in other ways. -->
- <nationalNumberPattern>
- (?:
- 22|
- 33
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>22123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[79]\d{7}</nationalNumberPattern>
- <exampleNumber>71234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{5}</nationalNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- These numbers are listed as value-added in the guide, and in practice seem to begin
- with 88 (usually 880). No information can be found as to whether these are premium rate
- or shared cost. -->
- <nationalNumberPattern>88\d{6}</nationalNumberPattern>
- <exampleNumber>88012345</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- China -->
- <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T020200002B0001XLSE.xls -->
- <territory id="CN" countryCode="86" internationalPrefix="00"
- nationalPrefix="0">
- <availableFormats>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="(80\d{2})(\d{4})">
- <leadingDigits>80[2678]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([48]00)(\d{3})(\d{4})">
- <leadingDigits>[48]00</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- Local numbers -->
- <!-- Chinese fixed-line numbers can be dialed from a cell phone without area code and they
- can be 7 to 8 digits. This rule is here to make formatting work with such numbers, as
- people frequently store them in their cellphones. It has to stay before formatting
- rules for fixed-line numbers to make AsYouTypeFormatter work with these numbers. The
- leadingDigits prefix makes sure it doesn't clash with mobile numbers. -->
- <numberFormat pattern="(\d{3,4})(\d{4})">
- <leadingDigits>[2-9]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="(21)(\d{4})(\d{4,6})">
- <leadingDigits>21</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="([12]\d)(\d{4})(\d{4})">
- <leadingDigits>
- 10[1-9]|
- 2[02-9]
- </leadingDigits>
- <!-- Note the leadingDigitsPattern for 4 digits is the same as 3 digits, -->
- <leadingDigits>
- 10[1-9]|
- 2[02-9]
- </leadingDigits>
- <leadingDigits>
- 10(?:
- [1-79]|
- 8(?:
- [1-9]|
- 0[1-9]
- )
- )|
- 2[02-9]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="(\d{3})(\d{4})(\d{4})">
- <leadingDigits>
- 3(?:
- 11|
- 7[159]
- )|
- 4[135]1|
- 5(?:
- 1|
- 2[37]|
- 3[12]|
- 7[13-79]|
- 9[15]
- )|
- 7(?:
- 31|
- 5[457]|
- 6[09]
- )|
- 898
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 3(?:
- 1[02-9]|
- 35|
- 49|
- 5|
- 7[02-68]|
- 9[1-68]
- )|
- 4(?:
- 1[02-9]|
- 2[179]|
- [35][2-9]|
- 6[4789]|
- 7[0-46-9]|
- 8[23]
- )|
- 5(?:
- 3[03-9]|
- 4[36]|
- 5|
- 6[1-6]|
- 7[028]|
- 80|
- 9[2-46-9]
- )|
- 6(?:
- 3[1-5]|
- 6[0238]|
- 9[12]
- )|
- 7(?:
- 01|
- [1579]|
- 2[248]|
- 3[04-9]|
- 4[3-6]|
- 6[2368]
- )|
- 8(?:
- 1[236-8]|
- 2[5-7]|
- [37]|
- 5[1-9]|
- 8[3678]|
- 9[1-7]
- )|
- 9(?:
- 0[1-3689]|
- 1[1-79]|
- [379]|
- 4[13]|
- 5[1-5]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(1[3-58]\d)(\d{4})(\d{4})">
- <leadingDigits>1[3-58]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(10800)(\d{3})(\d{4})">
- <leadingDigits>108</leadingDigits>
- <leadingDigits>1080</leadingDigits>
- <leadingDigits>10800</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <intlNumberFormat pattern="(21)(\d{4})(\d{4,6})">
- <leadingDigits>21</leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <intlNumberFormat pattern="([12]\d)(\d{4})(\d{4})">
- <leadingDigits>
- 10[1-9]|
- 2[02-9]
- </leadingDigits>
- <!-- Note the leadingDigitsPattern for 4 digits is the same as 3 digits, -->
- <leadingDigits>
- 10[1-9]|
- 2[02-9]
- </leadingDigits>
- <leadingDigits>
- 10(?:
- [1-79]|
- 8(?:
- [1-9]|
- 0[1-9]
- )
- )|
- 2[02-9]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <intlNumberFormat pattern="(80\d{2})(\d{4})">
- <leadingDigits>80[2678]</leadingDigits>
- <format>$1 $2</format>
- </intlNumberFormat>
- <intlNumberFormat
- pattern="(\d{3})(\d{4})(\d{4})">
- <leadingDigits>
- 3(?:
- 11|
- 7[159]
- )|
- 4[135]1|
- 5(?:
- 1|
- 2[37]|
- 3[12]|
- 7[13-79]|
- 9[15]
- )|
- 7(?:
- 31|
- 5[457]|
- 6[09]
- )|
- 898
- </leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <intlNumberFormat
- pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 3(?:
- 1[02-9]|
- 35|
- 49|
- 5|
- 7[02-68]|
- 9[1-68]
- )|
- 4(?:
- 1[02-9]|
- 2[179]|
- [35][2-9]|
- 6[4789]|
- 7[0-46-9]|
- 8[23]
- )|
- 5(?:
- 3[03-9]|
- 4[36]|
- 5|
- 6[1-6]|
- 7[028]|
- 80|
- 9[2-46-9]
- )|
- 6(?:
- 3[1-5]|
- 6[0238]|
- 9[12]
- )|
- 7(?:
- 01|
- [1579]|
- 2[248]|
- 3[04-9]|
- 4[3-6]|
- 6[2368]
- )|
- 8(?:
- 1[236-8]|
- 2[5-7]|
- [37]|
- 5[1-9]|
- 8[3678]|
- 9[1-7]
- )|
- 9(?:
- 0[1-3689]|
- 1[1-79]|
- [379]|
- 4[13]|
- 5[1-5]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <intlNumberFormat pattern="(1[3-58]\d)(\d{4})(\d{4})">
- <leadingDigits>1[3-58]</leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <intlNumberFormat pattern="([48]00)(\d{3})(\d{4})">
- <leadingDigits>[48]00</leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <intlNumberFormat pattern="(10800)(\d{3})(\d{4})">
- <leadingDigits>108</leadingDigits>
- <leadingDigits>1080</leadingDigits>
- <leadingDigits>10800</leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [1-79]\d{7,11}|
- 8[0-357-9]\d{6,9}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{4,12}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 21\d{8,10}|
- (?:
- 10|
- 2[02-57-9]|
- 3(?:
- 11|
- 7[159]
- )|
- 4[135]1|
- 5(?:
- 1\d|
- 2[37]|
- 3[12]|
- 7[13-79]|
- 9[15]
- )|
- 7(?:
- 31|
- 5[457]|
- 6[09]
- )|
- 898
- )\d{8}|
- (?:
- 3(?:
- 1[02-9]|
- 35|
- 49|
- 5\d|
- 7[02-68]|
- 9[1-68]
- )|
- 4(?:
- 1[02-9]|
- 2[179]|
- [35][2-9]|
- 6[4789]|
- 7[0-46-9]|
- 8[23]
- )|
- 5(?:
- 3[03-9]|
- 4[36]|
- 5\d|
- 6[1-6]|
- 7[028]|
- 80|
- 9[2-46-9]
- )|
- 6(?:
- 3[1-5]|
- 6[0238]|
- 9[12]
- )|
- 7(?:
- 01|
- [1579]\d|
- 2[248]|
- 3[04-9]|
- 4[3-6]|
- 6[2368]
- )|
- 8(?:
- 1[236-8]|
- 2[5-7]|
- [37]\d|
- 5[1-9]|
- 8[3678]|
- 9[1-7]
- )|
- 9(?:
- 0[1-3689]|
- 1[1-79]|
- [379]\d|
- 4[13]|
- 5[1-5]
- )
- )\d{7}|
- 80(?:
- 29|
- 6[03578]|
- 7[018]|
- 81
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>1012345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 1(?:
- 3[0-9]|
- 47|
- 5[0135689]|
- 8[05-9]
- )\d{8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>13123456789</exampleNumber>
- </mobile>
- <!-- Toll free, premium rate, and VoIP numbers are not clearly defined in the official Chinese
- number plan, and do not seem to have been standardized. The information below is
- collected from searching the web. -->
- <!-- http://en.wikipedia.org/wiki/Toll-free_telephone_number -->
- <tollFree>
- <nationalNumberPattern>
- (?:
- 10
- )?800\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10,12}</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>16[08]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>16812345</exampleNumber>
- </premiumRate>
- <voip>
- <nationalNumberPattern>400\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>4001234567</exampleNumber>
- </voip>
- </territory>
-
- <!-- Colombia -->
- <!-- http://www.itu.int/oth/T020200002C/en
- http://en.wikipedia.org/wiki/Telephone_numbers_in_Colombia -->
- <territory id="CO" countryCode="57" internationalPrefix="00[579]|#555|#999"
- nationalPrefix="0" nationalPrefixForParsing="0([3579]|4(?:44|56))">
- <availableFormats>
- <numberFormat pattern="(\d)(\d{7})" carrierCodeFormattingRule="$NP$CC $FG"
- nationalPrefixFormattingRule="($FG)">
- <leadingDigits>
- 1(?:
- 8[2-9]|
- 9[0-3]|
- [2-7]
- )|
- [24-8]
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 8[2-9]|
- 9(?:
- 09|
- [1-3]
- )|
- [2-7]
- )|
- [24-8]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d)(\d{7})">
- <leadingDigits>
- 1(?:
- 8[2-9]|
- 9[0-3]|
- [2-7]
- )|
- [24-8]
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 8[2-9]|
- 9(?:
- 09|
- [1-3]
- )|
- [2-7]
- )|
- [24-8]
- </leadingDigits>
- <format>$1 $2</format>
- </intlNumberFormat>
- <numberFormat pattern="(\d{3})(\d{7})" carrierCodeFormattingRule="$NP$CC $FG">
- <leadingDigits>3</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d{3})(\d{7})">
- <leadingDigits>3</leadingDigits>
- <format>$1 $2</format>
- </intlNumberFormat>
- <numberFormat pattern="(1)(\d{3})(\d{7})" nationalPrefixFormattingRule="$NP$FG">
- <leadingDigits>
- 1(?:
- 80|
- 9[04]
- )
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 800|
- 9(?:
- 0[01]|
- 4[78]
- )
- )
- </leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <intlNumberFormat pattern="(1)(\d{3})(\d{7})">
- <leadingDigits>
- 1(?:
- 80|
- 9[04]
- )
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 800|
- 9(?:
- 0[01]|
- 4[78]
- )
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- (?:
- [13]\d{0,3}|
- [24-8]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[124-8][2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>12345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 3(?:
- 0[0-24]|
- 1[0-8]|
- 2[01]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>3211234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>1800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>18001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- 19(?:
- 0[01]|
- 4[78]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>19001234567</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Costa Rica -->
- <!-- http://www.itu.int/oth/T0202000030/en -->
- <territory id="CR" countryCode="506" internationalPrefix="00"
- nationalPrefixForParsing="(1900)" carrierCodeFormattingRule="$CC $FG">
- <availableFormats>
- <numberFormat pattern="(\d{4})(\d{4})">
- <leadingDigits>
- [24]|
- 8[3-9]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>[89]0</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2489]\d{7,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>2[24-7]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>22123456</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding 87[0-3] prefixes after numbers were found online where these prefixes have been
- assigned. -->
- <nationalNumberPattern>
- 8(?:
- [389]\d|
- 7[0-3]
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>83123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- Includes "mass calls" numbers with prefix 905. -->
- <nationalNumberPattern>90[059]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9001234567</exampleNumber>
- </premiumRate>
- <voip>
- <nationalNumberPattern>4000\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>40001234</exampleNumber>
- </voip>
- <shortCode>
- <!-- This pattern excludes 4-digit SMS content numbers for now. -->
- <nationalNumberPattern>
- 1(?:
- 02[2-469]|
- 1(?:
- 1[0235-9]|
- 2|
- 37|
- 46|
- 75|
- 8[79]|
- 9[0-379]
- )|
- 212)
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
- <exampleNumber>1022</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Cuba -->
- <!-- www.itu.int/oth/T0202000033/en -->
- <territory id="CU" countryCode="53" internationalPrefix="119"
- nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)">
- <availableFormats>
- <numberFormat pattern="(\d)(\d{6,7})">
- <leadingDigits>7</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{4,6})">
- <leadingDigits>[2-4]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{7})" nationalPrefixFormattingRule="$NP$FG">
- <leadingDigits>5</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-57]\d{5,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{4,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 2[1-4]\d{5,6}|
- 3(?:
- 1\d{6}|
- [23]\d{4,6})|
- 4(?:
- [125]\d{5,6}|
- [36]\d{6}|
- [78]\d{4,6})|
- 7\d{6,7}
- </nationalNumberPattern>
- <exampleNumber>71234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>5\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>51234567</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Cape Verde -->
- <!-- http://www.itu.int/oth/T0202000026/en -->
- <territory id="CV" countryCode="238" internationalPrefix="0">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{2})(\d{2})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[259]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 2(?:
- 2[1-7]|
- 3[0-8]|
- 4[12]|
- 5[1256]|
- 6\d|
- 7[1-3]|
- 8[1-5]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>2211234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- It seems, contrary to their numbering plan, the entire 9X range is used for mobile
- phones. SMS messages has been successfully sent to numbers starting with 95 and 97 for
- example, and there are plenty of numbers on the internet that start with these
- prefixes. -->
- <nationalNumberPattern>
- (?:
- 9\d|
- 59
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>9911234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Cyprus -->
- <!-- http://www.itu.int/oth/T0202000034/en -->
- <territory id="CY" countryCode="357" internationalPrefix="00">
- <availableFormats>
- <!-- Format from http://www.cyprusyellowpages.com/-->
- <numberFormat pattern="([27-9]\d)(\d{6})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[27-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>2[2-6]\d{6}</nationalNumberPattern>
- <exampleNumber>22345678</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Universal Access Service numbers (7777 xxxx) are included here, as they are classified
- as Mobile in the Cyprus national numbering plan. -->
- <nationalNumberPattern>
- 7777\d{4}|
- 9(?:
- [69]\d|
- 7[67]
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>96123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>8000\d{4}</nationalNumberPattern>
- <exampleNumber>80001234</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>9009\d{4}</nationalNumberPattern>
- <exampleNumber>90091234</exampleNumber>
- </premiumRate>
- <personalNumber>
- <nationalNumberPattern>700\d{5}</nationalNumberPattern>
- <exampleNumber>70012345</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Czech Rep. -->
- <!-- http://www.itu.int/oth/T0202000035/en -->
- <!-- http://en.wikipedia.org/wiki/%2B420 -->
- <territory id="CZ" countryCode="420" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="([2-9]\d{2})(\d{3})(\d{3})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-9]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 2\d{8}|
- (?:
- 3[1257-9]|
- 4[16-9]|
- 5[13-9]
- )\d{7}
- </nationalNumberPattern>
- <exampleNumber>212345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 60[1-8]\d{6}|
- 7[2379]\d{7}
- </nationalNumberPattern>
- <exampleNumber>601123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90[0689]\d{6}</nationalNumberPattern>
- <exampleNumber>900123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>8[134]\d{7}</nationalNumberPattern>
- <exampleNumber>811234567</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>70[01]\d{6}</nationalNumberPattern>
- <exampleNumber>700123456</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Germany -->
- <!-- http://www.itu.int/oth/T0202000051/en -->
- <territory id="DE" countryCode="49" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{4,11})">
- <leadingDigits>
- 3[02]|
- 40|
- [68]9
- </leadingDigits>
- <format>$1/$2</format>
- </numberFormat>
- <!-- The order of the rules on 3-5 digits area code matter as fallback is used here. -->
- <!-- 3 digit area codes. -->
- <numberFormat pattern="(\d{3})(\d{3,10})">
- <leadingDigits>
- 2(?:
- \d1|
- 0[2389]|
- 1[24]|
- 28|
- 34
- )|
- 3(?:
- [3-9][15]|
- 40
- )|
- [4-8][1-9]1|
- 9(?:
- 06|
- [1-9]1
- )
- </leadingDigits>
- <format>$1/$2</format>
- </numberFormat>
- <!-- 4 digit area codes. -->
- <numberFormat pattern="(\d{4})(\d{2,8})">
- <leadingDigits>
- [24-6]|
- [7-9](?:
- \d[1-9]|
- [1-9]\d
- )|
- 3(?:
- [3569][02-46-9]|
- 4[2-4679]|
- 7[2-467]|
- 8[2-46-8]
- )
- </leadingDigits>
- <leadingDigits>
- [24-6]|
- [7-9](?:
- \d[1-9]|
- [1-9]\d
- )|
- 3(?:
- 3(?:
- 0[1-467]|
- 2[127-9]|
- 3[124578]|
- [46][1246]|
- 7[1257-9]|
- 8[1256]|
- 9[145]
- )|
- 4(?:
- 2[135]|
- 3[1357]|
- 4[13578]|
- 6[1246]|
- 7[1356]|
- 9[1346]
- )|
- 5(?:
- 0[14]|
- 2[1-3589]|
- 3[1357]|
- 4[1246]|
- 6[1-4]|
- 7[1346]|
- 8[13568]|
- 9[1246]
- )|
- 6(?:
- 0[356]|
- 2[1-489]|
- 3[124-6]|
- 4[1347]|
- 6[13]|
- 7[12579]|
- 8[1-356]|
- 9[135]
- )|
- 7(?:
- 2[1-7]|
- 3[1357]|
- 4[145]|
- 6[1-5]|
- 7[1-4]
- )|
- 8(?:
- 21|
- 3[1468]|
- 4[1347]|
- 6[0135-9]|
- 7[1467]|
- 8[136]
- )|
- 9(?:
- 0[12479]|
- 2[1358]|
- 3[1357]|
- 4[134679]|
- 6[1-9]|
- 7[136]|
- 8[147]|
- 9[1468]
- )
- )
- </leadingDigits>
- <format>$1/$2</format>
- </numberFormat>
- <!-- 5 digit area codes. -->
- <numberFormat pattern="(\d{5})(\d{1,6})">
- <leadingDigits>3</leadingDigits>
- <format>$1/$2</format>
- </numberFormat>
- <!-- http://www.t-mobile.de/servicehotlines/0,13401,17660-_,00.html -->
- <numberFormat pattern="([18]\d{2})(\d{7,9})">
- <leadingDigits>
- 1[5-7]|
- 800
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d)(\d{4,10})">
- <leadingDigits>
- (?:
- 18|
- 90
- )0
- </leadingDigits>
- <leadingDigits>
- 180|
- 900[1359]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(700)(\d{4})(\d{4})">
- <leadingDigits>700</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <!-- When deciding whether to assume a leading 49 is a country code or not, the number is
- examined to see if it is valid with the 49 as part of the number. Due to the variable
- length of German numbers, this test is hard to do. The national pattern is hence
- stricter for numbers starting with 49, to try and remove the country code if the number
- begins with 49 whenever possible. -->
- <nationalNumberPattern>
- [1-35-9]\d{3,13}|
- 4(?:
- [0-8]\d{4,12}|
- 9(?:
- 4[1-8]|
- [0-35-7]\d
- )\d{2,7}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{2,14}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- The numbering plan defines rather optimistic longest-number limits - online numbers
- don't seem to respect this. The max-length is hence extended. -->
- <nationalNumberPattern>
- [246]\d{5,13}|
- 3(?:
- [03-9]\d{4,11}|
- 2\d{9}
- )|
- 5(?:
- 0[2-8]|
- [38][0-8]|
- [124-6]\d|
- [79][0-7]
- )\d{3,10}|
- 7(?:
- 0[2-8]|
- [1-9]\d
- )\d{3,10}|
- 8(?:
- 0[2-9]|
- [1-9]\d
- )\d{3,10}|
- 9(?:
- 0[6-9]|
- [1-9]\d
- )\d{3,10}
- </nationalNumberPattern>
- <exampleNumber>30123456</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Note: 8 digit numbers seem to be available for prefix 176 now,
- although no official documentation can be found, according to user
- bug-reports. -->
- <nationalNumberPattern>
- 1(?:
- 5\d{9}|
- 7(?:
- [0-57-9]|
- 6\d
- )\d{7}|
- 6(?:
- [02]\d{7,8}|
- 3\d{7}
- )
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10,11}</possibleNumberPattern>
- <exampleNumber>15123456789</exampleNumber>
- </mobile>
- <pager>
- <nationalNumberPattern>
- 16(?:
- 4\d{1,10}|
- [89]\d{1,11}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{4,14}</possibleNumberPattern>
- <exampleNumber>16412345</exampleNumber>
- </pager>
- <tollFree>
- <nationalNumberPattern>800\d{7,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{10,12}</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- 900(?:
- [135]\d{6}|
- 9\d{7}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10,11}</possibleNumberPattern>
- <exampleNumber>9001234567</exampleNumber>
- </premiumRate>
- <sharedCost>
- <!-- See bug 1683119 for a discussion about maximum number lengths. -->
- <nationalNumberPattern>180\d{5,11}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,14}</possibleNumberPattern>
- <exampleNumber>18012345</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>700\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>70012345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Djibouti -->
- <!-- http://www.itu.int/oth/T020200003A/en -->
- <territory id="DJ" countryCode="253" internationalPrefix="00">
- <availableFormats>
- <!-- The number format here is suggested in the plan and used online,
- although the phone numbers of the national numbering authority itself on
- the plan do not follow this. -->
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-8]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Includes "Numéro long CDMA fixe" numbers starting with the digit 5. -->
- <nationalNumberPattern>
- (?:
- 1[05]|
- [2-5]\d
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>251234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[6-8]\d{5}</nationalNumberPattern>
- <exampleNumber>601234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Denmark -->
- <!-- http://en.itst.dk/telecom-internet-regulation/numbering-issues/numbering-lists -->
- <territory id="DK" countryCode="45" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="([1-9]\d)(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 3[2-9]|
- 4[3-9]|
- 5[4-9]|
- 6[2-9]|
- 7[02-9]|
- 8[26-9]|
- 9[6-9]
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>32123456</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- There are some overlaps for some number prefixes - the plan says that they are 'mainly'
- used for a certain type of number. -->
- <nationalNumberPattern>
- (?:
- 2[0-9]|
- 3[0-2]|
- 4[0-2]|
- 5[0-3]|
- 6[01]|
- 7[12]|
- 81|
- 99
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>20123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{6}</nationalNumberPattern>
- <exampleNumber>80123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90\d{6}</nationalNumberPattern>
- <exampleNumber>90123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Dominica -->
- <!-- http://www.itu.int/oth/T020200003B/en -->
- <territory id="DM" countryCode="1" leadingDigits="767"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[57-9]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 767(?:
- 2(?:
- 55|
- 66
- )|
- 4(?:
- 2[01]|
- 4[0-25-9]
- )|
- 50[0-4]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>7674201234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 767(?:
- 2(?:
- [2346]5|
- 7[5-7]
- )|
- 31[5-7]|
- 61[4-6]
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7672251234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Dominican Rep. -->
- <!-- http://www.itu.int/oth/T020200003C/en -->
- <territory id="DO" countryCode="1" leadingDigits="8[024]9"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[589]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- We could be more detailed here, as the metadata contains information about some of the
- mobile/fixed-line prefixes, but the data is incomplete, so we restrict ourselves to a
- more generic rule for now. -->
- <nationalNumberPattern>8[024]9[2-9]\d{6}</nationalNumberPattern>
- <exampleNumber>8092345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>8[024]9[2-9]\d{6}</nationalNumberPattern>
- <exampleNumber>8092345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Algeria -->
- <!-- http://www.itu.int/oth/T0202000003/en -->
- <!-- www.arpt.dz -->
- <territory id="DZ" countryCode="213" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- Formatting from www.pagesjaunes-dz.com. -->
- <numberFormat pattern="([1-4]\d)(\d{2})(\d{2})(\d{2})">
- <leadingDigits>[1-4]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="([5-8]\d{2})(\d{2})(\d{2})(\d{2})">
- <leadingDigits>[5-8]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(9\d)(\d{3})(\d{2})(\d{2})">
- <leadingDigits>9</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- (?:
- [1-4]|
- [5-9]\d
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- We include the VSAT lines here. -->
- <nationalNumberPattern>
- (?:
- 1\d|
- 2[014-79]|
- 3[0-8]|
- 4[0135689]
- )\d{6}|
- 9619\d{5}
- </nationalNumberPattern>
- <exampleNumber>12345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 5[56]|
- 6[69]|
- 7[79]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>551234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>80[3-689]1\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>808123456</exampleNumber>
- </premiumRate>
- <!-- The Algerian plan doesn't specify where the costs start to be considered "premium", so we
- draw an arbitrary line here and say that from 50 Da up they will be considered premium.
- -->
- <sharedCost>
- <nationalNumberPattern>80[12]1\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>801123456</exampleNumber>
- </sharedCost>
- <voip>
- <nationalNumberPattern>98[23]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>983123456</exampleNumber>
- </voip>
- </territory>
-
- <!-- Ecuador -->
- <!-- http://en.wikipedia.org/wiki/+593 -->
- <!-- http://www.conatel.gov.ec -->
- <!-- http://www.itu.int/oth/T020200003D/en -->
- <!-- A new plan has been prepared, but no implementation date has yet been stated. -->
- <territory id="EC" countryCode="593" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)">
- <availableFormats>
- <numberFormat pattern="(\d)(\d{3})(\d{4})">
- <leadingDigits>[2-7]</leadingDigits>
- <format>$1 $2-$3</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d)(\d{3})(\d{4})">
- <leadingDigits>[2-7]</leadingDigits>
- <format>$1-$2-$3</format>
- </intlNumberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{3})"
- nationalPrefixFormattingRule="$NP$FG">
- <leadingDigits>[89]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d{2})(\d{3})(\d{3})">
- <leadingDigits>[89]</leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <numberFormat pattern="(1800)(\d{3})(\d{3,4})"
- nationalPrefixFormattingRule="$FG">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <intlNumberFormat pattern="(1800)(\d{3})(\d{3,4})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-9]\d{7}|1\d{9,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[2-7][2-7]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- <exampleNumber>22123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[89]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>99123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>1800\d{6,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10,11}</possibleNumberPattern>
- <exampleNumber>18001234567</exampleNumber>
- </tollFree>
- </territory>
-
- <!-- Estonia -->
- <!-- http://www.itu.int/oth/T0202000043/en -->
- <!-- http://www.tja.ee/public/Legislation_side/Numbering_/Estonian_NP_eng.htm -->
- <territory id="EE" countryCode="372" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="([34-79]\d{2})(\d{4})">
- <leadingDigits>
- [369]|
- 4[3-8]|
- 5(?:
- [0-2]|
- 5[0-478]|
- 6[45]
- )|
- 7[1-9]
- </leadingDigits>
- <leadingDigits>
- [369]|
- 4[3-8]|
- 5(?:
- [02]|
- 1(?:
- [0-8]|
- 95
- )|
- 5[0-478]|
- 6(?:
- 4[0-4]|
- 5[1-589]
- )
- )|
- 7[1-9]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(70)(\d{2})(\d{4})">
- <leadingDigits>70</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(8000)(\d{3})(\d{3})">
- <leadingDigits>800</leadingDigits>
- <leadingDigits>8000</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([458]\d{3})(\d{3,4})">
- <leadingDigits>
- 40|
- 5|
- 8(?:
- 00|
- [1-5]
- )
- </leadingDigits>
- <leadingDigits>
- 40|
- 5|
- 8(?:
- 00[1-9]|
- [1-5]
- )
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [3-9]\d{6,7}|
- 800\d{6,7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- </generalDesc>
- <noInternationalDialling>
- <nationalNumberPattern>800[2-9]\d{3}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>8002123</exampleNumber>
- </noInternationalDialling>
- <fixedLine>
- <!-- Supporting eFax numbers here as well. -->
- <nationalNumberPattern>
- (?:
- 3[23589]|
- 4(?:
- 0\d|
- [3-8]
- )|
- 6\d|
- 7[1-9]|
- 88
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- <exampleNumber>3212345</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- 7 digit mobile numbers currently in use with special prefixes are preserved - new
- numbers are 8 digits. -->
- <nationalNumberPattern>
- (?:
- 5\d|
- 8[1-5]
- )\d{6}|
- 5(?:
- [02]\d{2}|
- 1(?:
- [0-8]\d|
- 95
- )|
- 5[0-478]\d|
- 64[0-4]|
- 65[1-589]
- )\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- <exampleNumber>51234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 800(?:
- 0\d{3}|
- 1\d|
- [2-9]
- )\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>9001234</exampleNumber>
- </premiumRate>
- <personalNumber>
- <nationalNumberPattern>70[0-2]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>70012345</exampleNumber>
- </personalNumber>
- <shortCode>
- <nationalNumberPattern>1[1-9]\d</nationalNumberPattern>
- <possibleNumberPattern>\d{3}</possibleNumberPattern>
- <exampleNumber>112</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Egypt -->
- <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T020200003E0001MSWE.doc -->
- <territory id="EG" countryCode="20" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- Note that no explicit formatting rule is here for 5-digit numbers starting with a 16
- or 19. These are formatted without national prefix, as a block, so do not need to be
- listed here. -->
- <numberFormat pattern="(\d)(\d{7,8})">
- <leadingDigits>[23]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{7})">
- <leadingDigits>
- [14-6]|
- [89][2-9]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([89]00)(\d{3})(\d{4})">
- <leadingDigits>[89]00</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- 1\d{4,9}|
- [2-689]\d{7,9}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Short numbers used for businesses (starting with 16 or 19) are covered here. -->
- <nationalNumberPattern>
- (?:
- 1[35][23]|
- 2[23]\d|
- 3\d|
- 4(?:
- 0[2-4]|
- [578][23]|
- 64
- )|
- 5(?:
- 0[234]|
- [57][23]
- )|
- 6[24-689]3|
- 8(?:
- [28][2-4]|
- 42|
- 6[23]
- )|
- 9(?:
- [25]2|
- 3[24]|
- 6[23]|
- 7[2-4]
- )
- )\d{6}|
- 1[69]\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,9}</possibleNumberPattern>
- <exampleNumber>234567890</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>1[0-246-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>101234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9001234567</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Eritrea -->
- <!-- http://www.itu.int/oth/T0202000042/en -->
- <territory id="ER" countryCode="291" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d)(\d{3})(\d{3})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[178]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 1(?:
- 1[12568]|
- 20|
- 40|
- 55|
- 6[146]
- )\d{4}|
- 8\d{6}
- </nationalNumberPattern>
- <exampleNumber>8370362</exampleNumber><!-- Test number from plan. -->
- </fixedLine>
- <mobile>
- <!-- It is unclear in the plan whether the 07 mobile prefix superseded the previous 017[1-3]
- numbers or was in addition to them, so we support both here. -->
- <nationalNumberPattern>
- 17[1-3]\d{4}|
- 7\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>7123456</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Spain -->
- <!-- http://www.mityc.es/telecomunicaciones/es-ES/Servicios/Numeracion/Paginas/Plan.aspx -->
- <territory id="ES" countryCode="34" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="([5-9]\d{2})(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[5-9]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[89][1-8]\d{7}</nationalNumberPattern>
- <exampleNumber>812345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>6\d{8}</nationalNumberPattern>
- <exampleNumber>612345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>[89]00\d{6}</nationalNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>80[367]\d{6}</nationalNumberPattern>
- <exampleNumber>803123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>90[12]\d{6}</nationalNumberPattern>
- <exampleNumber>901123456</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>70\d{7}</nationalNumberPattern>
- <exampleNumber>701234567</exampleNumber>
- </personalNumber>
- <!-- Modelling non-geographic nomadic numbers as UAN. -->
- <uan>
- <nationalNumberPattern>51\d{7}</nationalNumberPattern>
- <exampleNumber>511234567</exampleNumber>
- </uan>
- </territory>
-
- <!-- Ethiopia -->
- <!-- http://www.itu.int/oth/T0202000044/en -->
- <territory id="ET" countryCode="251" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([1-59]\d)(\d{3})(\d{4})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-59]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 11(?:
- 1(?:
- 1[124]|
- 2[2-57]|
- 3[1-5]|
- 5[5-8]|
- 8[6-8]
- )|
- 2(?:
- 13|
- 3[6-8]|
- 5[89]|
- 7[05-9]|
- 8[2-6]
- )|
- 3(?:
- 2[01]|
- 3[0-289]|
- 4[1289]|
- 7[1-4]|
- 87
- )|
- 4(?:
- 1[69]|
- 3[2-49]|
- 4[0-23]|
- 6[5-8]
- )|
- 5(?:
- 1[57]|
- 44|
- 5[0-4]
- )|
- 6(?:
- 18|
- 2[69]|
- 4[5-7]|
- 5[1-5]|
- 6[0-59]|
- 8[015-8]
- )
- )|
- 2(?:
- 2(?:
- 11[1-9]|
- 22[0-7]|
- 33\d|
- 44[1467]|
- 66[1-68]
- )|
- 5(?:
- 11[124-6]|
- 33[2-8]|
- 44[1467]|
- 55[14]|
- 66[1-3679]|
- 77[124-79]|
- 880
- )
- )|
- 3(?:
- 3(?:
- 11[0-46-8]|
- 22[0-6]|
- 33[0134689]|
- 44[04]|
- 55[0-6]|
- 66[01467]
- )|
- 4(?:
- 44[0-8]|
- 55[0-69]|
- 66[0-3]|
- 77[1-5]
- )
- )|
- 4(?:
- 6(?:
- 22[0-24-7]|
- 33[1-5]|
- 44[13-69]|
- 55[14-689]|
- 660|
- 88[1-4]
- )|
- 7(?:
- 11[1-9]|
- 22[1-9]|
- 33[13-7]|
- 44[13-6]|
- 55[1-689]
- )
- )|
- 5(?:
- 7(?:
- 227|
- 55[05]|
- (?:
- 66|
- 77
- )[14-8]
- )|
- 8(?:
- 11[149]|
- 22[013-79]|
- 33[0-68]|
- 44[013-8]|
- 550|
- 66[1-5]|
- 77\d
- )
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>111112345</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- The data here is not regularly updated by the Ethiopian authorities, and many more
- numbers are visible online than are reported in the ITU document. This pattern is
- therefore somewhat more relaxed than in the ITU document. -->
- <nationalNumberPattern>91[0-8]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>911234567</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Finland -->
- <!-- http://www.ficora.fi/en/index/palvelut/palvelutaiheittain/numerointi/numerotyypitjaalueet.html -->
- <territory id="FI" countryCode="358" internationalPrefix="00|99[049]"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{4,10})">
- <leadingDigits>
- 2[09]|
- [14]|
- 50|
- 7[135]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{4,11})">
- <leadingDigits>
- [25689][1-8]|
- 3
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([6-8]00)(\d{4,7})">
- <leadingDigits>[6-8]0</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- 1\d{4,11}|
- [2-9]\d{4,10}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,12}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- This is limited to geographic numbers - non-geographic nationwide
- subscriber numbers are listed under UAN. -->
- <nationalNumberPattern>
- 1(?:
- [35689][1-8]\d{3,9}|
- [47]\d{5,10}
- )|
- 2[1-8]\d{3,9}|
- 3(?:
- [1-8]\d{3,9}|
- 9\d{4,8}
- )|
- [5689][1-8]\d{3,9}|
- </nationalNumberPattern>
- <exampleNumber>1312345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 4\d{5,10}|
- 50\d{4,8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,11}</possibleNumberPattern>
- <exampleNumber>412345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{4,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>[67]00\d{5,6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- <exampleNumber>600123456</exampleNumber>
- </premiumRate>
- <uan>
- <nationalNumberPattern>
- 10[1-9]\d{3,7}|
- 2(?:
- 0(?:
- [16-8]\d{3,7}|
- 2[14-9]\d{1,6}|
- [3-5]\d{2,7}|
- 9[0-7]\d{1,6}
- )|
- 9\d{4,8}
- )|
- 30[1-9]\d{3,7}|
- 7(?:
- 1\d{7}|
- 3\d{8}|
- 5[03-9]\d{2,7}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- <exampleNumber>10112345</exampleNumber>
- </uan>
- </territory>
-
- <!-- Fiji -->
- <!-- http://www.itu.int/oth/T0202000048/en -->
- <!-- www.tfl.com.fj -->
- <territory id="FJ" countryCode="679" internationalPrefix="0(?:0|52)"
- preferredInternationalPrefix="00" leadingZeroPossible="true">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <leadingDigits>[36-9]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{4})(\d{3})(\d{4})">
- <leadingDigits>0</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [36-9]\d{6}|
- 0\d{10}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{4})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Adding the prefixes 30X, 31X and 62X, since numbers with these prefixes have been found
- online, including in the white pages. 35X and 85X were found in the exchanges listed on
- www.tfl.com.fj. -->
- <nationalNumberPattern>
- (?:
- 3[0-5]|
- 6[25-7]|
- 8[58]
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>3212345</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 7[0-4]|
- 9[29]
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>7012345</exampleNumber>
- </mobile>
- <tollFree>
- <!-- Information found on www.tfl.com.fj. It is not clear if these are internationally
- diallable, or if so, how. -->
- <nationalNumberPattern>0800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>08001234567</exampleNumber>
- </tollFree>
- <shortCode>
- <!-- From the Emergency Numbers page on the Telecom Fiji website. -->
- <nationalNumberPattern>
- 0(?:
- 04|
- 1[34]|
- 8[1-4]
- )|
- 1(?:
- 0[1-3]|
- [25]9
- )|
- 2[289]|
- 30|
- [45]4|
- 75|
- 91[137]
- </nationalNumberPattern>
- <possibleNumberPattern>\d{2,3}</possibleNumberPattern>
- <exampleNumber>22</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Falkland Islands (Malvinas) -->
- <!-- http://www.itu.int/oth/T0202000046/en -->
- <territory id="FK" countryCode="500" internationalPrefix="00">
- <!-- All numbers are formatted together, as a block. -->
- <generalDesc>
- <nationalNumberPattern>[2-7]\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{5}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[2-47]\d{4}</nationalNumberPattern>
- <exampleNumber>31234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[56]\d{4}</nationalNumberPattern>
- <exampleNumber>51234</exampleNumber>
- </mobile>
- <shortCode>
- <!-- Service numbers use 3 digit short codes -->
- <nationalNumberPattern>
- 1\d{2}|
- 999
- </nationalNumberPattern>
- <exampleNumber>123</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Micronesia, Federated States of -->
- <!-- http://www.itu.int/oth/T020200008B/en -->
- <territory id="FM" countryCode="691" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[39]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 3[2357]0[1-9]\d{3}|
- 9[2-6]\d{5}
- </nationalNumberPattern>
- <exampleNumber>3201234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Note that most ranges are used for both fixed and mobile but numbers starting with 970
- are exclusively mobile. -->
- <nationalNumberPattern>
- 3[2357]0[1-9]\d{3}|
- 9[2-7]\d{5}
- </nationalNumberPattern>
- <exampleNumber>3501234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Faroe Islands -->
- <!-- http://www.itu.int/oth/T0202000047/en -->
- <territory id="FO" countryCode="298" internationalPrefix="00"
- nationalPrefixForParsing="(10(?:01|[12]0|88))"
- carrierCodeFormattingRule="$CC $FG">
- <!-- All numbers are formatted together, as a block. -->
- <availableFormats>
- <numberFormat pattern="(\d{6})">
- <format>$1</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-9]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 20|
- [3-4]\d|
- 8[19]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>201234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 2[1-9]|
- 5\d|
- 7[1-79]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>211234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80[257-9]\d{3}</nationalNumberPattern>
- <exampleNumber>802123</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- 90(?:
- [1345][15-7]|
- 2[125-7]|
- 99
- )\d{2}
- </nationalNumberPattern>
- <exampleNumber>901123</exampleNumber>
- </premiumRate>
- <voip>
- <nationalNumberPattern>
- (?:
- 6[0-36]|
- 88
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>601234</exampleNumber>
- </voip>
- <shortCode>
- <!-- Includes special numbers, special services and universal services. -->
- <nationalNumberPattern>
- 1(?:
- 1[248]|
- 4[124]\d|
- 71\d|
- 8[7-9]\d
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
- <exampleNumber>211234</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- France -->
- <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T020200004A0001MSWE.doc -->
- <!-- http://www.arcep.fr/index.php?id=8146 -->
- <!-- http://en.wikipedia.org/wiki/%2B33 -->
- <territory id="FR" countryCode="33" internationalPrefix="[04579]0"
- preferredInternationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([1-79])(\d{2})(\d{2})(\d{2})(\d{2})">
- <leadingDigits>[1-79]</leadingDigits>
- <format>$1 $2 $3 $4 $5</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP $FG"
- pattern="(8\d{2})(\d{2})(\d{2})(\d{2})">
- <leadingDigits>8</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[1-5]\d{8}</nationalNumberPattern>
- <exampleNumber>123456789</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 6\d{8}|
- 7[5-9]\d{7}
- </nationalNumberPattern>
- <exampleNumber>612345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{7}</nationalNumberPattern>
- <exampleNumber>801234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>89[1-37-9]\d{6}</nationalNumberPattern>
- <exampleNumber>891123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>
- 8(?:
- 1[019]|
- 2[0156]|
- 84|
- 90
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>810123456</exampleNumber>
- </sharedCost>
- <voip>
- <nationalNumberPattern>9\d{8}</nationalNumberPattern>
- <exampleNumber>912345678</exampleNumber>
- </voip>
- </territory>
-
- <!-- Gabon -->
- <!-- http://www.itu.int/oth/T020200004E/en -->
- <territory id="GA" countryCode="241" internationalPrefix="00" leadingZeroPossible="true">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})">
- <leadingDigits>[4-9]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(0\d)(\d{2})(\d{2})(\d{2})">
- <leadingDigits>0</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [4-9]\d{5}|
- 0\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 4(?:
- [04-8]\d|
- 2[04]
- )|
- (?:
- 5[04-689]|
- 6[024-9]|
- 7\d|
- 8[236]|
- 9[02368]
- )\d
- )\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- <exampleNumber>441234</exampleNumber>
- </fixedLine>
- <!-- The leading zero here is supposed to be temporary - at a later date,
- Gabon intends to have a 0 as their national prefix for all numbers
- instead. -->
- <!-- http://www.wtng.info/wtng-241-ga.html was used as the basis for the acceptable prefixes,
- with some supplementary prefixes added from internet research. There is supposedly a
- resource on mobile prefixes on the Gabon Telecom website, but the site (www.ogooue.ga)
- doesn't seem to work and no alternative can be found. Extra prefixes added: 07 12, 07 13,
- 06 71, 07 33, 07 [67]\d -->
- <mobile>
- <nationalNumberPattern>
- 0(?:
- 5(?:
- 0[89]|
- 3[0-4]|
- 8[0-26]|
- 9[238]
- )|
- 6(?:
- 0[3-7]|
- 1[01]|
- 2[0-7]|
- 6[0-589]|
- 71|
- 83|
- 9[57]
- )|
- 7(?:
- 1[2-5]|
- 2[89]|
- 3[35-9]|
- 4[01]|
- 5[0-347-9]|
- [67]\d|
- 8[457-9]|
- 9[0146]
- )
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>06031234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- United Kingdom -->
- <!-- http://stakeholders.ofcom.org.uk/telecoms/numbering/ -->
- <!-- http://en.wikipedia.org/wiki/List_of_United_Kingdom_dialling_codes -->
- <!-- http://www.numberingplans.com/?page=dialling&sub=areacodes&ac=GB -->
- <!-- Note that this excludes Isle of Man, Jersey and Guernsey prefixes for the purposes of
- validation, although the formatting rules are shared. -->
- <territory id="GB" countryCode="44" internationalPrefix="00"
- nationalPrefix="0" preferredExtnPrefix=" x" nationalPrefixFormattingRule="$NP$FG"
- mainCountryForCode="true">
- <availableFormats>
- <!-- 2d, 55, 56, 70, 76 with 10 digits. -->
- <numberFormat pattern="(\d{2})(\d{4})(\d{4})">
- <leadingDigits>
- 2|
- 5[56]|
- 7[06]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- 11d, 1d1, 3dd, 9dd with 10 digits. -->
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 1(?:
- 1|
- \d1
- )|
- 3|
- 9[018]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- 1dddd with 9 or 10 digits.
- These area codes are very rare in GB, and are only available in the following places:
- 13873(Langholm), 15242(Hornby), 15394(Hawkshead), 15395(Grange-over-Sands),
- 15396(Sedbergh), 16973(Wigton), 16974(Raughton Head), 16977(Brampton),
- 17683(Appleby), 17684(Pooley Bridge), 17687(Keswick), 19467(Gosforth). -->
- <numberFormat pattern="(\d{5})(\d{4,5})">
- <leadingDigits>
- 1(?:
- 38|
- 5[23]|
- 69|
- 76|
- 94
- )
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 387|
- 5(?:
- 24|
- 39
- )|
- 697|
- 768|
- 946
- )
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 3873|
- 5(?:
- 242|
- 39[456]
- )|
- 697[347]|
- 768[347]|
- 9467
- )
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <!-- 1ddd with 9 or 10 digits. -->
- <numberFormat pattern="(1\d{3})(\d{5,6})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <!-- 7ddd (not 70, 76) with 10 digits. -->
- <numberFormat pattern="(7\d{3})(\d{6})">
- <leadingDigits>7[1-5789]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <!-- 800 1111 : UK ChildLine. -->
- <numberFormat pattern="(800)(\d{4})">
- <leadingDigits>800</leadingDigits>
- <leadingDigits>8001</leadingDigits>
- <leadingDigits>80011</leadingDigits>
- <leadingDigits>800111</leadingDigits>
- <leadingDigits>8001111</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <!-- 845 46 47 : UK NHS Direct. -->
- <numberFormat pattern="(845)(46)(4\d)">
- <leadingDigits>845</leadingDigits>
- <leadingDigits>8454</leadingDigits>
- <leadingDigits>84546</leadingDigits>
- <leadingDigits>845464</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- 84d, 87d with 10 digits. -->
- <numberFormat pattern="(8\d{2})(\d{3})(\d{4})">
- <leadingDigits>
- 8(?:
- 4[2-5]|
- 7[0-3]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- 80d (including 800) with 10 digits. -->
- <numberFormat pattern="(80\d)(\d{3})(\d{4})">
- <leadingDigits>80</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- 500, 800 with 9 digits. -->
- <numberFormat pattern="([58]00)(\d{6})">
- <leadingDigits>[58]00</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>\d{7,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{4,10}</possibleNumberPattern>
- </generalDesc>
- <areaCodeOptional>
- <!-- These are a subset of the fixed-line rules, with digits 2-9 as the leading digit of the
- subscriber number. There are patterns for 2+8, 3+7 and a combined pattern for all
- 4+6/4+5 and 5+5/5+4 numbers. Note that numbers matching this pattern are not
- necessarily valid numbers. -->
- <nationalNumberPattern>
- 2\d[2-9]\d{7}|
- 1(?:
- 1\d|
- \d1
- )[2-9]\d{6}|
- 1(?:
- [248][02-9]\d[2-9]\d{4,5}|
- (?:
- 3(?:
- [02-79]\d|
- 8[0-69]
- )|
- 5(?:
- [04-9]\d|
- 2[0-35-9]|
- 3[0-8]
- )|
- 6(?:
- [02-8]\d|
- 9[0-689]
- )|
- 7(?:
- [02-5789]\d|
- 6[0-79]
- )|
- 9(?:
- [0235-9]\d|
- 4[0-5789]
- )
- )[2-9]\d{4,5}|
- (?:
- 387(?:
- 3[2-9]|
- [24-9]\d
- )|
- 5(?:
- 24(?:
- 2[2-9]|
- [3-9]\d
- )|
- 39(?:
- [4-6][2-9]|
- [237-9]\d
- )
- )|
- 697(?:
- [347][2-9]|
- [25689]\d
- )|
- 768(?:
- [347][2-9]|
- [25679]\d
- )|
- 946(?:
- 7[2-9]|
- [2-689]\d
- )
- )\d{3,4}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- <exampleNumber>1332456789</exampleNumber>
- </areaCodeOptional>
- <fixedLine>
- <!-- http://en.wikipedia.org/wiki/List_of_United_Kingdom_dialling_codes -->
- <!-- Pattern matches geographic NSN=10 numbers as follows:
- - area code and local number first digit for 2+8,
- - area code and local number first digit for 3+7,
- - area code only for 4+6 (including areas with embedded 5+5).
- Pattern matches geographic NSN=9 numbers as follows:
- - area code and local number first two digits for 4+5,
- - area code and local number first three digits for 4+5 special case (01768) 88Ddd,
- - area code and local number first digit for 5+4 special case (016977) Dddd.
- All patterns exclude ranges used in GG, IM, JE. -->
- <nationalNumberPattern>
- 2(?:
- 0[01378]|
- 3[0189]|
- 4[017]|
- 8[0-46-9]|
- 9[012]
- )\d{7}|
- 1(?:
- (?:1
- (?:3[0-48]|
- [46][0-4]|
- 5[012789]|
- 7[0-39]|
- 8[01349]
- )|
- 21[0-7]|
- 31[0-8]|
- [459]1\d|
- 61[0-46-9]
- )
- )\d{6}|
- 1(?:
- 2(?:
- 0[024-9]|
- 2[3-9]|
- 3[3-79]|
- 4[1-689]|
- [58][02-9]|
- 6[0-4789]|
- 7[013-9]|
- 9\d
- )|
- 3(?:
- 0\d|
- [25][02-9]|
- 3[02-579]|
- [468][0-46-9]|
- 7[1235679]|
- 9[24578]
- )|
- 4(?:
- 0[03-9]|
- [28][02-5789]|
- [37]\d|
- 4[02-69]|
- 5[0-8]|
- [69][0-79]
- )|
- 5(?:
- 0[1235-9]|
- 2[024-9]|
- 3[015689]|
- 4[02-9]|
- 5[03-9]|
- 6\d|
- 7[0-35-9]|
- 8[0-468]|
- 9[0-5789]
- )|
- 6(?:
- 0[034689]|
- 2[0-35689]|
- [38][013-9]|
- 4[1-467]|
- 5[0-69]|
- 6[13-9]|
- 7[0-8]|
- 9[0124578]
- )|
- 7(?:
- 0[0246-9]|
- 2\d|
- 3[023678]|
- 4[03-9]|
- 5[0-46-9]|
- 6[013-9]|
- 7[0-35-9]|
- 8[024-9]|
- 9[02-9]
- )|
- 8(?:
- 0[35-9]|
- 2[1-5789]|
- 3[02-578]|
- 4[0-578]|
- 5[124-9]|
- 6[2-69]|
- 7\d|
- 8[02-9]|
- 9[02569]
- )|
- 9(?:
- 0[02-589]|
- 2[02-689]|
- 3[1-5789]|
- 4[2-9]|
- 5[0-579]|
- 6[234789]|
- 7[0124578]|
- 8\d|
- 9[2-57]
- )
- )\d{6}|
- 1(?:
- 2(?:
- 0(?:
- 46[1-4]|
- 87[2-9]
- )|
- 545[1-79]|
- 76(?:
- 2\d|
- 3[1-8]|
- 6[1-6]
- )|
- 9(?:
- 7(?:
- 2[0-4]|
- 3[2-5]
- )|
- 8(?:
- 2[2-8]|
- 7[0-4789]|
- 8[345]
- )
- )
- )|
- 3(?:
- 638[2-5]|
- 647[23]|
- 8(?:
- 47[04-9]|
- 64[015789]
- )
- )|
- 4(?:
- 044[1-7]|
- 20(?:
- 2[23]|
- 8\d
- )|
- 6(?:
- 0(?:
- 30|
- 5[2-57]|
- 6[1-8]|
- 7[2-8]
- )|
- 140
- )|
- 8(?:
- 052|
- 87[123]
- )
- )|
- 5(?:
- 24(?:
- 3[2-79]|
- 6\d
- )|
- 276\d|
- 6(?:
- 26[06-9]|
- 686
- )
- )|
- 6(?:
- 06(?:
- 4\d|
- 7[4-79]
- )|
- 295[567]|
- 35[34]\d|
- 47(?:
- 24|
- 61
- )|
- 59(?:
- 5[08]|
- 6[67]|
- 74
- )|
- 955[0-4]
- )|
- 7(?:
- 26(?:
- 6[13-9]|
- 7[0-7]
- )|
- 442\d|
- 50(?:
- 2[0-3]|
- [3-68]2|
- 76
- )
- )|
- 8(?:
- 27[56]\d|
- 37(?:
- 5[2-5]|
- 8[239]
- )|
- 84(?:
- 3[2-58]
- )
- )|
- 9(?:
- 0(?:
- 0(?:
- 6[1-8]|
- 85
- )|
- 52\d
- )|
- 3583|
- 4(?:
- 66[1-8]|
- 9(?:
- 2[01]|
- 81
- )
- )|
- 63(?:
- 23|
- 3[1-4]
- )|
- 9561
- )
- )\d{3}|
- 176888[234678]\d{2}|
- 16977[23]\d{3}
- </nationalNumberPattern>
- <exampleNumber>1212345678</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- http://stakeholders.ofcom.org.uk/telecoms/numbering/telephone-no-availability/numbers-administered/
- 7100-7599, 7700-7999 with 10 digits; excluding ranges used in GG, IM, JE. -->
- <nationalNumberPattern>
- 7(?:
- [1-4]\d\d|
- 5(?:
- 0[0-8]|
- [13-9]\d|
- 2[0-35-9]
- )|
- 7(?:
- 0[1-9]|
- [1-7]\d|
- 8[02-9]|
- 9[0-689]
- )|
- 8(?:
- [014-9]\d|
- [23][0-8]
- )|
- 9(?:
- [04-9]\d|
- 1[02-9]|
- 2[0-35-9]|
- 3[0-689]
- )
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7400123456</exampleNumber>
- </mobile>
- <pager>
- <!-- 76 with 10 digits; excluding ranges used in IM. -->
- <nationalNumberPattern>
- 76(?:
- 0[012]|
- 2[356]|
- 4[0134]|
- 5[49]|
- 6[0-369]|
- 77|
- 81|
- 9[39]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7640123456</exampleNumber>
- </pager>
- <!-- Source for non geographic numbers:
- http://en.wikipedia.org/wiki/Non-geographical_telephone_numbers_in_the_UK -->
- <tollFree>
- <!-- 800 1111 with 7 digits, 800 with 9 or 10 digits, 808 with 10 digits, 500 with 9 digits. -->
- <nationalNumberPattern>
- 80(?:
- 0(?:
- 1111|
- \d{6,7}
- )|
- 8\d{7}
- )|
- 500\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{2,3})?</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- 871, 872, 873 with 10 digits are now Controlled Premium Rate Services, so are listed
- here as well as 900-909, 910-919, 980-983 with 10 digits. -->
- <nationalNumberPattern>
- (?:
- 87[123]|
- 9(?:
- [01]\d|
- 8[0-3]
- )
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9012345678</exampleNumber>
- </premiumRate>
- <sharedCost>
- <!-- Using shared cost to deal with the various revenue sharing number prefixes in the
- United Kingdom: 845 46 47 with 7 digits, 842-845, 870 with 10 digits. -->
- <nationalNumberPattern>
- 8(?:
- 4(?:
- 5464\d|
- [2-5]\d{7}
- )|
- 70\d{7}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- <exampleNumber>8431234567</exampleNumber>
- </sharedCost>
- <personalNumber>
- <!-- 70 with 10 digits. -->
- <nationalNumberPattern>70\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7012345678</exampleNumber>
- </personalNumber>
- <voip>
- <!-- 56 with 10 digits. -->
- <nationalNumberPattern>56\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5612345678</exampleNumber>
- </voip>
- <uan>
- <!-- 30d, 33d, 34d, 37d, 55 with 10 digits. -->
- <nationalNumberPattern>
- (?:
- 3[0347]|
- 55
- )\d{8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5512345678</exampleNumber>
- </uan>
- <shortCode>
- <!-- This is a list of the ones that can be called. -->
- <nationalNumberPattern>
- 1(?:
- 0[01]|
- 1(?:
- [12]|
- [68]\d{3}
- )|
- 2[123]|
- 33|
- 4(?:
- 1|
- 7\d
- )|
- 5\d|
- 70\d|
- 800\d|
- 9[15]
- )|
- 2(?:
- 02|
- 2(?:
- 02|
- 11|
- 2
- )|
- 3(?:
- 02|
- 45
- )
- 425
- )|
- 3[13]3|
- 4(?:
- 0[02]|
- 35[01]|
- 44[45]|
- 5\d
- )|
- 650|
- 789|
- 9(?:
- 01|
- 99
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
- <exampleNumber>150</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Grenada -->
- <!-- http://www.itu.int/oth/T0202000057/en -->
- <territory id="GD" countryCode="1" leadingDigits="473"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[4589]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 473(?:
- 2(?:
- 3[0-2]|
- 69
- )|
- 3(?:
- 2[89]|
- 86
- )|
- 4(?:
- [06]8|
- 3[5-9]|
- 4[0-49]|
- 5[5-79]|
- 73|
- 90
- )|
- 63[68]|
- 7(?:
- 58|
- 84
- )|
- 938
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>4732691234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 473(?:
- 4(?:
- 0[3-79]|
- 1[04-9]|
- 20|
- 58
- )|
- 53[3-8]
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>4734031234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Georgia -->
- <!-- http://www.itu.int/oth/T0202000050/en
- http://en.wikipedia.org/wiki/Telephone_numbers_in_Georgia. -->
- <territory id="GE" countryCode="995" internationalPrefix="8~10"
- nationalPrefix="8" nationalPrefixFormattingRule="$NP $FG">
- <availableFormats>
- <!-- Format isn't very strictly defined - the yellow pages omits area code and does 2 2 2,
- the communications commission uses 2 3 3. Wikipedia says 3 2 3. Some use 2 6. -->
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})">
- <leadingDigits>[13-79]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(800)(\d{2})(\d{2})(\d{2})">
- <leadingDigits>8</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [13-79]\d{7}|
- 8\d{8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 3(?:
- [256]\d|
- 4[124-9]|
- 7[0-4]
- )|
- 4(?:
- 1\d|
- 2[2-7]|
- 3[1-79]|
- 4[2-8]|
- 7[239]|
- 9[1-7]
- )
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,8}</possibleNumberPattern>
- <exampleNumber>32123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 14|
- 5[01578]|
- 6[28]|
- 7[0147-9]|
- 9[0-35-9]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>55123456</exampleNumber>
- </mobile>
- <!-- Information from www.yell.ge, examples such as Wissol Petroleum Georgia hotline. -->
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <!-- It seems there may be special 6 digit numbers beginning with 91, but we are not sure, so
- these are omitted for now. -->
- </territory>
-
- <!-- French Guiana (French Dept. of) -->
- <territory id="GF" countryCode="594" internationalPrefix="00">
- </territory>
-
- <!-- Guernsey -->
- <!-- Inherits formatting rules from the UK. -->
- <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_the_United_Kingdom -->
- <territory id="GG" countryCode="44" internationalPrefix="00"
- nationalPrefix="0" preferredExtnPrefix=" x" nationalPrefixFormattingRule="$NP$FG">
- <generalDesc>
- <nationalNumberPattern>[135789]\d{6,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </generalDesc>
- <areaCodeOptional>
- <nationalNumberPattern>1481[2-9]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1481250123</exampleNumber>
- </areaCodeOptional>
- <!-- Specific to GG. -->
- <fixedLine>
- <!-- 1481 with 10 digits. -->
- <nationalNumberPattern>1481\d{6}</nationalNumberPattern>
- <exampleNumber>1481456789</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- 7781, 7839, 7911 with 10 digits. -->
- <nationalNumberPattern>
- 7(?:
- 781|
- 839|
- 911
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7781123456</exampleNumber>
- </mobile>
- <!-- Other numbers as per GB. -->
- <pager>
- <nationalNumberPattern>
- 76(?:
- 0[012]|
- 2[356]|
- 4[0134]|
- 5[49]|
- 6[0-369]|
- 77|
- 81|
- 9[39]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7640123456</exampleNumber>
- </pager>
- <tollFree>
- <nationalNumberPattern>
- 80(?:
- 0(?:
- 1111|
- \d{6,7}
- )|
- 8\d{7}
- )|
- 500\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{2,3})?</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- (?:
- 87[123]|
- 9(?:
- [01]\d|
- 8[0-3]
- )
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9012345678</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>
- 8(?:
- 4(?:
- 5464\d|
- [2-5]\d{7}
- )|
- 70\d{7}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- <exampleNumber>8431234567</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>70\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7012345678</exampleNumber>
- </personalNumber>
- <voip>
- <nationalNumberPattern>56\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5612345678</exampleNumber>
- </voip>
- <uan>
- <nationalNumberPattern>
- (?:
- 3[0347]|
- 55
- )\d{8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5512345678</exampleNumber>
- </uan>
- <shortCode>
- <nationalNumberPattern>
- 1\d{2}(?:\d{3})?|
- 999
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
- <exampleNumber>150</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Ghana -->
- <!-- http://www.itu.int/oth/T0202000052/en -->
- <!-- http://www.nca.org.gh/index.php?option=com_content&view=article&id=90&Itemid=65 -->
- <territory id="GH" countryCode="233" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{3})(\d{4})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[235]\d{6,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 3(?:
- 0[237]\d|
- [167](?:
- 2[0-6]|
- 7\d
- )|
- 2(?:
- 2[0-5]|
- 7\d
- )|
- 3(?:
- 2[0-37]|
- 7\d
- )|
- 4(?:
- [27]\d|
- 30
- )|
- 5(?:
- 2[0-7]|
- 7\d
- )|
- 8(?:
- 2[0-2]|
- 7\d
- )|
- 9(?:
- 20|
- 7\d
- )
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- <exampleNumber>302345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 2(?:
- (?:
- [47]\d|
- 08
- )\d{6}|
- [368]\d{7}
- )|
- 54\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>231234567</exampleNumber>
- </mobile>
- <!-- No tollFree or premiumRate information can be found. -->
- </territory>
-
- <!-- Gibraltar -->
- <territory id="GI" countryCode="350" internationalPrefix="00">
- <!-- No formatting rules - numbers are always formatted as a block. -->
- <generalDesc>
- <nationalNumberPattern>[2568]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 2(?:
- 00\d|
- 16[0-7]|
- 22[2457]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>20012345</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 5[4-8]|
- 60
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>57123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{6}</nationalNumberPattern>
- <exampleNumber>80123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>8[1-689]\d{6}</nationalNumberPattern>
- <exampleNumber>88123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>87\d{6}</nationalNumberPattern>
- <exampleNumber>87123456</exampleNumber>
- </sharedCost>
- <shortCode>
- <nationalNumberPattern>
- 1(?:
- 00|
- 1(?:
- 2|
- 6(?:
- 00[06]|
- 11[17]
- )|
- 8\d{2}
- )|
- 23|
- 4(?:
- 1|
- 7[014]
- )|
- 5[015]|
- 9[0349]
- )|
- 8(?:
- 00|
- 4[0-2]|
- 8\d
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
- <exampleNumber>116123</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Greenland -->
- <!-- http://www.itu.int/oth/T0202000056/en -->
- <territory id="GL" countryCode="299" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-689]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Including VSAT numbers here. -->
- <nationalNumberPattern>
- (?:
- 19|
- 3[1-6]|
- 6[14689]|
- 8[14-79]|
- 9\d
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>321000</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[245][2-9]\d{4}</nationalNumberPattern>
- <exampleNumber>221234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{4}</nationalNumberPattern>
- <exampleNumber>801234</exampleNumber>
- </tollFree>
- <voip>
- <nationalNumberPattern>3[89]\d{4}</nationalNumberPattern>
- <exampleNumber>381234</exampleNumber>
- </voip>
- </territory>
-
- <!-- Gambia -->
- <!-- http://www.itu.int/oth/T020200004F/en -->
- <territory id="GM" countryCode="220" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[3-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 4(?:
- [23]\d{2}|
- 4(?:
- 1[024679]|
- [6-9]\d
- )
- )|
- 5(?:
- 54[0-7]|
- 6(?:
- [67]\d
- )|
- 7(?:
- 1[04]|
- 2[035]|
- 3[58]|
- 48
- )
- )|
- 8\d{3}
- )\d{3}
- </nationalNumberPattern>
- <exampleNumber>5661234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[3679]\d{6}</nationalNumberPattern>
- <exampleNumber>3012345</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Guinea -->
- <!-- http://www.itu.int/oth/T020200005B/en -->
- <territory id="GN" countryCode="224" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[3567]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 30(?:
- 24|
- 3[12]|
- 4[1-35-7]|
- 5[13]|
- 6[189]|
- [78]1|
- 9[1478]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>30241234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- WiMAX is in the plan - which is a wireless broadband protocol. Not including this in
- the metadata for now unless this proves to be necessary. These would start with 79. -->
- <nationalNumberPattern>
- 55\d{6}|
- 6(?:
- 0(?:
- 2\d|
- 3[3467]|
- 5[2457-9]
- )|
- [24578]\d{2}|
- 3(?:
- [14]0|
- 35
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>60201234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Guadeloupe -->
- <!-- http://www.itu.int/oth/T0202000058/en -->
- <territory id="GP" countryCode="590" internationalPrefix="00"
- mainCountryForCode="true" nationalPrefix="0"
- nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([56]90)(\d{2})(\d{4})">
- <format>$1 $2-$3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[56]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- The plan says 59011 and 59012 are not implemented yet, but is from 2006 and online
- examples can be found. -->
- <nationalNumberPattern>
- 590(?:
- 1[12]|
- 2[0-68]|
- 3[28]|
- 4[126-8]|
- 5[067]|
- 6[018]|
- [89]\d
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>590201234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding 1[1-9] and 2[013-5] as prefixes after SMSs have been successfully sent to
- numbers with this prefix. starpy.net/rates.php also attributes this range to Guadeloupe
- Digicel Mobile. -->
- <nationalNumberPattern>
- 690(?:
- 00|
- 1[1-9]|
- 2[013-5]|
- [3-5]\d|
- 6[0-57-9]|
- 7[1-6]|
- 8[0-6]|
- 9[09]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>690301234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Equatorial Guinea -->
- <!-- http://www.itu.int/oth/T0202000041/en -->
- <territory id="GQ" countryCode="240" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{3})(\d{4})">
- <leadingDigits>[235]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{6})">
- <leadingDigits>[89]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[23589]\d{8}</nationalNumberPattern>
- <!-- The 6 here refers to the old number pattern - numbers written down may still be this
- length although they can no longer be dialled. -->
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 3(?:
- 3(?:
- 3\d[7-9]|
- [0-24-9]\d[46]
- )|
- 5\d{2}[7-9]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>333091234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 222|
- 551
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>222123456</exampleNumber>
- </mobile>
- <!-- Note that personal and sharedCost numbers are said to go under here too - hopefully when
- they start allocating them there will be a differentiation of prefixes, but this is not
- clear now. -->
- <tollFree>
- <nationalNumberPattern>80\d[1-9]\d{5}</nationalNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90\d[1-9]\d{5}</nationalNumberPattern>
- <exampleNumber>900123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Greece -->
- <!-- http://www.itu.int/oth/T0202000055/en -->
- <!-- http://en.wikipedia.org/wiki/%2B30 -->
- <territory id="GR" countryCode="30" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="([27]\d)(\d{4})(\d{4})">
- <leadingDigits>
- 21|
- 7
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 2[2-9]1|
- [689]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(2\d{3})(\d{6})">
- <leadingDigits>2[2-9][02-9]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[26-9]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 2(?:
- 1\d{2}|
- 2(?:
- 3[1-8]|
- 4[1-7]|
- 5[1-4]|
- 6[1-8]|
- 7[1-5]|
- [289][1-9]
- )|
- 3(?:
- 1\d|
- 2[1-5]|
- 3[1-4]|
- [45][1-3]|
- 7[1-7]|
- 8[1-6]|
- 9[1-79]
- )|
- 4(?:
- 1\d|
- 2[1-8]|
- 3[1-4]|
- 4[13-5]|
- 6[1-578]|
- 9[1-5]
- )|
- 5(?:
- 1\d|
- 2[1-3]|
- 4[124]|
- 5[1-6]|
- [39][1-4]
- )|
- 6(?:
- 1\d|
- 3[24]|
- 4[1-7]|
- 5[13-9]|
- [269][1-6]|
- 7[14]|
- 8[1-35]
- )|
- 7(?:
- 1\d|
- [23][1-5]|
- 4[1-7]|
- 5[1-57]|
- 6[134]|
- 9[15-7]
- )|
- 8(?:
- 1\d|
- 2[1-5]|
- [34][1-4]|
- 9[1-7]
- )
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>2123456789</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>69\d{8}</nationalNumberPattern>
- <exampleNumber>6912345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{7}</nationalNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90[19]\d{7}</nationalNumberPattern>
- <exampleNumber>9091234567</exampleNumber>
- </premiumRate>
- <!-- Including calls with maximum charge of 0,25 EUR/minute here instead of under premium
- rate. -->
- <sharedCost>
- <nationalNumberPattern>
- 8(?:
- 0[16]|
- 12|
- 25
- )\d{7}
- </nationalNumberPattern>
- <exampleNumber>8011234567</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>70\d{8}</nationalNumberPattern>
- <exampleNumber>7012345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Guatemala -->
- <!-- http://www.itu.int/oth/T020200005A/en
- http://www.sit.gob.gt/index.php?page=plan-de-numeracion
- http://en.wikipedia.org/wiki/Telephone_numbers_in_Guatemala -->
- <territory id="GT" countryCode="502" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{4})(\d{4})">
- <leadingDigits>[2-7]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{4})(\d{3})(\d{4})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [2-7]\d{7}|
- 1[89]\d{9}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[267][2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>22456789</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Wikipedia claims numbers with 3 are also mobile although in ITU document it says that
- they are just reserved. -->
- <nationalNumberPattern>[345]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>51234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>18[01]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>18001112222</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>19\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>19001112222</exampleNumber>
- </premiumRate>
- <shortCode>
- <nationalNumberPattern>
- 1(?:
- 2|
- [57]\d
- )\d
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
- <exampleNumber>123</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Guam -->
- <!-- http://www.nationalnanpa.com/nas/public/assigned_code_query_step1.do?method=resetCodeQueryModel -->
- <territory id="GU" countryCode="1" leadingDigits="671"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[5689]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Added 671 555/720/721 based on information from
- http://www.area-codes.com/area-code/area-code-671.asp -->
- <nationalNumberPattern>
- 671(?:
- 3(?:
- 00|
- 3[39]|
- 4[349]|
- 55|
- 6[26]
- )|
- 4(?:
- 56|
- 7[1-9]|
- 8[23678]
- )|
- 5(?:
- 55|
- 6[2-5]|
- 88
- )|
- 6(?:
- 3[2-578]|
- 4[24-9]|
- 5[34]|
- 78|
- 8[5-9]
- )|
- 7(?:
- [079]7|
- 2[0167]|
- 3[45]|
- 8[789]
- )|
- 8(?:
- [2-5789]8|
- 6[48]
- )|
- 9(?:
- 2[29]|
- 6[79]|
- 7[179]|
- 8[789]|
- 9[78]
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>6713001234</exampleNumber>
- </fixedLine>
- <!-- We assume mobile phone numbers to be the same as fixed-line - further info unavailable -->
- <mobile>
- <nationalNumberPattern>
- 671(?:
- 3(?:
- 00|
- 3[39]|
- 4[349]|
- 55|
- 6[26]
- )|
- 4(?:
- 56|
- 7[1-9]|
- 8[23678]
- )|
- 5(?:
- 55|
- 6[2-5]|
- 88
- )|
- 6(?:
- 3[2-578]|
- 4[24-9]|
- 5[34]|
- 78|
- 8[5-9]
- )|
- 7(?:
- [079]7|
- 2[0167]|
- 3[45]|
- 8[789]
- )|
- 8(?:
- [2-5789]8|
- 6[48]
- )|
- 9(?:
- 2[29]|
- 6[79]|
- 7[179]|
- 8[789]|
- 9[78]
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>6713001234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Guinea-Bissau -->
- <!-- http://www.itu.int/oth/T020200005C/en -->
- <territory id="GW" countryCode="245" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[3567]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 3(?:
- 2[0125]|
- 3[1245]|
- 4[12]|
- 5[1-4]|
- 70|
- 9[1-467]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>3201234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[5-7]\d{6}</nationalNumberPattern>
- <exampleNumber>5012345</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Guyana -->
- <!-- http://www.itu.int/oth/T020200005D/en -->
- <territory id="GY" countryCode="592" internationalPrefix="001">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-4679]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2(?:
- 1[6-9]|
- 2[0-35-9]|
- 3[1-4]|
- 5[3-9]|
- 6\d|
- 7[0-24-79]
- )|
- 3(?:
- 2[25-9]|
- 3\d
- )|
- 4(?:
- 4[0-24]|
- 5[56]
- )|
- 77[1-57]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>2201234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- The ITU document only describes a few ranges for mobile numbers but there is evidence
- that SMS messages have been succesfully sent to numbers in the entire range prefixed
- with 6. -->
- <nationalNumberPattern>6\d{6}</nationalNumberPattern>
- <exampleNumber>6091234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- (?:
- 289|
- 862
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>2891234</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>9008\d{3}</nationalNumberPattern>
- <exampleNumber>9008123</exampleNumber>
- </premiumRate>
- <shortCode>
- <nationalNumberPattern>
- 0(?:
- 02|
- 171|
- 444|
- 7[67]7|
- 801|
- 9(?:
- 0[78]|
- [2-47]
- )
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
- <exampleNumber>0801</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Hong Kong -->
- <!-- http://www.ofta.gov.hk/numbering/main.html -->
- <territory id="HK" countryCode="852" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{4})(\d{4})">
- <leadingDigits>
- [235-7]|
- [89](?:
- 0[1-9]|
- [1-9]
- )
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(800)(\d{3})(\d{3})">
- <leadingDigits>800</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(900)(\d{2})(\d{3})(\d{3})">
- <leadingDigits>900</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <!-- Slightly more complex pattern to allow the country code to be stripped off if
- necessary. -->
- <nationalNumberPattern>
- [235-7]\d{7}|
- 8\d{7,8}|
- 9\d{7,10}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[23]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>21234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[5-79]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>51234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>90012345678</exampleNumber>
- </premiumRate>
- <personalNumber>
- <nationalNumberPattern>8[1-3]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>81123456</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Honduras -->
- <!-- http://www.itu.int/oth/T020200005F/en -->
- <!-- It seems there is no longer a trunk prefix in use, based on websites like
- http://www.howtocallabroad.com/codes.html and on seeing how locals write their numbers in
- national format. -->
- <territory id="HN" countryCode="504" internationalPrefix="00" >
- <availableFormats>
- <numberFormat pattern="(\d{4})(\d{4})">
- <format>$1-$2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[237-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 2(?:
- 2(?:
- 0[019]|
- 1[1-36]|
- [23]\d|
- 4[056]|
- 5[57]|
- 9[01]
- )|
- 4(?:
- 2|3-59]|
- 3[13-689]|
- 4[0-68]|
- 5[1-35]
- )|
- 5(?:
- 4[3-5]|
- 5\d|
- 6[56]|
- 74
- )|
- 6(?:
- 4[0-378]|
- [56]\d|
- [78][0-8]|
- 9[01]
- )|
- 7(?:
- 6[46-9]|
- 7[02-9]|
- 8[34]
- )|
- 8(?:
- 79|
- 8[0-35789]|
- 9[1-57-9]
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>22123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[37-9]\d{7}</nationalNumberPattern>
- <exampleNumber>91234567</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Croatia -->
- <!-- http://www.itu.int/oth/T0202000032/en -->
- <!-- http://en.wikipedia.org/wiki/%2B385 -->
- <territory id="HR" countryCode="385" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- The plan says 1 XXX XXXX but the government and local telecom websites are formatted 1
- XXXX XXX, so we prefer that formatting here. These same sources prefer XXX XXX to XX
- XXXX as well. -->
- <numberFormat pattern="(1)(\d{4})(\d{3})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(6[029])(\d{4})(\d{3})">
- <leadingDigits>6[029]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([2-5]\d)(\d{3})(\d{3})">
- <leadingDigits>[2-5]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(9[12589])(\d{3,4})(\d{3,4})">
- <leadingDigits>9</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(9[12589])(\d{3,4})(\d{3})(\d{3})">
- <leadingDigits>9</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{2})(\d{2,3})">
- <leadingDigits>
- 6[145]|
- 7
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3,4})(\d{3})">
- <leadingDigits>
- 6[145]|
- 7
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(80[01])(\d{2})(\d{2,3})">
- <leadingDigits>8</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(80[01])(\d{3,4})(\d{3})">
- <leadingDigits>8</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [1-7]\d{5,8}|
- [89]\d{6,11}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,12}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Supporting 060 (general service), 062 (universal access), 069 (children service)
- numbers here too. -->
- <nationalNumberPattern>
- (?:
- 1|
- 6[029]
- )\d{7}|
- (?:
- 2[0-3]|
- 3[1-5]|
- 4[02-47-9]|
- 5[1-3]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- <exampleNumber>12345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>9[12589]\d{6,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,12}</possibleNumberPattern>
- <exampleNumber>912345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80[01]\d{4,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- 061 is for TeleVoting numbers - but these are charged at similar rates to premium rate
- so we include them here. -->
- <nationalNumberPattern>6[145]\d{4,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- <exampleNumber>611234</exampleNumber>
- </premiumRate>
- <personalNumber>
- <nationalNumberPattern>7[45]\d{4,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- <exampleNumber>741234567</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Haiti -->
- <!-- http://www.itu.int/oth/T020200005E/en -->
- <!-- http://www.numberingplans.com/ -->
- <territory id="HT" countryCode="509" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{2})(\d{4})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-489]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- The prefix 24 seems to be also used, based on online searches. -->
- <nationalNumberPattern>
- 2(?:
- [24]\d|
- 5[1-5]|
- 94
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>22453300</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 3[4-9]|
- 4\d
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>34101234</exampleNumber>
- </mobile>
- <tollFree>
- <!-- ITU document says numbers with prefix 8 are "value-added services and free numbers
- without making any further distinction. However, http://www.numberingplans.com/ seems
- to suggest they are free. -->
- <nationalNumberPattern>8\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <voip>
- <!-- ITU document suggests 98\d{6}, but http://www.numberingplans.com/ restricts it to
- 98[89]\d{5}. -->
- <nationalNumberPattern>98[89]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>98901234</exampleNumber>
- </voip>
- <shortCode>
- <nationalNumberPattern>1\d{2}</nationalNumberPattern>
- <possibleNumberPattern>\d{3}</possibleNumberPattern>
- <exampleNumber>114</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Hungary -->
- <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000610001MSWE.doc -->
- <territory id="HU" countryCode="36" internationalPrefix="00"
- nationalPrefix="06" nationalPrefixFormattingRule="($FG)">
- <!-- Although the national prefix is necessary for dialling, the preferred format (confirmed
- by a Hungarian person and following the yellow pages) is to omit this when formatting.
- Yellow pages: www.aranyoldalak.hu -->
- <availableFormats>
- <numberFormat pattern="(1)(\d{3})(\d{4})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{3,4})">
- <leadingDigits>[2-9]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>\d{8,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Includes numbers for corporate networks. -->
- <nationalNumberPattern>
- (?:
- 1\d|
- 2(?:
- 1\d|
- [2-9]
- )|
- 3[2-7]|
- 4[24-9]|
- 5[2-79]|
- 6[23689]|
- 7(?:
- 1\d|
- [2-9]
- )|
- 8[2-57-9]|
- 9[2-69]
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>12345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- [27]0|
- 3[01]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>201234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>9[01]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>90123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>40\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>40123456</exampleNumber>
- </sharedCost>
- </territory>
-
- <!-- Indonesia -->
- <!-- http://www.itu.int/oth/T0202000064/en (from 2001, very out-of-date) -->
- <!-- http://en.wikipedia.org/wiki/%2B62 -->
- <territory id="ID" countryCode="62" internationalPrefix="0(?:0[1789]|10(?:00|1[67]))"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat nationalPrefixFormattingRule="($NP$FG)"
- pattern="(\d{2})(\d{7,8})">
- <leadingDigits>
- 2[124]|
- [36]1
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="($NP$FG)"
- pattern="(\d{3})(\d{5,7})">
- <leadingDigits>
- [4579]|
- 2[035-9]|
- [36][02-9]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(8\d{2})(\d{3,4})(\d{3,4})">
- <leadingDigits>8[1-35-9]</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(177)(\d{6,8})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <!-- http://en.wikipedia.org/wiki/Toll-free_telephone_number, and examples on the web show
- that sometimes they are followed by less digits. -->
- <numberFormat pattern="(800)(\d{5,7})">
- <leadingDigits>800</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(809)(\d)(\d{3})(\d{3})">
- <leadingDigits>809</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{6,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Area codes taken from wikipedia, with missing ones added from
- http://www.telkom.co.id/customer-services/area-and-country-code/?type=area.
- We also added 0770 after user feedback because it seems to be used on Bintan island.
- -->
- <nationalNumberPattern>
- 2[124]\d{7,8}|
- (?:
- 2(?:
- [35][1-4]|
- 6[0-8]|
- 7[1-6]|
- 8\d|
- 9[1-8]
- )|
- 3(?:
- 1|
- 2[1-578]|
- 3[1-68]|
- 4[1-3]|
- 5[1-8]|
- 6[1-3568]|
- 7[0-46]|
- 8\d
- )|
- 4(?:
- 0[1-589]|
- 1[01347-9]|
- 2[0-36-8]|
- 3[0-24-68]|
- 5[1-378]|
- 6[1-5]|
- 7[134]|
- 8[1245]
- )|
- 5(?:
- 1[1-35-9]|
- 2[25-8]|
- 3[1246-9]|
- 4[1-3589]|
- 5[1-46]|
- 6[1-8]
- )|
- 6(?:
- 19? |
- [25]\d|
- 3[1-469]|
- 4[1-6]
- )|
- 7(?:
- 1[1-46-9]|
- 2[14-9]|
- [36]\d|
- 4[1-8]|
- 5[1-9]|
- 7[0-36-9]
- )|
- 9(?:
- 0[12]|
- 1[0134-8]|
- 2[0-479]|
- 5[125-8]|
- 6[23679]|
- 7[159]|
- 8[01346]
- )
- )\d{5,8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,10}</possibleNumberPattern>
- <exampleNumber>612345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>8[1-35-9]\d{7,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{9,11}</possibleNumberPattern>
- <exampleNumber>812345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 177\d{6,8}|
- 800\d{5,7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8,11}</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <!-- The infomation below is provided by an Indonesian -->
- <premiumRate>
- <nationalNumberPattern>809\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8091234567</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Ireland -->
- <!-- http://www.comreg.ie/_fileupload/publications/ComReg0802.pdf -->
- <!-- http://www.comreg.ie/_fileupload/publications/ComReg0435.pdf -->
- <!-- http://www.comreg.ie/_fileupload/publications/ComReg03147.pdf -->
- <territory id="IE" countryCode="353" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)">
- <availableFormats>
- <numberFormat pattern="(1)(\d{3,4})(\d{4})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{5})">
- <leadingDigits>
- 2[2-9]|
- 4[347]|
- 5[2-58]|
- 6[2-47-9]|
- 9[3-9]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{5})">
- <leadingDigits>
- 40[24]|
- 50[45]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(48)(\d{4})(\d{4})">
- <leadingDigits>48</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(818)(\d{3})(\d{3})">
- <leadingDigits>81</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{3,4})">
- <leadingDigits>
- [24-69]|
- 7[14]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="([78]\d)(\d{3,4})(\d{4})">
- <leadingDigits>
- 76|
- 8[35-9]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="(700)(\d{3})(\d{3})">
- <leadingDigits>70</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG" pattern="(\d{4})(\d{3})(\d{3})">
- <leadingDigits>
- 1(?:
- 8[059]|
- 5
- )
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 8[059]0|
- 5
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[124-9]\d{6,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- We allow 6-7 digit subscriber numbers for the 021 area code since that seems to be
- reflected by the numbers in the Yellow Pages. The 023, 043, 052 and 064 area codes also
- may have 7 digit subscriber numbers, although limited to 5 in the plan. This was caused
- by a numbering update in 2008 (http://www.wtng.info/wtng-353-ie.html has more details).
- Other changes not in the plan include consolidating 0502, 0506 and 0509 into 057 and
- 054, 055 and 053 into 053, and making 044 be followed by 7 digits in some cases.
- Another peculiarity is that 048 actually replaces 00 44 28 when Irish people dial,
- allowing them to easily dial Northern Ireland. We support these numbers here, although
- technically they are numbers for the UK. -->
- <nationalNumberPattern>
- 1\d{7,8}|
- 2(?:
- 1\d{6,7}|
- [24-9]\d{5}|
- 3\d{5,7}
- )|
- 4(?:
- 0[24]\d{5}|
- [1269]\d{7}|
- [34]\d{5,7}|
- 5\d{6}|
- 7\d{5}|
- 8[0-46-9]\d{7}
- )|
- 5(?:
- 0[45]\d{5}|
- 1\d{6}|
- 2\d{5,7}|
- [3679]\d{7}|
- 8\d{5}
- )|
- 6(?:
- 1\d{6}|
- 4\d{5,7}|
- [237-9]\d{5}|
- [56]\d{7}
- )|
- 7[14]\d{7}|
- 9(?:
- 1\d{6}|
- [04]\d{7}|
- [3-9]\d{5}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,10}</possibleNumberPattern>
- <exampleNumber>2212345</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 8(?:
- 22\d{6}|
- [35-9]\d{7,8}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- <exampleNumber>850123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>1800\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- 15(?:
- 1[2-9]|
- [2-8]0|
- 59|
- 9[089]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1520123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>18[59]0\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1850123456</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>700\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>700123456</exampleNumber>
- </personalNumber>
- <voip>
- <nationalNumberPattern>76\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>761234567</exampleNumber>
- </voip>
- <uan>
- <nationalNumberPattern>818\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>818123456</exampleNumber>
- </uan>
- </territory>
-
- <!-- Israel -->
- <!-- http://www.itu.int/oth/T020200006A/en -->
- <!-- http://en.wikipedia.org/wiki/%2B972 -->
- <!-- http://www.wtng.info/wtng-972-il.html -->
- <!-- http://www.moc.gov.il/new/documents/engineering/MISP0200.ppt (in Hebrew) -->
- <!-- Formatting practice following wikipedia, and government sites. -->
- <territory id="IL" countryCode="972" internationalPrefix="0(?:0|1[2-48])"
- nationalPrefix="0" nationalPrefixFormattingRule="$FG">
- <availableFormats>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="([2-489])(\d{3})(\d{4})">
- <leadingDigits>[2-489]</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="([57]\d)(\d{3})(\d{4})">
- <leadingDigits>[57]</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(1)([7-9]\d{2})(\d{3})(\d{3})">
- <leadingDigits>1[7-9]</leadingDigits>
- <format>$1-$2-$3-$4</format>
- </numberFormat>
- <!-- The following number is for hospitals. -->
- <numberFormat pattern="(1255)(\d{3})">
- <leadingDigits>125</leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- <numberFormat pattern="(1200)(\d{3})(\d{3})">
- <leadingDigits>120</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(1212)(\d{2})(\d{2})">
- <leadingDigits>121</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <!-- These are 4-digit star numbers which are only accessible within Israel and must be
- dialed with a star in front of the number. -->
- <numberFormat pattern="(\d{4})">
- <leadingDigits>[2-689]</leadingDigits>
- <format>*$1</format>
- </numberFormat>
- </availableFormats>
- <generalDesc >
- <nationalNumberPattern>
- [17]\d{6,9}|
- [2-589]\d{3}(?:\d{3,6})?|
- 6\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{4,10}</possibleNumberPattern>
- </generalDesc>
- <noInternationalDialling>
- <nationalNumberPattern>
- 1700\d{6}|
- [2-689]\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{4,10}</possibleNumberPattern>
- <exampleNumber>1700123456</exampleNumber>
- </noInternationalDialling>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- [2-489]|
- 7[2-46-8]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- <exampleNumber>21234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>5[024679]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>501234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 1(?:
- 80[01]\d{3}|
- 255
- )\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- <exampleNumber>1800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- Peculiarly, one source states that 1956 and 1957 are the new premium rate prefixes.
- However, no online numbers starting with these prefixes can be found, and this data
- is not found in any other source. Instead, 1919 numbers are commonly used online for
- these services, so we support them. -->
- <!-- 1200 and 1212 numbers are for televoting. -->
- <nationalNumberPattern>
- 1(?:
- 212|
- (?:
- 919|
- 200
- )\d{2}
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8,10}</possibleNumberPattern>
- <exampleNumber>1919123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>
- 1(?:
- 700|
- 809
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1700123456</exampleNumber>
- </sharedCost>
- <voip>
- <nationalNumberPattern>77\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>771234567</exampleNumber>
- </voip>
- <uan>
- <!-- 4-digit star numbers. -->
- <nationalNumberPattern>[2-689]\d{3}</nationalNumberPattern>
- <possibleNumberPattern>\d{4}</possibleNumberPattern>
- <exampleNumber>2250</exampleNumber>
- </uan>
- <shortCode>
- <nationalNumberPattern>1\d{3}</nationalNumberPattern>
- <possibleNumberPattern>\d{4}</possibleNumberPattern>
- <exampleNumber>1455</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Isle of Man -->
- <!-- Inherits formatting rules from the UK. -->
- <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_the_United_Kingdom -->
- <territory id="IM" countryCode="44" internationalPrefix="00"
- nationalPrefix="0" preferredExtnPrefix=" x" nationalPrefixFormattingRule="$NP$FG">
- <generalDesc>
- <nationalNumberPattern>[135789]\d{6,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </generalDesc>
- <areaCodeOptional>
- <nationalNumberPattern>1624[2-9]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1624250123</exampleNumber>
- </areaCodeOptional>
- <!-- Specific to IM. -->
- <fixedLine>
- <!-- 1624 with 10 digits. -->
- <nationalNumberPattern>1624\d{6}</nationalNumberPattern>
- <exampleNumber>1624456789</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- 7524, 7624, 7924 with 10 digits. -->
- <nationalNumberPattern>7[569]24\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7924123456</exampleNumber>
- </mobile>
- <tollFree>
- <!-- 808 162 with 10 digits. -->
- <nationalNumberPattern>808162\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8081624567</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- 872 299, 900 624, 901 624, 906 624, 907 624 with 10 digits. -->
- <nationalNumberPattern>
- (?:
- 872299|
- 90[0167]624
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9016247890</exampleNumber>
- </premiumRate>
- <sharedCost>
- <!-- 844 040 6, 844 090 6, 845 624, 870 624 with 10 digits. -->
- <nationalNumberPattern>
- 8(?:
- 4(?:
- 40[49]06|
- 5624\d
- )|
- 70624\d
- )\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8456247890</exampleNumber>
- </sharedCost>
- <!-- Other numbers as per GB. -->
- <personalNumber>
- <nationalNumberPattern>70\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7012345678</exampleNumber>
- </personalNumber>
- <voip>
- <nationalNumberPattern>56\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5612345678</exampleNumber>
- </voip>
- <uan>
- <!-- 308 162, 33d, 344 040 6, 344 090 6, 345 624, 370 624, 372 299, 55 with 10 digits. -->
- <nationalNumberPattern>
- 3(?:
- 08162\d|
- 3\d{5}|
- 4(?:
- 40[49]06|
- 5624\d
- )|
- 7(?:
- 0624\d|
- 2299\d
- )
- )\d{3}|
- 55\d{8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5512345678</exampleNumber>
- </uan>
- <shortCode>
- <nationalNumberPattern>
- 1\d{2}(?:\d{3})?|
- 999
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
- <exampleNumber>150</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- India -->
- <!-- http://www.itu.int/oth/T0202000063/en -->
- <!-- http://en.wikipedia.org/wiki/%2B91 -->
- <!-- Note that several changes in area codes have occurred since the numbering plan was released
- - changes are notified on the www.bsnl.co.in website. Area codes can be verified here at
- http://www.bsnl.co.in/stdsearch.php. -->
- <territory id="IN" countryCode="91" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- Mobile numbers. -->
- <numberFormat pattern="(\d{2})(\d{2})(\d{6})">
- <leadingDigits>
- 7(?:
- 2[0579]|
- 39|
- 4[0-389]|
- 5[04-9]|
- 6|
- 7[02-9]|
- 8[0-79]
- )|
- 8(?:
- 0[01589]|
- 1[024]|
- 8[0479]|
- 9[057-9]
- )|
- 9
- </leadingDigits>
- <leadingDigits>
- 7(?:
- 2[0579]|
- 39|
- 4[0-389]|
- 5(?:
- 0[0-5]|
- 49|
- 50|
- [6-9]
- )|
- 6|
- 7[02-9]|
- 8[0-79]
- )|
- 8(?:
- 0[01589]|
- 1[024]|
- 8(?:
- [079]|
- 44
- )|
- 9[057-9]
- )|
- 9
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- 2 digits area code -->
- <numberFormat pattern="(\d{2})(\d{4})(\d{4})">
- <leadingDigits>
- 11|
- 2[02]|
- 33|
- 4[04]|
- 79|
- 80[2-6]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- 3 digits area code -->
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 1(?:
- 2[0-249]|
- 3[0-25]|
- 4[145]|
- [569][14]|
- 7[1257]|
- 8[1346]|
- [68][1-9]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 2(?:
- 1[257]|
- 3[013]|
- 4[01]|
- 5[0137]|
- 6[0158]|
- 78|
- 8[1568]|
- 9[14]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 3(?:
- 26|
- 4[1-3]|
- 5[34]|
- 6[01489]|
- 7[02-46]|
- 8[159]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 4(?:
- 1[36]|
- 2[1-47]|
- 3[15]|
- 5[12]|
- 6[126-9]|
- 7[0-24-9]|
- 8[013-57]|
- 9[014-7]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 5(?:
- [136][25]|
- 22|
- 4[28]|
- 5[12]|
- [78]1|
- 9[15]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 6(?:
- 12|
- [2345]1|
- 57|
- 6[13]|
- 7[14]|
- 80
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 7(?:
- 12|
- 2[14]|
- 3[134]|
- 4[47]|
- 5[15]|
- [67]1|
- 88
- )
- </leadingDigits>
- <leadingDigits>
- 7(?:
- 12|
- 2[14]|
- 3[134]|
- 4[47]|
- 5(?:
- 1|
- 5[1-9]
- )|
- [67]1|
- 88
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 8(?:
- 16|
- 2[014]|
- 3[126]|
- 6[136]|
- 7[078]|
- 8[34]|
- 91
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- 4 digits area code -->
- <!-- Fallback for fixed-line numbers. -->
- <numberFormat pattern="(\d{4})(\d{3})(\d{3})">
- <leadingDigits>
- 1(?:
- [2-579]|
- [68][1-9]
- )|
- [2-8]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="(1600)(\d{2})(\d{4})">
- <leadingDigits>160</leadingDigits>
- <leadingDigits>1600</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="(1800)(\d{4,5})">
- <leadingDigits>180</leadingDigits>
- <leadingDigits>1800</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="(18[06]0)(\d{2,4})(\d{4})">
- <leadingDigits>18[06]</leadingDigits>
- <leadingDigits>18[06]0</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- 1\d{7,11}|
- [2-9]\d{9,10}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,12}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- This is a list of the 2 and 3 digit area codes and the first 3
- digits of 4 digit area codes, so we can check the following digit
- belongs to one of the operator-codes (2-6). Operator codes from
- wikipedia, with the addition of 5 (HFCL Infotel). Area codes starting
- with a 7 are listed separately, since the prefixes need to be more
- detailed as they would otherwise clash with mobile phone prefixes. -->
- <nationalNumberPattern>
- (?:
- 11|
- 2[02]|
- 33|
- 4[04]|
- 79|
- 80
- )[2-6]\d{7}|
- (?:
- 1(?:
- 2[0-249]|
- 3[0-25]|
- 4[145]|
- [59][14]|
- 6[014]|
- 7[1257]|
- 8[01346]
- )|
- 2(?:
- 1[257]|
- 3[013]|
- 4[01]|
- 5[0137]|
- 6[0158]|
- 78|
- 8[1568]|
- 9[14]
- )|
- 3(?:
- 26|
- 4[1-3]|
- 5[34]|
- 6[01489]|
- 7[02-46]|
- 8[159]
- )|
- 4(?:
- 1[36]|
- 2[1-47]|
- 3[15]|
- 5[12]|
- 6[126-9]|
- 7[0-24-9]|
- 8[013-57]|
- 9[014-7]
- )|
- 5(?:
- [136][25]|
- 22|
- 4[28]|
- 5[12]|
- [78]1|
- 9[15]
- )|
- 6(?:
- 12|
- [2345]1|
- 57|
- 6[13]|
- 7[14]|
- 80
- )|
- 7(?:
- 12|
- 2[14]|
- 3[134]|
- 4[47]|
- 5[15]|
- [67]1|
- 88
- )|
- 8(?:
- 16|
- 2[014]|
- 3[126]|
- 6[136]|
- 7[078]|
- 8[34]|
- 91
- )
- )[2-6]\d{6}|
- (?:
- (?:
- 1(?:
- 2[35-8]|
- 3[346-9]|
- 4[236-9]|
- [59][0235-9]|
- 6[235-9]|
- 7[34689]|
- 8[257-9]
- )|
- 2(?:
- 1[134689]|
- 3[24-8]|
- 4[2-8]|
- 5[25689]|
- 6[2-4679]|
- 7[13-79]|
- 8[2-479]|
- 9[235-9]
- )|
- 3(?:
- 01|
- 1[79]|
- 2[1-5]|
- 4[25-8]|
- 5[125689]|
- 6[235-7]|
- 7[157-9]|
- 8[2-467]
- )|
- 4(?:
- 1[14578]|
- 2[5689]|
- 3[2-467]|
- 5[4-7]|
- 6[35]|
- 73|
- 8[2689]|
- 9[2389]
- )|
- 5(?:
- [16][146-9]|
- 2[14-8]|
- 3[1346]|
- 4[14-69]|
- 5[46]|
- 7[2-4]|
- 8[2-8]|
- 9[246]
- )|
- 6(?:
- 1[1358]|
- 2[2457]|
- 3[2-4]|
- 4[235-7]|
- 5[2-689]|
- 6[24-58]|
- 7[23-689]|
- 8[1-6]
- )|
- 8(?:
- 1[1357-9]|
- 2[235-8]|
- 3[03-57-9]|
- 4[0-24-9]|
- 5\d|
- 6[2457-9]|
- 7[1-6]|
- 8[1256]|
- 9[2-4]
- )
- )\d|
- 7(?:
- (?:
- 1[013-9]|
- 2[0235-9]|
- 3[2679]|
- 4[1-35689]|
- 5[2-46-9]|
- [67][02-9]|
- 9\d
- )\d|
- 8(?:
- 2[0-6]|
- [013-8]\d
- )
- )
- )[2-6]\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- <exampleNumber>1123456789</exampleNumber>
- </fixedLine>
- <!-- http://en.wikipedia.org/wiki/Mobile_telephone_numbering_in_India -->
- <mobile>
- <!-- A couple of additional prefixes not found on the wikipedia page, such as 7796, are
- added because SMS messages have been successfully sent to these numbers. It seems
- almost impossible to know for some of these numbers whether they are land-line or
- mobile, since the ranges overlap. -->
- <nationalNumberPattern>
- (?:
- 7(?:
- 2(?:
- 0[04-9]|
- 5[09]|
- 7[568]|
- 9[39]
- )|
- 3(?:
- 07|
- 7[3679]|
- 9[689]
- )|
- 4(?:
- 05|
- 1[15-9]|
- [29][89]|
- 39|
- 8[389]
- )|
- 5(?:
- 0[0-5]|
- [47]9|
- 50|
- 6[6-9]|
- [89][7-9]
- )|
- 6(?:
- 0[027]|
- 12|
- 20|
- 3[19]|
- 5[45]|
- 6[5-9]|
- 7[67]|
- 9[6-9]
- )|
- 7(?:
- 0[289]|
- 3[5-9]|
- 42|
- 60|
- 9[5-9]
- )|
- 8(?:
- [03][07-9]|
- 14|
- 2[7-9]|
- 4[25]|
- 6[09]|
- 7[015689]|
- 9[0357-9]
- )
- )\d|
- 9\d{4}|
- 8(?:
- (?:
- 0[01589]|
- 1[24]|
- 2[2369]|
- 4[023458]|
- 52|
- 6[0589]|
- 7[2569]
- )\d|
- 8(?:
- [079]\d|
- 44
- )|
- 9[057-9]\d
- )\d
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9123456789</exampleNumber>
- </mobile>
- <tollFree>
- <!-- Information gathered from sites such as
- http://www.surfindia.com/india-facts/toll-free-no.html and
- http://indmusings.blogspot.com/2008/09/free-help-line-numbersindia.html -->
- <nationalNumberPattern>
- 1(?:
- 600\d{6}|
- 800\d{4,8}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8,12}</possibleNumberPattern>
- <exampleNumber>1800123456</exampleNumber>
- </tollFree>
- <!-- The metadata on premium rate is temporarily commented out as wikipedia says 900 is
- mobile, conflicting with the national numbering plan. -->
- <!--
- <premiumRate>
- <nationalNumberPattern>900\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9001234567</exampleNumber>
- </premiumRate>
- -->
- <uan>
- <!-- Information gathered from sites such as http://www.calcutta.bsnl.co.in/insuan.html -->
- <nationalNumberPattern>1860345\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>18603451234</exampleNumber>
- </uan>
- </territory>
-
- <!-- British Indian Ocean Territory / Diego Garcia -->
- <!-- http://www.itu.int/oth/T0202000039/en -->
- <territory id="IO" countryCode="246" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>3\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>37\d{5}</nationalNumberPattern>
- <exampleNumber>3709100</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>38\d{5}</nationalNumberPattern>
- <exampleNumber>3801234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Iraq -->
- <!-- http://en.wikipedia.org/wiki/%2B964 -->
- <!-- http://wtng.info/wtng-964-ik.html -->
- <territory id="IQ" countryCode="964" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(1)(\d{3})(\d{4})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([2-6]\d)(\d{3})(\d{3,4})">
- <leadingDigits>[2-6]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(7[5-9]\d)(\d{3})(\d{4})">
- <leadingDigits>7</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-7]\d{7,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 1\d{7}|
- (?:
- 2[13-5]|
- 3[02367]|
- 4[023]|
- 5[03]|
- 6[026]
- )\d{6,7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- <exampleNumber>12345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[5-9]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7912345678</exampleNumber>
- </mobile>
- <!-- No tollFree or premiumRate information can be found. -->
- </territory>
-
- <!-- Iran, Islamic Republic of -->
- <!-- http://en.wikipedia.org/wiki/%2B98 -->
- <!-- http://www.itu.int/oth/T0202000066/en -->
- <territory id="IR" countryCode="98" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- Formatting follows wikipedia. -->
- <numberFormat pattern="(21)(\d{4})(\d{4})">
- <leadingDigits>21</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- [13-89]|
- 2[02-9]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-6]\d{4,9}|[1789]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- The patterns here are organized such that numbers with variable lengths come first,
- followed by numbers that are 10 digits long. -->
- <nationalNumberPattern>
- 2(?:
- 1[2-9]\d{2,7}|
- 51\d{3,7}
- )|
- (?:
- 241|
- 3(?:
- 11|
- 5[23]
- )|
- 441|
- 5[14]1
- )\d{4,7}|
- (?:
- 3(?:
- 34|
- 41
- )|
- 6(?:
- 11|
- 52
- )|
- )\d{6,7}|
- (?:
- 1(?:
- [134589][12]|
- [27][1-4]
- )|
- 2(?:
- 2[189]|
- [3689][12]|
- 42|
- 5[256]|
- 7[34]
- )|
- 3(?:
- 12|
- 2[1-4]|
- 3[125]|
- 4[24-9]|
- 51|
- [6-9][12]
- )|
- 4(?:
- [135-9][12]|
- 2[1-467]|
- 4[2-4]
- )|
- 5(?:
- 12|
- 2[89]|
- 3[1-5]|
- 4[2-8]|
- [5-7][12]|
- 8[1245]
- )|
- 6(?:
- 12|
- [347-9][12]|
- 51|
- 6[1-6]
- )|
- 7(?:
- [13589][12]|
- 2[1289]|
- 4[1-4]|
- 6[1-6]|
- 7[1-3]
- )|
- 8(?:
- [145][12]|
- 3[124578]|
- 6[1256]|
- 7[1245]
- )
- )\d{7}
- </nationalNumberPattern>
- <exampleNumber>2123456789</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 9(?:
- 1\d|
- 3[124-8]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9123456789</exampleNumber>
- </mobile>
- <pager>
- <nationalNumberPattern>943[24678]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9432123456</exampleNumber>
- </pager>
- <!-- No tollFree or premiumRate information can be found. -->
- <voip>
- <!-- Includes VSAT and Boomehen Satellite numbers. -->
- <nationalNumberPattern>993[12]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9932123456</exampleNumber>
- </voip>
- <uan>
- <!-- TCI Public Relations numbers -->
- <nationalNumberPattern>9990\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9990123456</exampleNumber>
- </uan>
- </territory>
-
- <!-- Iceland -->
- <!-- http://www.pta.is/default.aspx?cat_id=85 -->
- <territory id="IS" countryCode="354" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <leadingDigits>[4-9]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(3\d{2})(\d{3})(\d{3})">
- <leadingDigits>3</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [4-9]\d{6}|
- 38\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Including 87[23] XXXX here as it is listed as a fax number. -->
- <nationalNumberPattern>
- (?:
- 4(?:
- 1[0-245]|
- 2[0-7]|
- [37][0-8]|
- 4[0245]|
- 5[0-356]|
- 6\d|
- 8[0-46-8]|
- 9[013-79]
- )|
- 5(?:
- 05|
- [156]\d|
- 2[02578]|
- 3[013-6]|
- 4[03-6]|
- 7[0-2578]|
- 8[0-25-9]|
- 9[013-689]
- )|
- 87[23]
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>4101234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 38[59]\d{6}|
- (?:
- 6(?:
- 1[014-8]|
- 2[0-8]|
- 3[0-27-9]|
- 4[0-29]|
- 5[029]|
- [67][0-69]|
- [89]\d
- )|
- 7(?:
- 5[057]|
- 7[0-7]
- )|
- 8(?:
- 2[0-5]|
- [469]\d|
- 5[1-9]
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>6101234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>8001234</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>9011234</exampleNumber>
- </premiumRate>
- <voip>
- <nationalNumberPattern>49[013-79]\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>4931234</exampleNumber>
- </voip>
- </territory>
-
- <!-- Italy -->
- <!-- http://en.wikipedia.org/wiki/%2B39 -->
- <territory id="IT" countryCode="39" internationalPrefix="00" leadingZeroPossible="true">
- <availableFormats>
- <!-- The leading zero for fixed numbers will be prepended before the matching of these
- regular expressions. -->
- <numberFormat pattern="(0[26])(\d{3,4})(\d{4})">
- <leadingDigits>0[26]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(0[26])(\d{4})(\d{5})">
- <leadingDigits>0[26]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(0[26])(\d{4,6})">
- <leadingDigits>0[26]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(0\d{2})(\d{3,4})(\d{4})">
- <leadingDigits>0[13-57-9][0159]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(0\d{2})(\d{4,6})">
- <leadingDigits>0[13-57-9][0159]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(0\d{3})(\d{3})(\d{4})">
- <leadingDigits>0[13-57-9][2-46-8]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(0\d{3})(\d{4,6})">
- <leadingDigits>0[13-57-9][2-46-8]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{3,4})">
- <leadingDigits>
- [13]|
- 8(?:
- 00|
- 4[78]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3,6})">
- <leadingDigits>
- 8(?:
- 03|
- 9
- )
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[01389]\d{5,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 0(?:
- [26]\d{4,9}|
- [13-57-9](?:
- [0159]\d{4,8}|
- [2-46-8]\d{5,8}
- )
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,11}</possibleNumberPattern>
- <exampleNumber>0212345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>3\d{8,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- <exampleNumber>312345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 80(?:
- 0\d{6}|
- 3\d{3}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- 89(?:
- 2\d{3}|
- 9\d{6}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- <exampleNumber>899123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>84[78]\d{6,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- <exampleNumber>8481234567</exampleNumber>
- </sharedCost>
- <!-- The plan says these should be 6 digits long, but when you go to telephone companies in
- Italy, such as http://www.gnetwork.it/EmailServizi/Numerazioni178/tabid/91/Default.aspx
- and when you search for 178 numbers, they seem to all be 7 digits, so we cover both
- lengths here. -->
- <personalNumber>
- <nationalNumberPattern>178\d{6,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- <exampleNumber>1781234567</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Jersey -->
- <!-- Inherits formatting rules from the UK. -->
- <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_the_United_Kingdom -->
- <!-- http://www.jcra.je/cms3/v2/public/cmsChild.asp?pageID=1024&childID=1036 -->
- <territory id="JE" countryCode="44" internationalPrefix="00"
- nationalPrefix="0" preferredExtnPrefix=" x" nationalPrefixFormattingRule="$NP$FG">
- <generalDesc>
- <nationalNumberPattern>[135789]\d{6,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </generalDesc>
- <areaCodeOptional>
- <nationalNumberPattern>1534[2-9]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1534250123</exampleNumber>
- </areaCodeOptional>
- <!-- Specific to JE. -->
- <fixedLine>
- <!-- 1534 with 10 digits. -->
- <nationalNumberPattern>1534\d{6}</nationalNumberPattern>
- <exampleNumber>1534456789</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- 7509, 7700, 7797, 7829, 7937 with 10 digits. -->
- <nationalNumberPattern>
- 7(?:
- 509|
- 7(?:
- 00|
- 97
- )|
- 829|
- 937
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7797123456</exampleNumber>
- </mobile>
- <pager>
- <!-- Pager numbers as per GB. -->
- <nationalNumberPattern>
- 76(?:
- 0[012]|
- 2[356]|
- 4[0134]|
- 5[49]|
- 6[0-369]|
- 77|
- 81|
- 9[39]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7640123456</exampleNumber>
- </pager>
- <!-- Specific to JE. -->
- <tollFree>
- <!-- 800 735, 800 781, 808 901 with 10 digits. -->
- <nationalNumberPattern>
- 80(?:
- 07(?:
- 35|
- 81
- )|
- 8901
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8007354567</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- 871 206, 900 665, 900 669, 901 810, 907 107, 907 155 with 10 digits. -->
- <nationalNumberPattern>
- (?:
- 871206|
- 90(?:
- 066[59]|
- 1810|
- 71(?:
- 07|
- 55
- )
- )
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9018105678</exampleNumber>
- </premiumRate>
- <sharedCost>
- <!-- 844 405, 844 442, 844 469, 844 703, 845 041, 845 800, 870 002 with 10 digits. -->
- <nationalNumberPattern>
- 8(?:
- 4(?:
- 4(?:
- 4(?:
- 05|
- 42|
- 69
- )|
- 703
- )|
- 5(?:
- 041|
- 800
- )
- )|
- 70002
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8447034567</exampleNumber>
- </sharedCost>
- <personalNumber>
- <!-- 70 1511 with 10 digits. -->
- <nationalNumberPattern>701511\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7015115678</exampleNumber>
- </personalNumber>
- <voip>
- <!-- VoIP numbers as per GB. -->
- <nationalNumberPattern>56\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5612345678</exampleNumber>
- </voip>
- <uan>
- <!-- 300 735, 300 781, 308 901, 33d, 344 405, 344 442, 344 469, 344 703, 345 041, 345 800,
- 370 002, 371 206, 55 with 10 digits. -->
- <nationalNumberPattern>
- 3(?:
- 0(?:
- 07(?:
- 35|
- 81
- )|
- 8901
- )|
- 3\d{4}|
- 4(?:
- 4(?:
- 4(?:
- 05|
- 42|
- 69
- )|
- 703
- )|
- 5(?:
- 041|
- 800
- )
- )|
- 7(?:
- 0002|
- 1206
- )
- )\d{4}|
- 55\d{8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5512345678</exampleNumber>
- </uan>
- <shortCode>
- <!-- http://www.jcra.je/cms3/v2/public/cmsChild.asp?pageID=1024&childID=1036 -->
- <nationalNumberPattern>
- 1(?:
- 00|
- 1(?:
- 2|
- 8\d{3}
- )|
- 23|
- 4(?:
- [14]|
- 28|
- 7\d
- )|
- 5\d|
- 7(?:
- 0[12]|
- [128]|
- 35?
- )|
- 808|
- 9[135]
- )|
- 23[234]|
- 999
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
- <exampleNumber>150</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Jamaica -->
- <!-- http://www.itu.int/oth/T020200006C/en -->
- <territory id="JM" countryCode="1" leadingDigits="876"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[589]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 876(?:
- (?:
- 5[0-26]|
- 6\d
- )\d{5}|
- (?:
- 7(?:
- 0[2-689]|
- [1-6]\d|
- 8[056]|
- 9[45]
- )|
- 9(?:
- 0[1-8]|
- 1[02378]|
- [2-8]\d|
- 9[2-468]
- )
- )\d{4}
- )
- </nationalNumberPattern>
- <exampleNumber>8765123456</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding 27, 28 and 31 as extra prefixes, as they have been found to be valid by sending
- SMSs and looking at online number lookup sites. -->
- <nationalNumberPattern>
- 876(?:
- (?:
- 2[178]|
- [348]\d|
- 5[78]
- )\d|
- 7(?:
- 0[07]|
- 7\d|
- 8[1-47-9]|
- 9[0-36-9]
- )|
- 9(?:
- [01]9|
- 9[0579]
- )
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8762101234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Jordan -->
- <!-- http://www.trc.gov.jo/images/stories/pdf/NNP_ver200[1].pdf?lang=english -->
- <!-- http://www.itu.int/oth/T020200006E/en -->
- <!-- http://en.wikipedia.org/wiki/%2B962 -->
- <territory id="JO" countryCode="962" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat nationalPrefixFormattingRule="($NP$FG)"
- pattern="(\d)(\d{3})(\d{4})">
- <leadingDigits>
- [2356]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(7)(\d{2})(\d{2})(\d{2})(\d{2})">
- <leadingDigits>7[457-9]</leadingDigits>
- <format>$1 $2 $3 $4 $5</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{5,6})">
- <leadingDigits>
- 70|
- [89]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[235-9]\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Used the plan from www.trc.gov.jo since it is much more complete than the plan on the
- ITU website. -->
- <nationalNumberPattern>[2356][2-8]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- <exampleNumber>62001234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 7(?:
- [1-8]\d|
- 9[02-9]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>790123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>90012345</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>85\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>85012345</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>70\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>700123456</exampleNumber>
- </personalNumber>
- <uan>
- <!-- These numbers are Location Independent Services / Fixed cost according to
- http://www.trc.gov.jo -->
- <nationalNumberPattern>
- 8(?:
- 10|
- [78]\d
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>87101234</exampleNumber>
- </uan>
- </territory>
-
- <!-- Japan -->
- <!-- http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/fixed.html -->
- <!-- http://www.numberingplans.com/?page=dialling&sub=areacodes&ac=JP -->
- <territory id="JP" countryCode="81" internationalPrefix="010"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- Toll-free numbers -->
- <numberFormat pattern="(\d{3})(\d{3})(\d{3})">
- <leadingDigits>
- (?:
- 12|
- 99
- )0
- </leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <!-- Some leading digits are explicitly reserved for a particular purpose.
- We handle them first in this rule, and let the following rules ignore those exceptions.
- Note: The rule here is not in the files we rely on when creating the other rules.
- We would need to manually modify it if the Japanese goverment
- decided to change the rule.
-
- (prefix): purpose
- "50": IP phone
- "90" and "80": Mobile phone
- "70": PHS (Personal Handy-phone System, which has been used in Japan
- with Non-3G, Japanese-specific protocol).
- See also http://ja.wikipedia.org/wiki/PHS (Japanese)
- -->
- <numberFormat pattern="(\d{2})(\d{4})(\d{4})">
- <leadingDigits>[57-9]0</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <!-- The order of the reg-exps are important.
- Examples (not all):
- - "15": 15420 -> 154-20, 15472 -> 1547-2, 15410 -> 15-410,
- - "22": 22200 -> 22-200, 22300 -> 22-300, 22320 -> 223-20, 22350 -> 22-350
- - "42": 42000 -> 4-2000, 42901 -> 4-2901, 42910 -> 42-910
- - "82": 82200 -> 82-200, 82020 -> 820-20, 82400 -> 82-400
- - "99": 99400 -> 99-400, 99430 -> 994-30, 99692 -> 9969-2, 99750 -> 997-50
- - "993": 99330 -> 993-30, 99331 -> 99-331, 99332 -> 993-32
- -->
- <numberFormat pattern="(\d{4})(\d)(\d{4})">
- <leadingDigits>
- 1(?:
- 26|
- 3[79]|
- 4[56]|
- 5[4-68]|
- 6[3-5]
- )|
- 5(?:
- 76|
- 97
- )|
- 499|
- 746|
- 8(?:
- 3[89]|
- 63|
- 47|
- 51
- )|
- 9(?:
- 49|
- 80|
- 9[16]
- )
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 267|
- 3(?:
- 7[247]|
- 9[278]
- )|
- 4(?:
- 5[67]|
- 66
- )|
- 5(?:
- 47|
- 58|
- 64|
- 8[67]
- )|
- 6(?:
- 3[245]|
- 48|
- 5[4-68]
- )
- )|
- 5(?:
- 76|
- 97
- )9|
- 499[2468]|
- 7468|
- 8(?:
- 3(?:
- 8[78]|
- 96
- )|
- 636|
- 477|
- 51[24]
- )|
- 9(?:
- 496|
- 802|
- 9(?:
- 1[23]|
- 69
- )
- )
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 267|
- 3(?:
- 7[247]|
- 9[278]
- )|
- 4(?:
- 5[67]|
- 66
- )|
- 5(?:
- 47|
- 58|
- 64|
- 8[67]
- )|
- 6(?:
- 3[245]|
- 48|
- 5[4-68]
- )
- )|
- 5(?:
- 769|
- 979[2-69]
- )|
- 499[2468]|
- 7468|
- 8(?:
- 3(?:
- 8[78]|
- 96[2457-9]
- )|
- 636[2-57-9]|
- 477|
- 51[24]
- )|
- 9(?:
- 496|
- 802|
- 9(?:
- 1[23]|
- 69
- )
- )
- </leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{2})(\d{4})">
- <leadingDigits>
- 1(?:
- 2[3-6]|
- 3[3-9]|
- 4[2-6]|
- 5[2-8]|
- [68][2-7]|
- 7[2-689]|
- 9[1-578]
- )|
- 2(?:
- 2[034-9]|
- 3[3-58]|
- 4[0-468]|
- 5[04-8]|
- 6[013-8]|
- 7[06-9]|
- 8[02-57-9]|
- 9[13]
- )|
- 4(?:
- 2[28]|
- 3[689]|
- 6[035-7]|
- 7[05689]|
- 80|
- 9[3-5]
- )|
- 5(?:
- 3[1-36-9]|
- 4[4578]|
- 5[013-8]|
- 6[1-9]|
- 7[2-8]|
- 8[14-7]|
- 9[4-9]
- )|
- 7(?:
- 2[15]|
- 3[5-9]|
- 4[02-9]|
- 6[135-8]|
- 7[0-4689]|
- 9[014-9]
- )|
- 8(?:
- 2[49]|
- 3[3-8]|
- 4[5-8]|
- 5[2-9]|
- 6[35-9]|
- 7[579]|
- 8[03-579]|
- 9[2-8]
- )|
- 9(?:
- [23]0|
- 4[02-46-9]|
- 5[0245-79]|
- 6[4-9]|
- 7[2-47-9]|
- 8[02-7]|
- 9[3-7]
- )
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 2[3-6]|
- 3[3-9]|
- 4[2-6]|
- 5(?:
- [236-8]|
- [45][2-69]
- )|
- [68][2-7]|
- 7[2-689]|
- 9[1-578]
- )|
- 2(?:
- 2(?:
- [04-9]|
- 3[23]
- )|
- 3[3-58]|
- 4[0-468]|
- 5(?:
- 5[78]|
- 7[2-4]|
- [0468][2-9]
- )|
- 6(?:
- [0135-8]|
- 4[2-5]
- )|
- 7(?:
- [0679]|
- 8[2-7]
- )|
- 8(?:
- [024578]|
- 3[25-9]|
- 9[6-9]
- )|
- 9(?:
- 11|
- 3[2-4]
- )
- )|
- 4(?:
- 2(?:
- 2[2-9]|
- 8[237-9]
- )|
- 3[689]|
- 6[035-7]|
- 7(?:
- [059][2-8]|
- [68]
- )|
- 80|
- 9[3-5]
- )|
- 5(?:
- 3[1-36-9]|
- 4[4578]|
- 5[013-8]|
- 6[1-9]|
- 7[2-8]|
- 8[14-7]|
- 9(?:
- [89][2-8]|
- [4-7]
- )
- )|
- 7(?:
- 2[15]|
- 3[5-9]|
- 4[02-9]|
- 6[135-8]|
- 7[0-4689]|
- 9(?:
- [017-9]|
- 4[6-8]|
- 5[2-478]|
- 6[2-589]
- )
- )|
- 8(?:
- 2(?:
- 4[4-8]|
- 9[2-8]
- )|
- 3(?:
- 7[2-56]|
- [3-6][2-9]|
- 8[2-5]
- )|
- 4[5-8]|
- 5[2-9]|
- 6(?:
- [37]|
- 5[4-7]|
- 6[2-9]|
- 8[2-8]|
- 9[236-9]
- )|
- 7[579]|
- 8[03-579]|
- 9[2-8]
- )|
- 9(?:
- [23]0|
- 4[02-46-9]|
- 5[0245-79]|
- 6[4-9]|
- 7[2-47-9]|
- 8[02-7]|
- 9(?:
- 3[34]|
- [4-7]
- )
- )
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 2[3-6]|
- 3[3-9]|
- 4[2-6]|
- 5(?:
- [236-8]|
- [45][2-69]
- )|
- [68][2-7]|
- 7[2-689]|
- 9[1-578]
- )|
- 2(?:
- 2(?:
- [04-9]|
- 3[23]
- )|
- 3[3-58]|
- 4[0-468]|
- 5(?:
- 5[78]|
- 7[2-4]|
- [0468][2-9]
- )|
- 6(?:
- [0135-8]|
- 4[2-5]
- )|
- 7(?:
- [0679]|
- 8[2-7]
- )|
- 8(?:
- [024578]|
- 3[25-9]|
- 9[6-9]
- )|
- 9(?:
- 11|
- 3[2-4]
- )
- )|
- 4(?:
- 2(?:
- 2[2-9]|
- 8[237-9]
- )|
- 3[689]|
- 6[035-7]|
- 7(?:
- [059][2-8]|
- [68]
- )|
- 80|
- 9[3-5]
- )|
- 5(?:
- 3[1-36-9]|
- 4[4578]|
- 5[013-8]|
- 6[1-9]|
- 7[2-8]|
- 8[14-7]|
- 9(?:
- [89][2-8]|
- [4-7]
- )
- )|
- 7(?:
- 2[15]|
- 3[5-9]|
- 4[02-9]|
- 6[135-8]|
- 7[0-4689]|
- 9(?:
- [017-9]|
- 4[6-8]|
- 5[2-478]|
- 6[2-589]
- )
- )|
- 8(?:
- 2(?:
- 4[4-8]|
- 9(?:
- [3578]|
- 20|
- 4[04-9]|
- 6[56]
- )
- )|
- 3(?:
- 7(?:
- [2-5]|
- 6[0-59]
- )|
- [3-6][2-9]|
- 8[2-5]
- )|
- 4[5-8]|
- 5[2-9]|
- 6(?:
- [37]|
- 5(?:
- [467]|
- 5[014-9]
- )|
- 6(?:
- [2-8]|
- 9[02-69]
- )|
- 8[2-8]|
- 9(?:
- [236-8]|
- 9[23]
- )
- )|
- 7[579]|
- 8[03-579]|
- 9[2-8]
- )|
- 9(?:
- [23]0|
- 4[02-46-9]|
- 5[0245-79]|
- 6[4-9]|
- 7[2-47-9]|
- 8[02-7]|
- 9(?:
- 3(?:
- 3[02-9]|
- 4[0-24689]
- )|
- 4[2-69]|
- [5-7]
- )
- )
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 2[3-6]|
- 3[3-9]|
- 4[2-6]|
- 5(?:
- [236-8]|
- [45][2-69]
- )|
- [68][2-7]|
- 7[2-689]|
- 9[1-578]
- )|
- 2(?:
- 2(?:
- [04-9]|
- 3[23]
- )|
- 3[3-58]|
- 4[0-468]|
- 5(?:
- 5[78]|
- 7[2-4]|
- [0468][2-9]
- )|
- 6(?:
- [0135-8]|
- 4[2-5]
- )|
- 7(?:
- [0679]|
- 8[2-7]
- )|
- 8(?:
- [024578]|
- 3[25-9]|
- 9[6-9]
- )|
- 9(?:
- 11|
- 3[2-4]
- )
- )|
- 4(?:
- 2(?:
- 2[2-9]|
- 8[237-9]
- )|
- 3[689]|
- 6[035-7]|
- 7(?:
- [059][2-8]|
- [68]
- )|
- 80|
- 9[3-5]
- )|
- 5(?:
- 3[1-36-9]|
- 4[4578]|
- 5[013-8]|
- 6[1-9]|
- 7[2-8]|
- 8[14-7]|
- 9(?:
- [89][2-8]|
- [4-7]
- )
- )|
- 7(?:
- 2[15]|
- 3[5-9]|
- 4[02-9]|
- 6[135-8]|
- 7[0-4689]|
- 9(?:
- [017-9]|
- 4[6-8]|
- 5[2-478]|
- 6[2-589]
- )
- )|
- 8(?:
- 2(?:
- 4[4-8]|
- 9(?:
- [3578]|
- 20|
- 4[04-9]|
- 6(?:
- 5[25]|
- 60
- )
- )
- )|
- 3(?:
- 7(?:
- [2-5]|
- 6[0-59]
- )|
- [3-6][2-9]|
- 8[2-5]
- )|
- 4[5-8]|
- 5[2-9]|
- 6(?:
- [37]|
- 5(?:
- [467]|
- 5[014-9]
- )|
- 6(?:
- [2-8]|
- 9[02-69]
- )|
- 8[2-8]|
- 9(?:
- [236-8]|
- 9[23]
- )
- )|
- 7[579]|
- 8[03-579]|
- 9[2-8]
- )|
- 9(?:
- [23]0|
- 4[02-46-9]|
- 5[0245-79]|
- 6[4-9]|
- 7[2-47-9]|
- 8[02-7]|
- 9(?:
- 3(?:
- 3[02-9]|
- 4[0-24689]
- )|
- 4[2-69]|
- [5-7]
- )
- )
- </leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{4})">
- <leadingDigits>
- 1|
- 2(?:
- 23|
- 5[5-89]|
- 64|
- 78|
- 8[39]|
- 91
- )|
- 4(?:
- 2[2689]|
- 64|
- 7[347]
- )|
- 5(?:
- [2-589]|
- 39
- )|
- 60|
- 8(?:
- [46-9]|
- 3[279]|
- 2[124589]
- )|
- 9(?:
- [235-8]|
- 93
- )
- </leadingDigits>
- <leadingDigits>
- 1|
- 2(?:
- 23|
- 5(?:
- [57]|
- [68]0|
- 9[19]
- )|
- 64|
- 78|
- 8[39]|
- 917
- )|
- 4(?:
- 2(?:
- [68]|
- 20|
- 9[178]
- )|
- 64|
- 7[347]
- )|
- 5(?:
- [2-589]|
- 39[67]
- )|
- 60|
- 8(?:
- [46-9]|
- 3[279]|
- 2[124589]
- )|
- 9(?:
- [235-8]|
- 93[34]
- )
- </leadingDigits>
- <leadingDigits>
- 1|
- 2(?:
- 23|
- 5(?:
- [57]|
- [68]0|
- 9(?:
- 17|
- 99
- )
- )|
- 64|
- 78|
- 8[39]|
- 917
- )|
- 4(?:
- 2(?:
- [68]|
- 20|
- 9[178]
- )|
- 64|
- 7[347]
- )|
- 5(?:
- [2-589]|
- 39[67]
- )|
- 60|
- 8(?:
- [46-9]|
- 3[279]|
- 2[124589]
- )|
- 9(?:
- [235-8]|
- 93(?:
- 31|
- 4
- )
- )
- </leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{2})(\d{4})">
- <leadingDigits>
- 2(?:
- 9[14-79]|
- 74|
- [34]7|
- [56]9
- )|
- 82|
- 993
- </leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{4})(\d{4})">
- <leadingDigits>
- 3|
- 4(?:
- 2[09]|
- 7[01]
- )|
- 6[1-9]
- </leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{4})">
- <leadingDigits>[2479]</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>\d{9,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 1(?:
- 1[236-8]|
- 2[3-6]|
- 3[3-9]|
- 4[2-6]|
- [58][2-8]|
- 6[2-7]|
- 7[2-9]|
- 9[1-8]
- )|
- 2[2-9]\d|
- [36][1-9]\d|
- 4(?:
- 6[0235-8]|
- [2-578]\d|
- 9[2-59]
- )|
- 5(?:
- 6[1-9]|
- 7[2-8]|
- [2-589]\d
- )|
- 7(?:
- 3[4-9]|
- 4[02-9]|
- [25-9]\d
- )|
- 8(?:
- 3[2-9]|
- 4[5-9]|
- 5[1-9]|
- 8[03-9]|
- [2679]\d
- )|
- 9(?:
- [679][1-9]|
- [2-58]\d
- )
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>312345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[7-9]0\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7012345678</exampleNumber>
- </mobile>
- <!-- Toll free and premium rate numbers are not clearly defined in the official Japanese
- number plan, and do not seem to have been standardized. The information below is
- collected from searching the web. -->
- <tollFree>
- <nationalNumberPattern>120\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>120123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>990\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>990123456</exampleNumber>
- </premiumRate>
- <!-- Uncertain on number length allowed here. -->
- <personalNumber>
- <nationalNumberPattern>60\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>601234567</exampleNumber>
- </personalNumber>
- <voip>
- <nationalNumberPattern>50\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5012345678</exampleNumber>
- </voip>
- </territory>
-
- <!-- Kenya -->
- <!-- http://www.cck.go.ke/licensing/numbering/plan.html -->
- <territory id="KE" countryCode="254" internationalPrefix="000"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{4,7})">
- <leadingDigits>
- [2-6]|
- 91
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{6,7})">
- <leadingDigits>
- [78]|
- 90
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>\d{6,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{4,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 20|
- 4[0-6]|
- 5\d|
- 6[0-24-9]
- )\d{4,7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{4,9}</possibleNumberPattern>
- <exampleNumber>202012345</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding 716 after successful delivery of SMSs. -->
- <nationalNumberPattern>
- 7(?:
- 1[0-6]|
- 2\d|
- 3[2-8]|
- 5[0-2]|
- 7[023]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>712123456</exampleNumber>
- </mobile>
- <!-- There is no document that has the information on the actual length of premium rates and
- tollfree numbers. The information below comes from research on existing numbers. -->
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 88
- )\d{6,7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- 9(?:
- 00|
- 1
- )\d{6,7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8,10}</possibleNumberPattern>
- <exampleNumber>900123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Kyrgyzstan -->
- <!-- http://www.itu.int/oth/T0202000074/en -->
- <territory id="KG" countryCode="996" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{3})(\d{3})">
- <leadingDigits>
- 31[25]|
- [5-8]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{4})(\d{5})">
- <leadingDigits>
- 3(?:
- 1[36]|
- [2-9]
- )
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[356-8]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 3(?:
- 1(?:
- 2\d|
- 3[1-9]|
- 52|
- 6[1-8]
- )|
- 2(?:
- 22|
- 3[0-479]|
- 6[0-7]
- )|
- 4(?:
- 22|
- 5[6-9]|
- 6[0-4]
- )|
- 5(?:
- 22|
- 3[4-7]|
- 59|
- 6[0-5]
- )|
- 6(?:
- 22|
- 5[35-7]|
- 6[0-3]
- )|
- 7(?:
- 22|
- 3[468]|
- 4[1-8]|
- 59|
- 6\d|
- 7[5-7]
- )|
- 9(?:
- 22|
- 4[1-7]|
- 6[0-8]
- )
- )|
- 6(?:
- 09|
- 12|
- 2[2-4]
- )\d
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>312123456</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Added 705 since SMS messages have been successfully sent to numbers with this prefix.
- -->
- <nationalNumberPattern>
- 5[124-7]\d{7}|
- 7(?:
- 0[05]|
- 7\d
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>700123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <!-- No premiumRate information can be found. -->
- </territory>
-
- <!-- Cambodia -->
- <!-- http://www.itu.int/oth/T0202000023/en -->
- <territory id="KH" countryCode="855" internationalPrefix="00[178]"
- nationalPrefix="0">
- <availableFormats>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="(\d{2})(\d{3})(\d{3})">
- <leadingDigits>
- 1\d[1-9]|
- [2-9]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(1[89]00)(\d{3})(\d{3})">
- <leadingDigits>1[89]0</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{7,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2[3-6]|
- 3[2-6]|
- 4[2-4]|
- [5-7][2-5]
- )[2-47-9]\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,8}</possibleNumberPattern>
- <exampleNumber>23456789</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding 171, 13X, 80[89], 85[2-689] and 921 prefixes as SMS messages could be
- successfully delivered to these mobile numbers. -->
- <nationalNumberPattern>
- (?:
- (?:
- 1[0-35-9]|
- 9[1-49]
- )[1-9]|
- 8(?:
- 0[89]|
- 5[2-689]
- )
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>91234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 1800(?:
- 1\d|
- 2[09]
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- 1900(?:
- 1\d|
- 2[09]
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1900123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Kiribati -->
- <!-- http://www.itu.int/oth/T0202000071/en -->
- <territory id="KI" countryCode="686" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{5})">
- <format>$1</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-689]\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{5}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- [234]\d|
- 50|
- 8[1-5]
- )\d{3}
- </nationalNumberPattern>
- <exampleNumber>31234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[69]\d{4}</nationalNumberPattern>
- <exampleNumber>61234</exampleNumber>
- </mobile>
- <shortCode>
- <nationalNumberPattern>
- 10(?:
- [0-8]|
- 5[01259]
- )|
- 99[234]
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
- <exampleNumber>992</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Comoros -->
- <!-- http://www.itu.int/oth/T020200002D/en -->
- <territory id="KM" countryCode="269" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d)(\d{3})(\d{3})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[37]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- CDMA phones are included here, as they are considered as an extension of fixed line:
- http://www.comorestelecom.km/presentationcdma.php -->
- <nationalNumberPattern>
- 7(?:
- 6[0-37-9]|
- 7[0-57-9]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>7712345</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>3[23]\d{5}</nationalNumberPattern>
- <exampleNumber>3212345</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Saint Kitts and Nevis -->
- <!-- http://www.itu.int/oth/T02020000B0/en -->
- <territory id="KN" countryCode="1" leadingDigits="869"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[589]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 869(?:
- 2(?:
- 29|
- 36
- )|
- 4(?:
- 6[5-9]|
- 70
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>8692361234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 869(?:
- 5(?:
- 5[6-8]|
- 6[5-7]
- )|
- 66[2-9]|
- 76[2-5]
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8695561234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Korea, Dem. People's Rep. of -->
- <territory id="KP" countryCode="850" internationalPrefix="00"
- nationalPrefix="0">
- </territory>
-
- <!-- Korea (Rep. of) -->
- <!-- http://www.itu.int/oth/T0202000072/en -->
- <!-- http://en.wikipedia.org/wiki/%2B82 -->
- <!-- http://www.kcc.go.kr/user.do?mode=view&page=P02030300&dc=K02030300&boardId=1074&boardSeq=2349 -->
- <!-- http://www.kcc.go.kr/user.do?mode=view&page=P02030300&dc=K02030300&boardId=1074&boardSeq=2240 -->
- <!-- http://www.telecentro.co.kr/sub/index.php?job=detail&ebcf_id=faq&page=1&mid=0503&eb_seq=36 -->
- <!-- Exceptions :
- internationalPrefix
- 0031, 0033, 0071, 0073 - Special services of KT and DACOM, ignorable
- nationalPrefix
- 1[4-6]XX-YYYY - Country-wide common number services, display as it is without hyphens -->
- <territory id="KR" countryCode="82" internationalPrefix="00(?:[124-68]|[37]\d{2})"
- nationalPrefix="0" nationalPrefixForParsing="0(8[1-46-8]|85\d{2})?"
- nationalPrefixFormattingRule="$NP$FG" carrierCodeFormattingRule="$NP$CC-$FG">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{4})(\d{4})">
- <leadingDigits>
- 1(?:
- 0|
- 1[19]|
- [69]9|
- 5[458]
- )|
- [57]0
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 0|
- 1[19]|
- [69]9|
- 5(?:
- 44|
- 59|
- 8
- )
- )|
- [57]0
- </leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{4})">
- <leadingDigits>
- 1(?:
- [169][2-8]|
- [78]|
- 5[1-4]
- )|
- [68]0|
- [3-9][1-9][2-9]
- </leadingDigits>
- <leadingDigits>
- 1(?:
- [169][2-8]|
- [78]|
- 5(?:
- [1-3]|
- 4[56]
- )
- )|
- [68]0|
- [3-9][1-9][2-9]
- </leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d)(\d{4})">
- <leadingDigits>131</leadingDigits>
- <leadingDigits>1312</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{2})(\d{4})">
- <leadingDigits>131</leadingDigits>
- <leadingDigits>131[13-9]</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>13[2-9]</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{2})(\d{3})(\d{4})">
- <leadingDigits>30</leadingDigits>
- <format>$1-$2-$3-$4</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{4})(\d{4})">
- <leadingDigits>
- 2(?:
- [26]|
- 3[0-467]
- )
- </leadingDigits>
- <leadingDigits>
- 2(?:
- [26]|
- 3(?:
- 01|
- 1[45]|
- 2[17-9]|
- 39|
- 4|
- 6[67]|
- 7[078]
- )
- )
- </leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{3})(\d{4})">
- <leadingDigits>
- 2(?:
- 3[0-35-9]|
- [457-9]
- )
- </leadingDigits>
- <leadingDigits>
- 2(?:
- 3(?:
- 0[02-9]|
- 1[0-36-9]|
- 2[02-6]|
- 3[0-8]|
- 6[0-589]|
- 7[1-69]|
- [589]
- )|
- [457-9]
- )
- </leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{3,4})">
- <leadingDigits>21[0-46-9]</leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3,4})">
- <leadingDigits>[3-9][1-9]1</leadingDigits>
- <leadingDigits>
- [3-9][1-9]1(?:
- [0-46-9]
- )
- </leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- <!-- Company numbers. -->
- <numberFormat pattern="(\d{4})(\d{4})"
- nationalPrefixFormattingRule="$FG">
- <leadingDigits>
- 1(?:
- 5[46-9]|
- 6[04678]
- )
- </leadingDigits>
- <leadingDigits>
- 1(?:
- 5(?:
- 44|
- 66|
- 77|
- 88|
- 99
- )|
- 6(?:
- 00|
- 44|
- 6[16]|
- 70|
- 88
- )
- )
- </leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [1-79]\d{3,9}|
- 8\d{8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{4,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2|
- [34][1-3]|
- 5[1-5]|
- 6[1-4]
- )(?:
- 1\d{2,3}|
- [2-9]\d{6,7}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{4,10}</possibleNumberPattern>
- <exampleNumber>22123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>1[0-25-9]\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- <exampleNumber>1023456789</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>801234567</exampleNumber>
- </tollFree>
- <!-- The information below is provided by a Korean person. -->
- <premiumRate>
- <nationalNumberPattern>60[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>602345678</exampleNumber>
- </premiumRate>
- <personalNumber>
- <nationalNumberPattern>50\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5012345678</exampleNumber>
- </personalNumber>
- <voip>
- <nationalNumberPattern>70\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7012345678</exampleNumber>
- </voip>
- <uan>
- <nationalNumberPattern>
- 1(?:
- 5(?:
- 44|
- 66|
- 77|
- 88|
- 99
- )|
- 6(?:
- 00|
- 44|
- 6[16]|
- 70|
- 88
- )
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>15441234</exampleNumber>
- </uan>
- </territory>
-
- <!-- Kuwait -->
- <!-- http://www.itu.int/oth/T0202000073/en -->
- <territory id="KW" countryCode="965" internationalPrefix="00"
- nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- Format is from ITU. -->
- <numberFormat pattern="(\d{4})(\d{3,4})">
- <leadingDigits>[1269]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(5[05]\d)(\d{5})">
- <leadingDigits>5</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[12569]\d{6,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 18\d|
- 2(?:
- [23]\d{2}|
- 4[1-35-9]\d|
- 5(?:
- 0[034]|
- [2-46]\d|
- 5[1-3]|
- 7[1-7]
- )
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>22345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 5(?:
- 0[0-2]|
- 5\d
- )|
- 6(?:
- 0[034679]|
- 5[015-9]|
- 6\d|
- 7[067]|
- 99
- )|
- 9(?:
- 0[09]|
- 4[049]|
- 66|
- [79]\d
- )
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>50012345</exampleNumber>
- </mobile>
- <!-- No tollFree or premiumRate information can be found. -->
- <shortCode>
- <nationalNumberPattern>1\d{2}</nationalNumberPattern>
- <possibleNumberPattern>\d{3}</possibleNumberPattern>
- <exampleNumber>177</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Cayman Islands -->
- <!-- http://www.itu.int/oth/T0202000027/en -->
- <territory id="KY" countryCode="1" leadingDigits="345"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[3589]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 345(?:
- 2(?:
- 22|
- 44
- )|
- 444|
- 6(?:
- 23|
- 38|
- 40
- )|
- 7(?:
- 6[6-9]|
- 77
- )|
- 8(?:
- 00|
- 1[45]|
- 25|
- 4[89]|
- 88
- )|
- 9(?:
- 14|
- 4[035-9]
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>3452221234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 345(?:
- 32[3-79]|
- 5(?:
- 1[467]|
- 2[5-7]|
- 4[5-9]
- )|
- 9(?:
- 1[679]|
- 2[4-9]|
- 3[89]
- )
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>3453231234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002345678</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- 900[2-9]\d{6}|
- 345976\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002345678</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Kazakhstan -->
- <!-- http://www.itu.int/oth/T020200006F/en -->
- <territory id="KZ" countryCode="7" internationalPrefix="8~10"
- nationalPrefix="8" nationalPrefixFormattingRule="$NP$FG">
- <!-- Formatting rules obtained from Russia. -->
- <generalDesc>
- <nationalNumberPattern>
- (?:
- 7\d{2}|
- 80[09]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </generalDesc>
- <noInternationalDialling>
- <nationalNumberPattern>751\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7511234567</exampleNumber>
- </noInternationalDialling>
- <fixedLine>
- <!-- VSAT numbers are also included here. -->
- <nationalNumberPattern>
- 7(?:
- 1(?:
- 0(?:
- [23]\d|
- 4[023]|
- 59|
- 63
- )|
- 1(?:
- [23]\d|
- 4[0-79]|
- 59
- )|
- 2(?:
- [23]\d|
- 59
- )|
- 3(?:
- 2\d|
- 3[1-79]|
- 4[0-35-9]|
- 59
- )|
- 4(?:
- 2\d|
- 3[013-79]|
- 4[0-8]|
- 5[1-79]
- )|
- 5(?:
- 2\d|
- 3[1-8]|
- 4[1-7]|
- 59
- )|
- 6(?:
- 2\d|
- [34]\d|
- 5[19]|
- 61
- )|
- 72\d|
- 8(?:
- [27]\d|
- 3[1-46-9]|
- 4[0-5]|
- )
- )|
- 2(?:
- 1(?:
- [23]\d|
- 4[46-9]|
- 5[3469]
- )|
- 2(?:
- 2\d|
- 3[0679]|
- 46|
- 5[12679]|
- )|
- 3(?:
- [234]\d|
- 5[139]|
- )|
- 4(?:
- 2\d|
- 3[1235-9]|
- 59
- )|
- 5(?:
- [23]\d|
- 4[01246-8]|
- 59|
- 61
- )|
- 6(?:
- 2\d|
- 3[1-9]|
- 4[0-4]|
- 59
- )|
- 7(?:
- [23]\d|
- 40|
- 5[279]|
- 7\d
- )|
- 8(?:
- [23]\d|
- 4[0-3]|
- 59
- )|
- 9(?:
- 2\d|
- 3[124578]|
- 59
- )
- )|
- 3622
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>7123456789</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 7(?:
- 0[01257]\d{2}|
- 6[02-4]\d{2}|
- 7[157]\d{2}
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>7710009998</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{7}</nationalNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>809\d{7}</nationalNumberPattern>
- <exampleNumber>8091234567</exampleNumber>
- </premiumRate>
- <voip>
- <nationalNumberPattern>751\d{7}</nationalNumberPattern>
- <exampleNumber>7511234567</exampleNumber>
- </voip>
- </territory>
-
- <!-- Lao People's Dem. Rep. -->
- <!-- http://www.itu.int/oth/T0202000075/en -->
- <territory id="LA" countryCode="856" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(20)(\d{2})(\d{3})(\d{3})">
- <leadingDigits>20</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="([2-57]\d)(\d{3})(\d{3})">
- <leadingDigits>
- 21|
- [3-57]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-57]\d{7,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- [2-57]1|
- 54
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,8}</possibleNumberPattern>
- <exampleNumber>21212862</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 20(?:
- 2[23]|
- 5[4-6]|
- 77|
- 9[89]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>2023123456</exampleNumber>
- </mobile>
- <!-- No information on other types of phone numbers for Lao P.D.R. has been found. -->
- </territory>
-
- <!-- Lebanon -->
- <!-- http://www.itu.int/oth/T0202000077/en -->
- <!-- http://en.wikipedia.org/wiki/%2B961 -->
- <territory id="LB" countryCode="961" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d)(\d{3})(\d{3})">
- <leadingDigits>
- [13-6]|
- 7(?:
- [2-57-9]|
- 62)|
- [89][2-9]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([7-9]\d)(\d{3})(\d{3})">
- <leadingDigits>
- [89][01]|
- 7(?:
- [01]|
- 6[67])
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[13-9]\d{6,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- [14-6]\d{2}|
- 7(?:
- [2-57-9]\d|
- 62)|
- [89][2-9]\d
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>1123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 3\d|
- 7(?:
- [01]\d|
- 6[67]
- )
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- <exampleNumber>71123456</exampleNumber>
- </mobile>
- <premiumRate>
- <nationalNumberPattern>9[01]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>90123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>8[01]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80123456</exampleNumber>
- </sharedCost>
- </territory>
-
- <!-- Saint Lucia -->
- <!-- http://www.itu.int/oth/T02020000B1/en -->
- <territory id="LC" countryCode="1" leadingDigits="758"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[5789]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 758(?:
- 234|
- 4(?:
- 5[0-9]|
- 6[2-9]|
- 8[0-2]
- )|
- 638|
- 758
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>7582345678</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding 721 and 722 as these prefixes are found widely on the internet and SMS messages
- have been successfully delivered to these numbers. -->
- <nationalNumberPattern>
- 758(?:
- 28[4-7]|
- 384|
- 4(?:
- 6[01]|
- 8[4-9]
- )|
- 5(?:
- 1[89]|
- 20|
- 84
- )|
- 7(?:
- 1[2-9]|
- 2[0-4]
- )
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7582845678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Liechtenstein -->
- <!-- http://www.llv.li/amtsstellen/llv-ak-nummerierung.htm -->
- <!-- http://www.telecom.li has some different patterns for tollfree and shared cost numbers -
- look at "Mehrwertnummer". -->
- <territory id="LI" countryCode="423" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{2})(\d{2})">
- <leadingDigits>
- [23]|
- 7[4-9]|
- 87
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(6\d)(\d{3})(\d{3})">
- <leadingDigits>6</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([7-9]0\d)(\d{2})(\d{2})">
- <leadingDigits>[7-9]0</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- 0800 and 0900 are valid prefixes, but Liechtenstein
- doesn't have a general national prefix, so we include it manually here
- when formatting. We can tell whether it needs one by number length. -->
- <numberFormat pattern="([89]0\d)(\d{2})(\d{2})(\d{2})">
- <leadingDigits>[89]0</leadingDigits>
- <format>0$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- (?:
- 66|
- 80|
- 90
- )\d{7}|
- [237-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Regular Cost services are included here as well. -->
- <nationalNumberPattern>
- (?:
- 2(?:
- 17|
- 3\d|
- 6[02-58]|
- 96
- )|
- 3(?:
- 02|
- 7[01357]|
- 8[048]|
- 9[0269]
- )|
- 870
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>2345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 66(?:
- [0178][0-4]|
- 2[025-9]|
- [36]\d|
- 4[129]|
- 5[45]|
- 9[019]
- )\d{5}|
- 7(?:
- 4[2-59]|
- 56|
- [6-9]\d
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- <exampleNumber>661234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 80(?:
- 0(?:
- 07|
- 2[238]|
- 79|
- \d{4}
- )|
- 9\d{2}
- )\d{2}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- <exampleNumber>8002222</exampleNumber>
- </tollFree>
- <sharedCost>
- <nationalNumberPattern>
- 90(?:
- 0(?:
- 2[278]|
- 79|
- \d{4}
- )|
- 1(?:
- 23|
- \d{4}
- )|
- 6(?:
- 66|
- \d{4}
- )
- )\d{2}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- <exampleNumber>9002222</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>701\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>7011234</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Sri Lanka -->
- <!-- http://en.wikipedia.org/wiki/%2B94 -->
- <!-- http://www.itu.int/oth/T02020000C3/en -->
- <territory id="LK" countryCode="94" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{1})(\d{6})">
- <leadingDigits>[1-689]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{4})">
- <leadingDigits>7</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- [189]1|
- 2[13-7]|
- 3[1-8]|
- 4[157]|
- 5[12457]|
- 6[35-7]
- )[2-57]\d{6}
- </nationalNumberPattern>
- <exampleNumber>112345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[12578]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>712345678</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Liberia -->
- <!-- http://www.itu.int/oth/T0202000079/en -->
- <territory id="LR" countryCode="231" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- Formatting from Ministry of Agriculture,
- http://www.moa.gov.lr/content.php?sub=Email&?related=Contacts -->
- <numberFormat pattern="([279]\d)(\d{3})(\d{3})">
- <leadingDigits>[279]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([4-6])(\d{3})(\d{3})">
- <leadingDigits>[4-6]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- (?:
- [279]\d|
- [4-6]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>2\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>21234567</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Added 66, 67 and 68 as prefixes because of online numbers fitting this pattern. -->
- <nationalNumberPattern>
- (?:
- 4[67]|
- 5\d|
- 6[4-8]|
- 7\d{2}
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>4612345</exampleNumber>
- </mobile>
- <premiumRate>
- <!-- Telemedia service is listed under premium rate. -->
- <nationalNumberPattern>90\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>90123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Lesotho -->
- <!-- http://www.itu.int/oth/T0202000078/en -->
- <territory id="LS" countryCode="266" internationalPrefix="00">
- <availableFormats>
- <!-- Formatting following yellow pages: www.yellowpages.co.ls -->
- <numberFormat pattern="(\d{4})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2568]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>2\d{7}</nationalNumberPattern>
- <exampleNumber>22123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[56]\d{7}</nationalNumberPattern>
- <exampleNumber>50123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800[256]\d{4}</nationalNumberPattern>
- <exampleNumber>80021234</exampleNumber>
- </tollFree>
- </territory>
-
- <!-- Lithuania -->
- <!-- http://www.itu.int/oth/T020200007C/en -->
- <territory id="LT" countryCode="370" internationalPrefix="00"
- nationalPrefix="8" nationalPrefixFormattingRule="$NP $FG">
- <availableFormats>
- <!-- Two-digit area codes -->
- <numberFormat pattern="([34]\d)(\d{2})(\d{2})(\d{2})">
- <leadingDigits>
- 37|
- 4(?:
- 1|
- 5[45]|
- 6[2-4]
- )
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <!-- Three-digit area codes -->
- <numberFormat pattern="([3-689]\d{2})(\d{2})(\d{3})">
- <leadingDigits>
- 3[148]|
- 4(?:
- [24]|
- 6[09]
- )|
- 5(?:
- [0189]|
- 28
- )|
- [689]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(5)(2[0-79]\d)(\d{4})">
- <leadingDigits>52[0-79]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[3-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 3[1478]|
- 4[124-6]|
- 52
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>31234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>6\d{7}</nationalNumberPattern>
- <exampleNumber>61234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{5}</nationalNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90[0239]\d{5}</nationalNumberPattern>
- <exampleNumber>90012345</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Luxembourg -->
- <!-- http://www.ilr.public.lu/communications_electroniques/numerotation/index.html
- -->
- <territory id="LU" countryCode="352" internationalPrefix="00"
- nationalPrefixForParsing="(15(?:0[06]|1[12]|35|4[04]|55|6[26]|77|88|99)\d)"
- carrierCodeFormattingRule="$CC $FG">
- <availableFormats>
- <!-- Patterns overlap because of variable number length. -->
- <numberFormat pattern="(\d{2})(\d{3})">
- <leadingDigits>
- [23-5]|
- 7[1-9]|
- [89](?:
- [1-9]|
- 0[2-9]
- )
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})">
- <leadingDigits>
- [23-5]|
- 7[1-9]|
- [89](?:
- [1-9]|
- 0[2-9]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{2})(\d{3})">
- <leadingDigits>20</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- The pattern for 7-digit numbers starting with 20 here will never be reached - but since
- we want this pattern to apply for 8-digit numbers with a 20 prefix, we include 20 in
- the leading digits. This is also done for 9-10 digit numbers starting with 20 below.
- -->
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{1,2})">
- <leadingDigits>
- 2(?:
- [0367]|
- 4[3-8]
- )
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{3})">
- <leadingDigits>20</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})(\d{1,2})">
- <leadingDigits>
- 2(?:
- [0367]|
- 4[3-8]
- )
- </leadingDigits>
- <format>$1 $2 $3 $4 $5</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{1,4})">
- <leadingDigits>
- 2(?:
- [12589]|
- 4[12]
- )|
- [3-5]|
- 7[1-9]|
- [89](?:
- [1-9]|
- 0[2-9]
- )
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{2})(\d{3})">
- <leadingDigits>
- [89]0[01]|
- 70
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{3})">
- <leadingDigits>6</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <!-- The country-code is an impossible number prefix, so has been excluded here. This is
- necessary since the numbers have a variable number length. -->
- <nationalNumberPattern>
- [24-9]\d{3,10}|
- 3(?:
- [0-46-9]\d{2,9}|
- 5[013-9]\d{1,8}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{4,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Note that numbers starting with 2[367] can be a maximum of 10 digits - all others a
- maximum of 11. -->
- <nationalNumberPattern>
- (?:
- 2(?:
- 2\d{1,2}|
- 3[2-9]|
- [67]\d|
- 4[1-8]\d?|
- 5[1-5]\d?|
- 9[0-24-9]\d?
- )|
- 3(?:
- [059][05-9]|
- [13]\d|
- [26][015-9]|
- 4[0-26-9]|
- 7[0-389]|
- 8[08]
- )\d?|
- 4\d{2,3}|
- 5(?:
- [01458]\d|
- [27][0-69]|
- 3[0-3]|
- [69][0-7]
- )\d?|
- 7(?:
- 1[019]|
- 2[05-9]|
- 3[05]|
- [45][07-9]|
- [679][089]|
- 8[06-9]
- )\d?|
- 8(?:
- 0[2-9]|
- 1[0-36-9]|
- 3[3-9]|
- [469]9|
- [58][7-9]|
- 7[89]
- )\d?|
- 9(?:
- 0[89]|
- 2[0-49]|
- 37|
- 49|
- 5[0-27-9]|
- 7[7-9]|
- 9[0-478]
- )\d?
- )\d{1,7}
- </nationalNumberPattern>
- <exampleNumber>27123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>6[269][18]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>628123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90[01]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>90012345</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>801\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80112345</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>70\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>70123456</exampleNumber>
- </personalNumber>
- <voip>
- <nationalNumberPattern>20\d{2,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{4,10}</possibleNumberPattern>
- <exampleNumber>2012345</exampleNumber>
- </voip>
- <shortCode>
- <nationalNumberPattern>
- 1(?:
- 1[23]|
- 2\d{3}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,5}</possibleNumberPattern>
- <exampleNumber>12123</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Latvia -->
- <!-- http://www.itu.int/oth/T0202000076/en -->
- <territory id="LV" countryCode="371" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="([2689]\d)(\d{3})(\d{3})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2689]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>6\d{7}</nationalNumberPattern>
- <exampleNumber>61234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>2\d{7}</nationalNumberPattern>
- <exampleNumber>21234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{6}</nationalNumberPattern>
- <exampleNumber>80123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90\d{6}</nationalNumberPattern>
- <exampleNumber>90123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Libya (Soc. People’s Libyan Arab Jamahiriya) -->
- <!-- Status as of 21 Jan 2011: a lot of outdated information on the web including on wikipedia
- and itu.int. The new area codes are on the Arabic website of the main telecommunication
- operator (Hatef Libya). A new mobile operator Aljeel Aljadeed for Technology will start
- using 096 (they are allowing customers to register numbers currently), so their code has
- also been added. -->
- <!-- http://hlc.ly/price.php -->
- <territory id="LY" countryCode="218" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([25679]\d)(\d{7})">
- <format>$1-$2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[25679]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2[1345]|
- 5[1347]|
- 6[123479]|
- 71
- )\d{7}
- </nationalNumberPattern>
- <exampleNumber>212345678</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- The prefix 094 has been added on the strength of numbers found online, and numbers
- where SMS messages have been apparently successfully received. -->
- <nationalNumberPattern>9[1-6]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>912345678</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Morocco -->
- <!-- http://www.itu.int/oth/T0202000090/en -->
- <!-- http://en.wikipedia.org/wiki/+212 -->
- <territory id="MA" countryCode="212" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([56]\d{2})(\d{6})">
- <leadingDigits>
- 5(?:
- 2[015-7]|
- 3[0-4]
- )|
- 6
- </leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- <numberFormat pattern="([58]\d{3})(\d{5})">
- <leadingDigits>
- 5(?:
- 2[2-489]|
- 3[5-9]
- )|
- 892
- </leadingDigits>
- <leadingDigits>
- 5(?:
- 2(?:
- [2-48]|
- 90
- )|
- 3(?:
- [5-79]|
- 80
- )
- )|
- 892
- </leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- <numberFormat pattern="(5\d{4})(\d{4})">
- <leadingDigits>
- 5(?:
- 29|
- 38
- )
- </leadingDigits>
- <leadingDigits>
- 5(?:
- 29|
- 38
- )[89]
- </leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- <numberFormat pattern="(8[09])(\d{7})">
- <leadingDigits>
- 8(?:
- 0|
- 9[013-9]
- )
- </leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[5689]\d{8}</nationalNumberPattern>
- <!-- Closed numbering plan. -->
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 5(?:
- 2(?:
- (?:
- [015-7]\d|
- 2[2-9]|
- 3[2-57]|
- 4[2-8]|
- 8[235-9]|
- )\d|
- 9(?:
- 0\d|
- [89]0
- )
- )|
- 3(?:
- (?:
- [0-4]\d|
- [57][2-9]|
- 6[235-8]|
- 9[3-9]
- )\d|
- 8(?:
- 0\d|
- [89]0
- )
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>520123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 6(?:
- 0[06]|
- [14-7]\d|
- 2[236]|
- 33|
- 99
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>650123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{7}</nationalNumberPattern>
- <exampleNumber>801234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>89\d{7}</nationalNumberPattern>
- <exampleNumber>891234567</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Monaco -->
- <!-- http://www.itu.int/oth/T020200008D/en -->
- <!-- We support Kosovo mobile numbers (044, 045) with a Monaco country-code here, as we do not
- support Kosovo at the moment. Kosovo seems to use a variety of country codes currently. -->
- <territory id="MC" countryCode="377" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- Following formatting found online rather than in the ITU document example. -->
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})">
- <leadingDigits>[89]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{3})">
- <leadingDigits>4</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(6)(\d{2})(\d{2})(\d{2})(\d{2})">
- <leadingDigits>6</leadingDigits>
- <format>$1 $2 $3 $4 $5</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[4689]\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- </generalDesc>
- <noInternationalDialling>
- <nationalNumberPattern>8\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </noInternationalDialling>
- <fixedLine>
- <!-- Restricted to this as no numbers with the prefix of 91, 95 or 96 have been found. -->
- <nationalNumberPattern>9[2-47-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>99123456</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- 4X mobile numbers are actually used by Kosovo. -->
- <nationalNumberPattern>
- 6\d{8}|
- 4\d{7}
- </nationalNumberPattern>
- <exampleNumber>612345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- (?:
- 8\d|
- 90
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>90123456</exampleNumber>
- </tollFree>
- </territory>
-
- <!-- Moldova, Rep. of -->
- <!-- http://www.itu.int/oth/T020200008C/en -->
- <territory id="MD" countryCode="373" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(22)(\d{3})(\d{3})">
- <leadingDigits>22</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([25-7]\d{2})(\d{2})(\d{3})">
- <leadingDigits>
- 2[13-79]|
- [5-7]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([89]00)(\d{5})">
- <leadingDigits>[89]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[256-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2(?:
- 1[0569]|
- 2\d|
- 3[015-7]|
- 4[1-46-9]|
- 5[0-24689]|
- 6[2-589]|
- 7[1-37]|
- 9[1347-9]
- )|
- 5(?:
- 33|
- 5[257]
- )
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,8}</possibleNumberPattern>
- <exampleNumber>22212345</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Added 688 and 689 since SMS messages have been successfully sent to these numbers. -->
- <nationalNumberPattern>
- (?:
- 6(?:
- 50|
- 7[12]|
- [89]\d
- )|
- 7(?:
- 80|
- 9\d
- )
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>65012345</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{5}</nationalNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{5}</nationalNumberPattern>
- <exampleNumber>90012345</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Montenegro -->
- <!-- http://www.itu.int/oth/T02020000DA/en
- http://en.wikipedia.org/wiki/Telephone_numbers_in_Montenegro
- http://www.ekip.me/numeracija/dodijeljena.php -->
- <territory id="ME" countryCode="382" internationalPrefix="00" nationalPrefix="0"
- nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{3})(\d{3})">
- <leadingDigits>[2-57-9]|6[3789]</leadingDigits>
- <leadingDigits>
- [2-57-9]|
- 6(?:
- [389]|
- 7(?:
- [0-8]|
- 9[3-9]
- )
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(67)(9)(\d{3})(\d{3})">
- <leadingDigits>679</leadingDigits>
- <leadingDigits>679[0-2]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-9]\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Fixed line numbers have prefix 20,30,31,32,33,40,41,50,51,52 followed by 6 digits.
- The valid options for the third digit were from
- http://www.ekip.me/numeracija/dodijeljena.php -->
- <nationalNumberPattern>
- (?:
- 20[2-8]|
- 3(?:
- 0[2-7]|
- 1[35-7]|
- 2[367]|
- 3[4-7]
- )|
- 4(?:
- 0[237]|
- 1[2467]
- )|
- 5(?:
- 0[47]|
- 1[27]|
- 2[378]
- )
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,8}</possibleNumberPattern>
- <exampleNumber>30234567</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Mobile numbers start with 632, 67, 68 or 69. -->
- <nationalNumberPattern>
- 6(?:
- 32\d|
- [89]\d{2}|
- 7(?:
- [0-8]\d|
- 9(?:
- [3-9]|
- [0-2]\d
- )
- )
- )\d{4}
- </nationalNumberPattern>
- <!-- According to ITU it is possible for the numbers to be between length 4-12
- (http://www.itu.int/oth/T02020000DA/en). However, in reality they seem to be 8 or 9
- digits long. -->
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- <exampleNumber>67622901</exampleNumber>
- </mobile>
- <tollFree>
- <!-- All toll free numbers have prefix 80 followed by 02 or 08. -->
- <nationalNumberPattern>800[28]\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80080002</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- Numbers with prefix 88, 94 or 95 are services with additional charges. -->
- <nationalNumberPattern>
- (?:
- 88\d|
- 9(?:
- 4[13-8]|
- 5[16-8]
- )
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>94515151</exampleNumber>
- </premiumRate>
- <voip>
- <!-- VOIP are prefixed with 78. -->
- <nationalNumberPattern>78[134579]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>78108780</exampleNumber>
- </voip>
- <uan>
- <!-- Corporate Telephony are prefixed with 77. -->
- <nationalNumberPattern>77\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>77273012</exampleNumber>
- </uan>
- <shortCode>
- <!-- Emergency and other services. -->
- <nationalNumberPattern>
- 1(?:
- 16\d{3}|
- 2\d{1,2}|
- [0135]\d{2}|
- 4\d{2,3}|
- 9\d{3}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
- <exampleNumber>123</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Madagascar -->
- <!-- http://www.itu.int/oth/T020200007F/en -->
- <territory id="MG" countryCode="261" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([23]\d)(\d{2})(\d{3})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[23]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Added the prefixes 20 44 and 20 47 as they seem popular on the internet - the plan says
- 20 4 is for the rest of the province of Antanarivo, but then fails to mention any area
- codes beginning with 4. -->
- <nationalNumberPattern>
- 2(?:
- 0(?:
- (?:
- 2\d|
- 4[47]|
- 5[3467]|
- 6[279]|
- 8[268]|
- 9[245]
- )\d|
- 7(?:
- 2[29]|
- [35]\d
- )
- )|
- 210\d
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>202123456</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- The numbering plan suggests the third digit, Z, should be 24-9,
- but this is not borne out by reality. -->
- <nationalNumberPattern>3[02-4]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>301234567</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Saint-Martin, French Antilles -->
- <!-- http://www.itu.int/oth/T0202000058/en -->
- <territory id="MF" countryCode="590" internationalPrefix="00"
- nationalPrefix="0">
- <!-- Formatting rules borrowed from Guadeloupe. -->
- <generalDesc>
- <nationalNumberPattern>[56]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 590(?:
- 10|
- 2[79]|
- 5[128]|
- [78]7
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>590271234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 690(?:
- 10|
- 2[27]|
- 66|
- 77|
- 8[78]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>690221234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Marshall Islands -->
- <territory id="MH" countryCode="692" internationalPrefix="011"
- nationalPrefix="1">
- </territory>
-
- <!-- Macedonia, Former Yugoslav Rep. of -->
- <!-- http://en.wikipedia.org/wiki/%2B389
- http://www.aek.mk/ go to Telecommunications, Numbering, then Numbering plan. -->
- <territory id="MK" countryCode="389" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- Formats follow wikipedia. -->
- <numberFormat pattern="(2)(\d{3})(\d{4})">
- <leadingDigits>2</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([347]\d)(\d{3})(\d{3})">
- <leadingDigits>[347]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([58]\d{2})(\d)(\d{2})(\d{2})">
- <leadingDigits>[58]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-578]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2(?:
- [23]\d|
- 5[125]|
- 61
- )|
- 3(?:
- 1[3-6]|
- 2[2-6]|
- 3[2-5]|
- 4[235]
- )|
- 4(?:
- [23][2-6]|
- 4[3-6]|
- 5[25]|
- 6[25-8]|
- 7[24-6]|
- 8[4-6]
- )
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,8}</possibleNumberPattern>
- <exampleNumber>22212345</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[0-25-8]\d{6}</nationalNumberPattern>
- <exampleNumber>72345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{5}</nationalNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>5[02-9]\d{6}</nationalNumberPattern>
- <exampleNumber>50012345</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>
- 8(?:
- 0[1-9]|
- [1-9]\d
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>80123456</exampleNumber>
- </sharedCost>
- </territory>
-
- <!-- Mali -->
- <!-- http://www.itu.int/oth/T0202000083/en -->
- <!-- http://crt-mali.org/pdf/plan_num -->
- <territory id="ML" countryCode="223" internationalPrefix="00"
- nationalPrefix="0">
- <availableFormats>
- <numberFormat pattern="([246-8]\d)(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[246-8]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- 20 70 seems a common pattern, in addition to 21 25. -->
- <nationalNumberPattern>
- (?:
- 2(?:
- 0(?:
- 2[0-589]|
- 7[027-9]
- )|
- 1(?:
- 2[5-7]|
- [3-689]\d
- )
- )|
- 442\d
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>20212345</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 6(?:
- [569]\d
- )|
- 7(?:
- [08][1-9]|
- [3579][0-4]|
- 4[014-7]|
- 6\d
- )
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>65012345</exampleNumber>
- </mobile>
- <tollFree>
- <!-- Online examples have not been found, but this seems to follow the prescriptions in the
- plan. -->
- <nationalNumberPattern>800\d{5}</nationalNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- </territory>
-
- <!-- Myanmar -->
- <!-- http://www.itu.int/oth/T0202000092/en -->
- <territory id="MM" countryCode="95" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(1)(\d{3})(\d{3})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- This overlaps the previous pattern. -->
- <numberFormat pattern="(1)(3)(33\d)(\d{3})">
- <leadingDigits>133</leadingDigits>
- <leadingDigits>1333</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(2)(\d{2})(\d{3})">
- <leadingDigits>2</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{2})(\d{3})">
- <leadingDigits>[4-8]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- Format is from http://www.aitaa.ait.ac.th/chapters/copy17_of_aitaa-national-chapters-1 -->
- <numberFormat pattern="(9444)(\d{5})">
- <leadingDigits>94</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(9)([25689]\d{2})(\d{4})">
- <leadingDigits>9[25689]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [124-8]\d{5,7}|
- 9\d{7,8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Fixed satellite network numbers (1 3 33X XXX) are also included here. -->
- <nationalNumberPattern>
- (?:
- 1\d|
- 2|
- 4[2-6]|
- 5[2-9]|
- 6\d|
- 7[0-5]|
- 8[1-6]
- )\d{5}|
- 1333\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,8}</possibleNumberPattern>
- <exampleNumber>1234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 9(?:
- [25689]\d|
- 444
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- <exampleNumber>92123456</exampleNumber>
- </mobile>
- <!-- No information on other types of phone numbers for Myanmar has been found. -->
- </territory>
-
- <!-- Mongolia -->
- <!-- http://www.itu.int/oth/T020200008E/en -->
- <territory id="MN" countryCode="976" internationalPrefix="001"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([12]\d)(\d{2})(\d{4})">
- <leadingDigits>[12]1</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([12]2\d)(\d{5,6})">
- <leadingDigits>[12]2[1-3]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([12]\d{3})(\d{5})">
- <leadingDigits>
- [12](?:
- 27|
- [3-5]
- )
- </leadingDigits>
- <leadingDigits>
- [12](?:
- 27|
- [3-5]\d
- )2
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <!-- It seems from online formatting that the national prefix is not written (or perhaps
- needed?) for numbers in these ranges. -->
- <numberFormat pattern="(\d{4})(\d{4})"
- nationalPrefixFormattingRule="$FG">
- <leadingDigits>[57-9]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([12]\d{4})(\d{4,5})">
- <leadingDigits>
- [12](?:
- 27|
- [3-5]
- )
- </leadingDigits>
- <leadingDigits>
- [12](?:
- 27|
- [3-5]\d
- )[4-9]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [12]\d{7,9}|
- [57-9]\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Note the leading digit is the access code: 1 is used by Mongolia Telecom subscribers
- and 2 is used by Mongolian Railway subscribers. The area code then follows the access
- code, and could be 1 to 4 digits long. We also cover wireless local loop numbers here
- as well, even though we are not certain whether they are in fact fixed or mobile in
- this country. 5-digit subscriber numbers for 4-digit area codes have been added due to
- online numbers being found. -->
- <nationalNumberPattern>
- [12](?:
- 1\d|
- 2(?:
- [1-3]\d?|
- 7\d
- )|
- 3[2-8]\d{1,2}|
- 4[2-68]\d{1,2}|
- 5[1-4689]\d{1,2}
- )\d{5}|
- (?:
- 5[0568]|
- 70
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>70123456</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding prefix 98 from numbers found on the internet. -->
- <nationalNumberPattern>
- (?:
- 8[89]|
- 9[15689]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>88123456</exampleNumber>
- </mobile>
- <!-- No tollFree or premiumRate information can be found. -->
- <voip>
- <nationalNumberPattern>7[569]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>75123456</exampleNumber>
- </voip>
- </territory>
-
- <!-- Macao, China -->
- <!-- http://www.itu.int/oth/T020200007E/en -->
- <territory id="MO" countryCode="853" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="([268]\d{3})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[268]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 28[2-57-9]|
- 8[2-57-9]\d
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>28212345</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- The 62 prefix is added as SMS messages have been successfully delivered to these
- numbers, and they are also widely present on the Internet. -->
- <nationalNumberPattern>6[26]\d{6}</nationalNumberPattern>
- <exampleNumber>66123456</exampleNumber>
- </mobile>
- <!-- No tollFree or premiumRate information can be found. -->
- </territory>
-
- <!-- Northern Mariana Islands -->
- <!-- http://www.itu.int/oth/T02020000EE/en -->
- <!-- www.cnmiphonebook.com/ -->
- <territory id="MP" countryCode="1" leadingDigits="670"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[5689]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 670(?:
- 2(?:
- 3[3-5]|
- 88|
- 56
- )|
- 32[23]|
- 4[38]3|
- 532|
- 6(?:
- 64|
- 70|
- 8\d
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>6702345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 670(?:
- 2(?:
- 3[3-5]|
- 88|
- 56
- )|
- 32[23]|
- 4[38]3|
- 532|
- 6(?:
- 64|
- 70|
- 8\d
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>6702345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Martinique (French Dept. of) -->
- <territory id="MQ" countryCode="596" internationalPrefix="00"
- nationalPrefix="0">
- </territory>
-
- <!-- Mauritania -->
- <!-- http://www.itu.int/oth/T0202000087/en -->
- <!-- http://www.are.mr/com-1-4-1.html -->
- <territory id="MR" countryCode="222" internationalPrefix="00" >
- <availableFormats>
- <numberFormat pattern="([2-48]\d)(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-48]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 25[08]\d{5}|
- 35\d{6}|
- 45[1-7]\d{5}
- </nationalNumberPattern>
- <exampleNumber>35123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 2(?:
- 2\d|
- 70
- )|
- 3(?:
- 3\d|
- 6[1-36]|
- 7[1-3]
- )|
- 4(?:
- 4\d|
- 6[0457-9]|
- 7[4-9]
- )
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>22123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{5}</nationalNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- </territory>
-
- <!-- Montserrat -->
- <!-- http://www.itu.int/oth/T020200008F/en -->
- <territory id="MS" countryCode="1" leadingDigits="664"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[5689]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>664491\d{4}</nationalNumberPattern>
- <exampleNumber>6644912345</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>664492\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>6644923456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Malta -->
- <!-- www.itu.int/oth/T0202000084/en -->
- <!-- www.mca.org.mt (Numbering link in the LHS menu - has more up-to-date allocations) -->
- <territory id="MT" countryCode="356" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{4})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2579]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 2(?:
- 0(?:
- 1[0-6]|
- [69]\d
- )|
- [1-357]\d{2}
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>21001234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 7(?:
- 210|
- [79]\d{2}|
- )|
- 9(?:
- 2[13]\d|
- 696|
- 8(?:
- 1[1-3]|
- 89|
- 97
- )|
- 9\d{2}
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>96961234</exampleNumber>
- </mobile>
- <pager>
- <nationalNumberPattern>7117\d{4}</nationalNumberPattern>
- <exampleNumber>71171234</exampleNumber>
- </pager>
- <premiumRate>
- <nationalNumberPattern>
- 50(?:
- 0(?:
- 3[1679]|
- 4\d
- )|
- [169]\d{2}|
- 7[06]\d
- )\d{3}
- </nationalNumberPattern>
- <exampleNumber>50031234</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Mauritius -->
- <!-- http://www.itu.int/oth/T0202000088/en - covers mobile only -->
- <!-- http://www.icta.mu/telecommunications/numbering.htm -->
- <territory id="MU" countryCode="230" internationalPrefix="0(?:[2-7]0|33)"
- preferredInternationalPrefix="020">
- <!-- There is a proposal to change this to 8 digits - this is supposed to happen August 2010,
- and 7 digit numbers will be phased out by 1 November 2010. Update Aug 9th: Changeover
- postponed to indeterminate later date. -->
- <availableFormats>
- <numberFormat pattern="([2-9]\d{2})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Wireless local loop numbers are considered to be fixed, since there is almost no
- roaming capability. -->
- <nationalNumberPattern>
- (?:
- 2(?:
- [034789]\d|
- 1[0-8]|
- 2[0-79]
- )|
- 4(?:
- [013-8]\d|
- 2[4-7]
- )|
- [56]\d{2}|
- 8(?:
- 14|
- 3[129]
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>2012345</exampleNumber>
- </fixedLine>
- <mobile>
- <!--Adding 92 as SMS messages have been successfully sent to this prefix. -->
- <nationalNumberPattern>
- (?:
- 25\d|
- 4(?:
- 2[12389]|
- 9\d
- )|
- 7\d{2}|
- 87[15-7]|
- 9[1-8]\d
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>2512345</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80[012]\d{4}</nationalNumberPattern>
- <exampleNumber>8001234</exampleNumber>
- </tollFree>
- <!-- These may be either shared cost or premium rate - they don't differentiate between these
- in the plan. This is expected to change with the introduction of the new numbering plan
- in late 2010 - at that time, this will be updated appropriately. -->
- <premiumRate>
- <nationalNumberPattern>30\d{5}</nationalNumberPattern>
- <exampleNumber>3012345</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Maldives -->
- <!-- http://www.itu.int/oth/T0202000082/en -->
- <!-- www.dhiraagu.com.mv -->
- <territory id="MV" countryCode="960" internationalPrefix="0(?:0|19)"
- preferredInternationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <leadingDigits>
- [367]|
- 9(?:
- [1-9]|
- 0[1-9]
- )
- </leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>900</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [367]\d{6}|
- 9(?:
- 00\d{7}|
- \d{6}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- 300 has been added as prefixes from online searches, since the numbers seemed to be
- diallable. -->
- <nationalNumberPattern>
- (?:
- 3(?:
- 0[01]|
- 3[0-59]|
- )|
- 6(?:
- [567][02468]|
- 8[024689]|
- 90
- )
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>6701234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- 7[45] has been added as many numbers online have been found with this prefix. -->
- <nationalNumberPattern>
- (?:
- 7[3-9]|
- 9[6-9]
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>7712345</exampleNumber>
- </mobile>
- <pager>
- <nationalNumberPattern>781\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>7812345</exampleNumber>
- </pager>
- <premiumRate>
- <nationalNumberPattern>900\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9001234567</exampleNumber>
- </premiumRate>
- <shortCode>
- <nationalNumberPattern>
- 1(?:
- [19]0|
- 23
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3}</possibleNumberPattern>
- <exampleNumber>123</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Malawi -->
- <!-- http://www.itu.int/oth/T0202000080/en -->
- <!-- The plan doesn't state that a national prefix exists, but numbers found on the internet are
- consistent in having one. -->
- <territory id="MW" countryCode="265" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d)(\d{3})(\d{3})">
- <leadingDigits>[13-5]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(2\d{2})(\d{3})(\d{3})">
- <leadingDigits>2</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{4})(\d{4})">
- <leadingDigits>7</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{3,4})(\d{3,4})">
- <leadingDigits>[89]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <!-- According to the plan, the switch from 7 to 9 digits for mobile numbers happened in July
- 2009. However, online numbers don't seem to reflect this - even on the telephone company
- websites such as www.mw.zain.com. Allowing both for now. -->
- <generalDesc>
- <nationalNumberPattern>
- (?:
- [13-5]|
- [27]\d{2}|
- [89](?:
- \d{2}
- )?
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 1[2-9]|
- 21\d{2}
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>1234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- [3-5]|
- 77|
- 8(?:
- 8\d
- )? |
- 9(?:
- 9\d
- )?
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>991234567</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Mexico -->
- <!-- http://www.itu.int/oth/T020200008A/en -->
- <!-- http://en.wikipedia.org/wiki/%2B52 -->
- <!-- http://en.wikipedia.org/wiki/Premium-rate_telephone_number#Mexico -->
- <!-- http://en.wikipedia.org/wiki/Toll-free_telephone_number -->
- <territory id="MX" countryCode="52" internationalPrefix="0[09]"
- nationalPrefix="01"
- nationalPrefixForParsing="0[12]|04[45](\d{10})"
- nationalPrefixTransformRule="1$1"
- nationalPrefixFormattingRule="$NP $FG">
- <!-- When a number starts with 01 or 02, we remove the prefixes; when a number starts with 045
- or 046 followed by 10 digits, we replace the prefixes with 1. This way all the mobile
- numbers, regardless of whether they are written in international format (leading 1) or
- national format (leading 045/046), will be parsed into the same form. -->
- <availableFormats>
- <numberFormat pattern="([358]\d)(\d{4})(\d{4})">
- <leadingDigits>
- 33|
- 55|
- 81
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <intlNumberFormat pattern="([358]\d)(\d{4})(\d{4})">
- <leadingDigits>
- 33|
- 55|
- 81
- </leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- [2467]|
- 3[12457-9]|
- 5[89]|
- 8[02-9]|
- 9[0-35-9]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- [2467]|
- 3[12457-9]|
- 5[89]|
- 8[02-9]|
- 9[0-35-9]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="1([358]\d)(\d{4})(\d{4})">
- <leadingDigits>
- 1(?:
- 33|
- 55|
- 81
- )
- </leadingDigits>
- <format>045 $1 $2 $3</format>
- </numberFormat>
- <intlNumberFormat pattern="(1)([358]\d)(\d{4})(\d{4})">
- <leadingDigits>
- 1(?:
- 33|
- 55|
- 81
- )
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </intlNumberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="1(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 1(?:
- [2467]|
- 3[12457-9]|
- 5[89]|
- 8[2-9]|
- 9[1-35-9]
- )
- </leadingDigits>
- <format>045 $1 $2 $3</format>
- </numberFormat>
- <intlNumberFormat pattern="(1)(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- 1(?:
- [2467]|
- 3[12457-9]|
- 5[89]|
- 8[2-9]|
- 9[1-35-9]
- )
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </intlNumberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{9,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- http://en.wikipedia.org/wiki/Area_codes_in_Mexico_by_code -->
- <nationalNumberPattern>
- (?:
- 33|
- 55|
- 81
- )\d{8}|
- (?:
- 2(?:
- 2[2-9]|
- 3[1-35-8]|
- 4[13-9]|
- 7[1-689]|
- 8[1-58]|
- 9[467]
- )|
- 3(?:
- 1[1-79]|
- [2458][1-9]|
- 7[1-8]|
- 9[1-5]
- )|
- 4(?:
- 1[1-57-9]|
- [24-6][1-9]|
- [37][1-8]|
- 8[1-35-9]|
- 9[2-689]
- )|
- 5(?:
- 88|
- 9[1-79]
- )|
- 6(?:
- 1[2-68]|
- [234][1-9]|
- 5[1-3689]|
- 6[12457-9]|
- 7[1-7]|
- 8[67]|
- 9[4-8]
- )|
- 7(?:
- [13467][1-9]|
- 2[1-8]|
- 5[13-9]|
- 8[1-69]|
- 9[17]
- )|
- 8(?:
- 2[13-689]|
- 3[1-6]|
- 4[124-6]|
- 6[1246-9]|
- 7[1-378]|
- 9[12479]
- )|
- 9(?:
- 1[346-9]|
- 2[1-4]|
- 3[2-46-8]|
- 5[1348]|
- [69][1-9]|
- 7[12]|
- 8[1-8]
- )
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- <exampleNumber>2221234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 1(?:
- (?:
- 33|
- 55|
- 81
- )\d{8}|
- (?:
- 2(?:
- 2[2-9]|
- 3[1-35-8]|
- 4[13-9]|
- 7[1-689]|
- 8[1-58]|
- 9[467]
- )|
- 3(?:
- 1[1-79]|
- [2458][1-9]|
- 7[1-8]|
- 9[1-5]
- )|
- 4(?:
- 1[1-57-9]|
- [24-6][1-9]|
- [37][1-8]|
- 8[1-35-9]|
- 9[2-689]
- )|
- 5(?:
- 88|
- 9[1-79]
- )|
- 6(?:
- 1[2-68]|
- [2-4][1-9]|
- 5[1-3689]|
- 6[12457-9]|
- 7[1-7]|
- 8[67]|
- 9[4-8]
- )|
- 7(?:
- [13467][1-9]|
- 2[1-8]|
- 5[13-9]|
- 8[1-69]|
- 9[17]
- )|
- 8(?:
- 2[13-689]|
- 3[1-6]|
- 4[124-6]|
- 6[1246-9]|
- 7[1-378]|
- 9[12479]
- )|
- 9(?:
- 1[346-9]|
- 2[1-4]|
- 3[2-46-8]|
- 5[1348]|
- [69][1-9]|
- 7[12]|
- 8[1-8]
- )
- )\d{7}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>12221234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9001234567</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Malaysia -->
- <!-- http://en.wikipedia.org/wiki/%2B60 -->
- <!-- http://www.skmm.gov.my/what_we_do/numbering/index.asp -->
- <territory id="MY" countryCode="60" internationalPrefix="00"
- nationalPrefix="0">
- <availableFormats>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="([4-79])(\d{3})(\d{4})">
- <leadingDigits>[4-79]</leadingDigits>
- <format>$1-$2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="(3)(\d{4})(\d{4})">
- <leadingDigits>3</leadingDigits>
- <format>$1-$2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="([18]\d)(\d{3})(\d{3,4})">
- <leadingDigits>
- 1[0-46-9][1-9]|
- 8
- </leadingDigits>
- <format>$1-$2 $3</format>
- </numberFormat>
- <numberFormat pattern="(1)([36-8]00)(\d{2})(\d{4})">
- <leadingDigits>1[36-8]0</leadingDigits>
- <format>$1-$2-$3-$4</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="(154)(\d{3})(\d{4})">
- <leadingDigits>15</leadingDigits>
- <format>$1-$2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[13-9]\d{7,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 3\d{2}|
- [4-79]\d|
- 8[2-9]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- <exampleNumber>312345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>1[0-46-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>123456789</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>1[38]00\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1300123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>1600\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1600123456</exampleNumber>
- </premiumRate>
- <personalNumber>
- <nationalNumberPattern>1700\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1700123456</exampleNumber>
- </personalNumber>
- <voip>
- <nationalNumberPattern>154\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1541234567</exampleNumber>
- </voip>
- </territory>
-
- <!-- Mozambique -->
- <!-- http://www.itu.int/oth/T0202000091/en -->
- <territory id="MZ" countryCode="258" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="([28]\d)(\d{3})(\d{3,4})">
- <leadingDigits>
- 2|
- 8[24]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(80\d)(\d{3})(\d{3})">
- <leadingDigits>80</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[28]\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 2(?:
- [1346]\d|
- 5[0-2]|
- [78][12]|
- 93
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>21123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>8[24]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>821234567</exampleNumber>
- </mobile>
- <tollFree>
- <!-- Unsure of the length requirement on toll-free numbers, so using 9
- based on online examples. -->
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <!-- The plan suggests 801 and 802 numbers are shared-cost numbers, and numbers beginning with
- a 9 are premium rate, but no online examples can be found of any of these so they are
- omitted for the time-being. -->
- </territory>
-
- <!-- Namibia -->
- <!-- http://www.itu.int/oth/T0202000093/en -->
- <territory id="NA" countryCode="264" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(8\d)(\d{3})(\d{4})">
- <leadingDigits>8[125]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(6\d)(\d{2,3})(\d{4})">
- <leadingDigits>6</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(88)(\d{3})(\d{3})">
- <leadingDigits>88</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(870)(\d{3})(\d{3})">
- <leadingDigits>870</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[68]\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Includes VSAT service. -->
- <nationalNumberPattern>
- 6(?:
- 1(?:
- 17|
- 2(?:
- [0189]\d|
- [23-6]|
- 7\d?
- )|
- 3(?:
- 2\d|
- 3[378]
- )|
- 4[01]|
- 69|
- 7[014]
- )|
- 2(?:
- 17|
- 25|
- 5(?:
- [0-36-8]|
- 4\d?
- )|
- 69|
- 70
- )|
- 3(?:
- 17|
- 2(?:
- [0237]\d?|
- [14-689]
- )|
- 34|
- 6[29]|
- 7[01]|
- 81
- )|
- 4(?:
- 17|
- 2(?:
- [012]|
- 7?
- )|
- 4(?:
- [06]|
- 1\d
- )|
- 5(?:
- [01357]|
- [25]\d?
- )|
- 69|
- 7[01]
- )|
- 5(?:
- 17|
- 2(?:
- [0459]|
- [23678]\d?
- )|
- 69|
- 7[01]
- )|
- 6(?:
- 17|
- 2(?:
- 5|
- 6\d?
- )|
- 38|
- 42|
- 69|
- 7[01]
- )|
- 7(?:
- 17|
- 2(?:
- [569]|
- [234]\d?
- )|
- 3(?:
- 0\d?|
- [13]
- )|
- 69|
- 7[01]
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>612012345</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Includes the Switch CDMA Service. -->
- <nationalNumberPattern>
- (?:
- 60|
- 8[125]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>811234567</exampleNumber>
- </mobile>
- <premiumRate>
- <nationalNumberPattern>8701\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>870123456</exampleNumber>
- </premiumRate>
- <voip>
- <nationalNumberPattern>886\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>88612345</exampleNumber>
- </voip>
- <shortCode>
- <nationalNumberPattern>
- 1(?:
- 0111|
- \d{3}
- )|
- 9(?:
- 3111|
- \d{2}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,5}</possibleNumberPattern>
- <exampleNumber>93111</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- New Caledonia (Territoire français d'outre-mer) -->
- <territory id="NC" countryCode="687" internationalPrefix="00"
- nationalPrefix="0">
- </territory>
-
- <!-- Niger -->
- <!-- http://www.itu.int/oth/T020200009B/en -->
- <territory id="NE" countryCode="227" internationalPrefix="00" leadingZeroPossible="true">
- <availableFormats>
- <numberFormat pattern="([029]\d)(\d{2})(\d{2})(\d{2})">
- <leadingDigits>
- [29]|
- 09
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(08)(\d{3})(\d{3})">
- <leadingDigits>08</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[029]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Adding 20 61 from online numbers. -->
- <nationalNumberPattern>
- 2(?:
- 0(?:
- 20|
- 3[1-7]|
- 4[134]|
- 5[14]|
- 6[14578]|
- 7[1-578]
- )|
- 1(?:
- 4[145]|
- 5[14]|
- 6[14-68]|
- 7[169]|
- 88
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>20201234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Added 90 and 97 from online data. Zain have confirmed that they use the 97 prefix. -->
- <nationalNumberPattern>9[03467]\d{6}</nationalNumberPattern>
- <exampleNumber>93123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>08\d{6}</nationalNumberPattern>
- <exampleNumber>08123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>09\d{6}</nationalNumberPattern>
- <exampleNumber>09123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Norfolk Island -->
- <!-- http://www.itu.int/oth/T020200009D/en -->
- <!-- Including numbers for Australian Antarctic stations. -->
- <territory id="NF" countryCode="672" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{4})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{5})">
- <leadingDigits>3</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[13]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,6}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- ITU says all 3X numbers except 38 are fixed-line, but 3[3-79] numbers don't seem to
- connect after we tried calling them. -->
- <nationalNumberPattern>
- (?:
- 1(?:
- 06|
- 17|
- 28|
- 39
- )|
- 3[012]\d
- )\d{3}
- </nationalNumberPattern>
- <exampleNumber>106609</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>38\d{4}</nationalNumberPattern>
- <exampleNumber>381234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Nigeria -->
- <!-- http://www.itu.int/oth/T020200009C/en -->
- <territory id="NG" countryCode="234" internationalPrefix="009"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([129])(\d{3})(\d{3,4})">
- <leadingDigits>[129]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([3-8]\d)(\d{3})(\d{2,3})">
- <leadingDigits>
- [3-6]|
- 7(?:
- [1-79]|
- 0[1-9]
- )|
- 8[2-9]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([78]\d{2})(\d{3})(\d{3,4})">
- <leadingDigits>
- 70|
- 8[01]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([78]00)(\d{4})(\d{4,5})">
- <leadingDigits>[78]00</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([78]00)(\d{5})(\d{5,6})">
- <leadingDigits>[78]00</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(78)(\d{2})(\d{3})">
- <leadingDigits>78</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [1-69]\d{5,8}|
- [78]\d{5,13}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,14}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- [12]\d{6,7}|
- 9\d{7}|
- (?:
- 4[023568]|
- 5[02368]|
- 6[02-469]|
- 7[569]|
- 8[2-9]
- )\d{6}|
- (?:
- 4[47]|
- 5[14579]|
- 6[1578]|
- 7[0-357]
- )\d{5,6}|
- (?:
- 78|
- 41
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,9}</possibleNumberPattern>
- <exampleNumber>12345678</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- More 81X prefixes have been added based on online numbers. -->
- <nationalNumberPattern>
- (?:
- 70(?:
- [3-9]\d|
- 2[1-9]
- )|
- 8(?:
- 0[2-9]|
- 1[23689]
- )\d
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8021234567</exampleNumber>
- </mobile>
- <!-- Info on these numbers from http://www.alphatechnologieslimited.com. -->
- <tollFree>
- <nationalNumberPattern>800\d{7,11}</nationalNumberPattern>
- <possibleNumberPattern>\d{10,14}</possibleNumberPattern>
- <exampleNumber>80017591759</exampleNumber>
- </tollFree>
- <personalNumber>
- <nationalNumberPattern>700\d{7,11}</nationalNumberPattern>
- <possibleNumberPattern>\d{10,14}</possibleNumberPattern>
- <exampleNumber>7001234567</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Nicaragua -->
- <!-- http://www.itu.int/oth/T020200009A/en -->
- <territory id="NI" countryCode="505" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{4})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[128]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>2\d{7}</nationalNumberPattern>
- <exampleNumber>21234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>8\d{7}</nationalNumberPattern>
- <exampleNumber>81234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>1800\d{4}</nationalNumberPattern>
- <exampleNumber>18001234</exampleNumber>
- </tollFree>
- </territory>
-
- <!-- Netherlands -->
- <!-- http://en.wikipedia.org/wiki/%2B31 -->
- <!-- http://www2.opta.nl/asp/en/numbers/ -->
- <territory id="NL" countryCode="31" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([1-578]\d)(\d{3})(\d{4})">
- <leadingDigits>
- 1[035]|
- 2[0346]|
- 3[03568]|
- 4[0356]|
- 5[0358]|
- 7|
- 8[458]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([1-5]\d{2})(\d{3})(\d{3})">
- <leadingDigits>
- 1[16-8]|
- 2[259]|
- 3[124]|
- 4[17-9]|
- 5[124679]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(6)(\d{8})">
- <leadingDigits>6</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([89]0\d)(\d{4,7})">
- <leadingDigits>
- 80|
- 9
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{6,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 1[0135-8]|
- 2[02-69]|
- 3[0-68]|
- 4[0135-9]|
- [57]\d|
- 8[478]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>101234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>6[1-58]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>612345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{4,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- <exampleNumber>8001234</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90[069]\d{4,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- <exampleNumber>9001234</exampleNumber>
- </premiumRate>
- <voip>
- <nationalNumberPattern>85\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </voip>
- </territory>
-
- <!-- Norway -->
- <!-- Metadata (excluding fixed-line) shared with Svalbard. -->
- <!-- http://www.npt.no/pt_internet/numsys/E.164.pdf -->
- <territory id="NO" countryCode="47" internationalPrefix="00" leadingZeroPossible="true"
- mainCountryForCode="true">
- <availableFormats>
- <numberFormat pattern="([489]\d{2})(\d{2})(\d{3})">
- <leadingDigits>[489]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([235-7]\d)(\d{2})(\d{2})(\d{2})">
- <leadingDigits>[235-7]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- 0\d{4}|
- [2-9]\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Excludes Svalbard fixed-line numbers. -->
- <nationalNumberPattern>
- (?:
- 2[1-4]|
- 3[1-3578]|
- 5[1-35-7]|
- 6[1-4679]|
- 7[0-8]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>21234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 4[015-8]|
- 9\d
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>41234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80[01]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>82[09]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>82012345</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>
- 810(?:
- 0[0-6]|
- [2-8]\d
- )\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>81021234</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>880\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>88012345</exampleNumber>
- </personalNumber>
- <uan>
- <!-- Includes some 810 local-rate numbers, and long-distance rate numbers. -->
- <nationalNumberPattern>
- 0\d{4}|
- 81(?:
- 0(?:
- 0[7-9]|
- 1\d
- )|
- 5\d{2}
- )\d{3}
- </nationalNumberPattern>
- <exampleNumber>01234</exampleNumber>
- </uan>
- </territory>
-
- <!-- Nepal -->
- <!-- http://www.itu.int/oth/T0202000095/en -->
- <!-- http://www.ntc.net.np/mobile/mob_postpaid_number_scheme.php -->
- <territory id="NP" countryCode="977" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(1)([4-6]\d{3})(\d{3})">
- <leadingDigits>1[4-6]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{3})">
- <leadingDigits>
- 1[01]|
- [2-8]|
- 9[1-79]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- Format is from http://www.fco.gov.uk/en/travel-and-living-abroad/travel-advice-by-country/country-profile/asia-oceania/nepal/ -->
- <numberFormat pattern="(98[45])(\d{3})(\d{4})">
- <leadingDigits>98</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [1-8]\d{5,7}|
- 98[45]\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 1[014-6]|
- 2[13-79]|
- 3[135-8]|
- 4[146-9]|
- 5[135-7]|
- 6[13-9]|
- 7[15-9]|
- 8[1-4679]|
- 9[1-79]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,8}</possibleNumberPattern>
- <exampleNumber>14567890</exampleNumber>
- </fixedLine>
- <!-- There is no definitive source of information for mobile numbers in Nepal. The infomation
- here is collected by searching the Internet. -->
- <mobile>
- <nationalNumberPattern>98[45]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9841234567</exampleNumber>
- </mobile>
- <!-- No information on other types of phone numbers for Nepal has been found. -->
- </territory>
-
- <!-- Nauru -->
- <!-- http://www.itu.int/oth/T0202000094/en -->
- <territory id="NR" countryCode="674" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[458]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 444|
- 888
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>4441234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>55[5-9]\d{4}</nationalNumberPattern>
- <exampleNumber>5551234</exampleNumber>
- </mobile>
- <shortCode>
- <nationalNumberPattern>
- 1(?:
- 1[012]|
- 23|
- 92
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3}</possibleNumberPattern>
- <exampleNumber>110</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Niue -->
- <!-- http://www.itu.int/oth/T02020000EC/en -->
- <territory id="NU" countryCode="683" internationalPrefix="00">
- <!-- Numbers are always formatted as a block. -->
- <generalDesc>
- <nationalNumberPattern>[1-5]\d{3}</nationalNumberPattern>
- <possibleNumberPattern>\d{4}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Putting FWT (fixed-wireless-terminals) numbers here too. -->
- <nationalNumberPattern>[34]\d{3}</nationalNumberPattern>
- <exampleNumber>4002</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[125]\d{3}</nationalNumberPattern>
- <exampleNumber>1234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- New Zealand -->
- <!-- http://www.itu.int/oth/T0202000099/en -->
- <!-- Includes Ross Dependency, Antarctica -->
- <!-- Does not currently support 083 "Enhanced voice services", New Zealand direct service
- numbers and 050 "Nation-Wide Service". -->
- <territory id="NZ" countryCode="64" internationalPrefix="0(?:0|161)"
- preferredInternationalPrefix="00" nationalPrefix="0"
- nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([34679])(\d{3})(\d{4})">
- <leadingDigits>
- [3467]|
- 9[1-9]
- </leadingDigits>
- <format>$1-$2 $3</format>
- </numberFormat>
- <!-- Mobile numbers do not have exclusive leading digits - formatting depends on number
- length. -->
- <!-- Vodafone numbers are formatted with 021 separated. -->
- <numberFormat pattern="(21)(\d{4})(\d{3,4})">
- <leadingDigits>21</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- Adding in the toll free numbers here as well since they follow the same format. -->
- <numberFormat pattern="([2589]\d{2})(\d{3})(\d{3,4})">
- <leadingDigits>
- 2[0247-9]|
- 5|
- [89]00
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- Vodafone and Orcon numbers can also be 8 digits (without leading 0), and these are
- formatted differently. -->
- <numberFormat pattern="(\d{2})(\d{3})(\d{3,4})">
- <leadingDigits>2[0169]|86</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- Antarctica -->
- <numberFormat pattern="(24099)(\d{3})">
- <leadingDigits>240</leadingDigits>
- <leadingDigits>2409</leadingDigits>
- <leadingDigits>24099</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- 6[235-9]\d{6}|
- [2-57-9]\d{7,10}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 3[2-79]|
- [49][2-689]|
- 6[235-9]|
- 7[2-589]
- )\d{6}|
- 24099\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- <exampleNumber>32345678</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Includes mobile radio service numbers. -->
- <nationalNumberPattern>
- 2(?:
- [079]\d{7}|
- 1(?:
- 0\d{5,7}|
- [12]\d{5,6}|
- [3-9]\d{5}
- )|
- [28]\d{7,8}|
- 4[1-9]\d{6}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8,10}</possibleNumberPattern>
- <exampleNumber>211234567</exampleNumber>
- </mobile>
- <pager>
- <nationalNumberPattern>[28]6\d{6,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- <exampleNumber>26123456</exampleNumber>
- </pager>
- <!-- These are the toll free patterns used, by Telecom and Telstra/Clear, but they are
- referred to as 'Value-added service' in the phone plan for some reason. 85 numbers are
- not covered, as telecom companies don't seem to support them yet. -->
- <tollFree>
- <nationalNumberPattern>
- 508\d{6,7}|
- 80\d{6,8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8,10}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90\d{7,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{9,11}</possibleNumberPattern>
- <exampleNumber>900123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Oman -->
- <!-- http://www.itu.int/oth/T020200009F/en -->
- <territory id="OM" countryCode="968" internationalPrefix="00" >
- <availableFormats>
- <numberFormat pattern="(2\d)(\d{6})">
- <leadingDigits>2</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(9\d{3})(\d{4})">
- <leadingDigits>9</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([58]00)(\d{4,6})">
- <leadingDigits>[58]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- (?:
- 2[3-6]|
- 5|
- 9[2-9]
- )\d{6}|
- 800\d{5,6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>2[3-6]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>23123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>9[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>92123456</exampleNumber>
- </mobile>
- <tollFree>
- <!-- Link to document about toll-free numbers on www.tra.gov.om, which suggests they should
- be 8007 followed by 4 digits. However, the only examples I can find, including the
- customer help line for the main telephony company there (omantel), is 8007 followed by
- 5 digits, so am allowing both for now to be on the safe side. 500 numbers seem to offer
- international toll-free dialing numbers - +968 500 1300 for international help desk for
- omantel, for example. -->
- <nationalNumberPattern>
- 8007\d{4,5}|
- 500\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- <exampleNumber>80071234</exampleNumber>
- </tollFree>
- <!-- No premiumRate information can be found. -->
- </territory>
-
- <!-- Panama -->
- <territory id="PA" countryCode="507" internationalPrefix="00"
- nationalPrefix="0">
- </territory>
-
- <!-- Peru -->
- <!-- http://www.itu.int/oth/T02020000A6/en -->
- <!-- http://en.wikipedia.org/wiki/+51 -->
- <territory id="PE" countryCode="51" internationalPrefix="19(?:1[124]|77|90)00"
- nationalPrefix="0" nationalPrefixFormattingRule="($FG)"
- preferredExtnPrefix=" Anexo ">
- <availableFormats>
- <numberFormat pattern="(1)(\d{7})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([4-8]\d)(\d{6})">
- <leadingDigits>[4-8]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <!-- Formatting from common usage found on the internet, supported by ITU doc. -->
- <numberFormat pattern="(9\d{2})(\d{3})(\d{3})"
- nationalPrefixFormattingRule="$FG">
- <leadingDigits>9</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[14-9]\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 1\d|
- 4[1-4]|
- 5[1-46]|
- 6[1-7]|
- 7[2-46]|
- 8[2-4]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,8}</possibleNumberPattern>
- <exampleNumber>11234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>9\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>912345678</exampleNumber>
- </mobile>
- </territory>
-
- <!-- French Polynesia (Tahiti) (Territoire français d'outre-mer) -->
- <territory id="PF" countryCode="689" internationalPrefix="00">
- </territory>
-
- <!-- Papua New Guinea -->
- <!-- http://www.itu.int/oth/T02020000A4/en -->
- <!-- http://en.wikipedia.org/wiki/%2B675 -->
- <territory id="PG" countryCode="675" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <leadingDigits>[1-689]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(7[1-36]\d)(\d{2})(\d{3})">
- <leadingDigits>7[1-36]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{6,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Fixed line patterns are from the numbering plan, with additions for 4XX since many
- numbers in the yellow pages seem to be outside the 47X range prescribed by the plan.
- The same applies to extra 64X numbers. -->
- <nationalNumberPattern>
- (?:
- 3\d{2}|
- 4[257]\d|
- 5[34]\d|
- 6(?:
- 29|
- 4[1-9]
- )|
- 85[02-46-9]|
- 9[78]\d
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>3123456</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Mobile number patterns from the numbering plan are included here,
- as well as 68x from wikipedia. -->
- <nationalNumberPattern>
- (?:
- 68|
- 7(?:
- [126]\d|
- 3[1-9]
- )
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- <exampleNumber>6812345</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>180\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>1801234</exampleNumber>
- </tollFree>
- <voip>
- <!-- VSAT prefixes are here. -->
- <nationalNumberPattern>275\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>2751234</exampleNumber>
- </voip>
- </territory>
-
- <!-- Philippines -->
- <!-- http://en.wikipedia.org/wiki/%2B63 -->
- <territory id="PH" countryCode="63" internationalPrefix="00"
- nationalPrefix="0">
- <availableFormats>
- <!--Area code separated from number. Area codes found here:
- http://en.wikipedia.org/wiki/Telecommunications_in_the_Philippines#Area_Codes -->
- <numberFormat nationalPrefixFormattingRule="($NP$FG)"
- pattern="(2)(\d{3})(\d{4})">
- <leadingDigits>2</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="($NP$FG)"
- pattern="(\d{4})(\d{5})">
- <leadingDigits>
- 3(?:
- 23|
- 39|
- 46
- )|
- 4(?:
- 2[3-6]|
- [35]9|
- 4[26]|
- 76
- )|
- 5(?:
- 22|
- 44
- )|
- 642|
- 8(?:
- 62|
- 8[245]
- )
- </leadingDigits>
- <leadingDigits>
- 3(?:
- 230|
- 397|
- 461
- )|
- 4(?:
- 2(?:
- 35|
- [46]4|
- 51
- )|
- 396|
- 4(?:
- 22|
- 63
- )|
- 59[347]|
- 76[15]
- )|
- 5(?:
- 221|
- 446
- )|
- 642[23]|
- 8(?:
- 622|
- 8(?:
- [24]2|
- 5[13]
- )
- )
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="($NP$FG)"
- pattern="(\d{5})(\d{4})">
- <leadingDigits>
- 346|
- 4(?:
- 27|
- 9[35]
- )|
- 883
- </leadingDigits>
- <leadingDigits>
- 3469|
- 4(?:
- 279|
- 9(?:
- 30|
- 56
- )
- )|
- 8834
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <!-- This rule is a fallback for the more specific area codes. -->
- <numberFormat nationalPrefixFormattingRule="($NP$FG)"
- pattern="([3-8]\d)(\d{3})(\d{4})">
- <leadingDigits>[3-8]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG"
- pattern="(9\d{2})(\d{3})(\d{4})">
- <leadingDigits>9</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- Formatting from http://www.uniontelecard.com/calling-guides/philippines/guide1.aspx -->
- <numberFormat pattern="(1800)(\d{3})(\d{4})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(1800)(\d{1,2})(\d{3})(\d{4})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [2-9]\d{7,9}|
- 1800\d{7,9}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,13}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2|
- 3[2-68]|
- 4[2-9]|
- 5[2-6]|
- 6[2-58]|
- 7[24578]|
- 8[2-8]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- <exampleNumber>21234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 9(?:
- 0[5-9]|
- 1[025-9]|
- 2[0-36-9]|
- 3[0235-9]|
- 7[349]|
- [89]9
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9051234567</exampleNumber>
- </mobile>
- <!-- Information on toll-free numbers collected from searching the internet -->
- <tollFree>
- <nationalNumberPattern>1800\d{7,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{11,13}</possibleNumberPattern>
- <exampleNumber>180012345678</exampleNumber>
- </tollFree>
- <!-- No information can be found about other types of numbers (such as premium rate) in the
- Philippines. -->
- </territory>
-
- <!-- Pakistan -->
- <!-- http://www.itu.int/oth/T02020000A1/en -->
- <!-- http://en.wikipedia.org/wiki/%2B92 -->
- <territory id="PK" countryCode="92" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)">
- <availableFormats>
- <!-- Universal Access Numbers (UAN) number format patterns first, so that these numbers are
- formatted nicely by the AYTF. -->
- <numberFormat pattern="(\d{2})(111)(\d{3})(\d{3})">
- <leadingDigits>
- (?:
- 2[125]|
- 4[0-246-9]|
- 5[1-35-7]|
- 6[1-8]|
- 7[14]|
- 8[16]|
- 91
- )1
- </leadingDigits>
- <leadingDigits>
- (?:
- 2[125]|
- 4[0-246-9]|
- 5[1-35-7]|
- 6[1-8]|
- 7[14]|
- 8[16]|
- 91
- )11
- </leadingDigits>
- <leadingDigits>
- (?:
- 2[125]|
- 4[0-246-9]|
- 5[1-35-7]|
- 6[1-8]|
- 7[14]|
- 8[16]|
- 91
- )111
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(111)(\d{3})(\d{3})">
- <leadingDigits>
- 2[349]|
- 45|
- 54|
- 60|
- 72|
- 8[2-5]|
- 9[2-9]
- </leadingDigits>
- <leadingDigits>
- (?:
- 2[349]|
- 45|
- 54|
- 60|
- 72|
- 8[2-5]|
- 9[2-9]
- )\d1
- </leadingDigits>
- <leadingDigits>
- (?:
- 2[349]|
- 45|
- 54|
- 60|
- 72|
- 8[2-5]|
- 9[2-9]
- )\d11
- </leadingDigits>
- <leadingDigits>
- (?:
- 2[349]|
- 45|
- 54|
- 60|
- 72|
- 8[2-5]|
- 9[2-9]
- )\d111
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{7,8})">
- <leadingDigits>
- (?:
- 2[125]|
- 4[0-246-9]|
- 5[1-35-7]|
- 6[1-8]|
- 7[14]|
- 8[16]|
- 91
- )[2-9]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{6,7})">
- <leadingDigits>
- 2[349]|
- 45|
- 54|
- 60|
- 72|
- 8[2-5]|
- 9[2-9]
- </leadingDigits>
- <leadingDigits>
- (?:
- 2[349]|
- 45|
- 54|
- 60|
- 72|
- 8[2-5]|
- 9[2-9]
- )\d[2-9]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(3\d{2})(\d{7})" nationalPrefixFormattingRule="$NP$FG">
- <leadingDigits>3</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([15]\d{3})(\d{5,6})">
- <leadingDigits>
- 58[12]|
- 1
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <!-- This is from online examples. -->
- <numberFormat pattern="(586\d{2})(\d{5})">
- <leadingDigits>586</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([89]00)(\d{3})(\d{2})" nationalPrefixFormattingRule="$NP$FG">
- <leadingDigits>[89]00</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <!-- This is horribly complex because the country code is 92, and several area codes start
- with 92, and the number length is widely variable. -->
- <nationalNumberPattern>
- 1\d{8}|
- [2-8]\d{5,11}|
- 9(?:
- [013-9]\d{4,9}|
- 2\d(?:
- 111\d{6}|
- \d{3,7}
- )
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,12}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- The subscriber number length is not well defined for some area codes. From online
- examples, we have come up with a heuristic that for 3-digit area codes, the subscriber
- number will be 6 or 7 digits - for 2-digit area codes it will be 7, with the exceptions
- of Karachi and Lahore (both 8). -->
- <nationalNumberPattern>
- (?:
- 21|
- 42
- )[2-9]\d{7}|
- (?:
- 2[25]|
- 4[0146-9]|
- 5[1-35-7]|
- 6[1-8]|
- 7[14]|
- 8[16]|
- 91
- )[2-9]\d{6}|
- (?:
- 2(?:
- 3[2358]|
- 4[2-4]|
- 9[2-8]
- )|
- 45[3479]|
- 54[2-467]|
- 60[468]|
- 72[236]|
- 8(?:
- 2[2-689]|
- 3[23578]|
- 4[3478]|
- 5[2356]
- )|
- 9(?:
- 1|
- 2[2-8]|
- 3[27-9]|
- 4[2-6]|
- 6[3569]|
- 9[25-8]
- )
- )[2-9]\d{5,6}|
- 58[126]\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- <exampleNumber>2123456789</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding 347 as SMSs have been successfully sent to these numbers and numbers can be
- found online with these prefixes. -->
- <nationalNumberPattern>
- 3(?:
- 0\d|
- 1[2-5]|
- 2[1-3]|
- 3[1-6]|
- 4[2-7]|
- 64
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>3012345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>90012345</exampleNumber>
- </premiumRate>
- <!-- These are referred to as UPT numbers in the plan. -->
- <personalNumber>
- <nationalNumberPattern>122\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <!-- The example number here is the test number from the plan. -->
- <exampleNumber>122044444</exampleNumber>
- </personalNumber>
- <uan>
- <!-- Data on what a UAN is is hard to come by. http://www.ptcl.com.pk has information under
- http://www.ptcl.com.pk/contentb.php?NID=143#uan - which defines their format - but not
- what type of number they are. We exclude Azad Jammu, Kashmir and Northern Areas here
- since no online example UANs can be found, and they have an "access code" at the start,
- making it difficult to guess what a UAN in these areas would look like. -->
- <nationalNumberPattern>
- (?:
- 2(?:
- [125]|
- 3[2358]|
- 4[2-4]|
- 9[2-8]
- )|
- 4(?:
- [0-246-9]|
- 5[3479]
- )|
- 5(?:
- [1-35-7]|
- 4[2-467]
- )|
- 6(?:
- [1-8]|
- 0[468]
- )|
- 7(?:
- [14]|
- 2[236]
- )|
- 8(?:
- [16]|
- 2[2-689]|
- 3[23578]|
- 4[3478]|
- 5[2356]
- )|
- 9(?:
- 1|
- 22|
- 3[27-9]|
- 4[2-6]|
- 6[3569]|
- 9[2-7]
- )
- )111\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{11,12}</possibleNumberPattern>
- <exampleNumber>21111825888</exampleNumber>
- </uan>
- </territory>
-
- <!-- Poland -->
- <!-- http://en.wikipedia.org/wiki/%2B48 -->
- <!--
- http://www.uke.gov.pl/uke/index.jsp?place=Lead24&news_cat_id=277&news_id=3791&layout=9&page=text
- (in Polish) -->
- <territory id="PL" countryCode="48" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{3})(\d{2})(\d{2})">
- <leadingDigits>
- [124]|
- 3[2-4]|
- 5[24-689]|
- 6[1-3578]|
- 7[14-7]|
- 8[1-79]|
- 9[145]
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <!-- We are formatting 70 numbers as per mobile numbers, based on information from some
- Poles that this is more usual. -->
- <numberFormat pattern="(\d{3})(\d{3})(\d{3})">
- <leadingDigits>
- 39|
- 5[013]|
- 6[069]|
- 7[0289]|
- 8[08]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 1[2-8]|
- 2[2-59]|
- 3[2-4]|
- 4[1-468]|
- 5[24-689]|
- 6[1-3578]|
- 7[14-7]|
- 8[1-79]|
- 9[145]
- )\d{7}
- </nationalNumberPattern>
- <exampleNumber>123456789</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 5[013]|
- 6[069]|
- 7[289]|
- 88
- )\d{7}
- </nationalNumberPattern>
- <exampleNumber>512345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>70\d{7}</nationalNumberPattern>
- <exampleNumber>701234567</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>801\d{6}</nationalNumberPattern>
- <exampleNumber>801234567</exampleNumber>
- </sharedCost>
- <voip>
- <nationalNumberPattern>39\d{7}</nationalNumberPattern>
- <exampleNumber>391234567</exampleNumber>
- </voip>
- </territory>
-
- <!-- Saint Pierre and Miquelon (Collectivité territoriale de la République française) -->
- <territory id="PM" countryCode="508" internationalPrefix="00"
- nationalPrefix="0">
- </territory>
-
- <!-- Puerto Rico -->
- <!-- http://www.itu.int/oth/T02020000AA/en -->
- <territory id="PR" countryCode="1" leadingDigits="787|939"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[5789]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 787|
- 939
- )[2-9]\d{6}
- </nationalNumberPattern>
- <exampleNumber>7872345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 787|
- 939
- )[2-9]\d{6}
- </nationalNumberPattern>
- <exampleNumber>7872345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002345678</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002345678</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Palestinian Authority -->
- <!-- http://en.wikipedia.org/wiki/%2B970 -->
- <!-- http://www.wtng.info/wtng-970-ps.html -->
- <!-- http://www.paltel.ps -->
- <!-- Palestinian phone numbers can be reached through the Israeli country code (972) in addition
- to the Palestinian country code (970) and so Palestinian landlines and mobile lines are a
- subset of the Israeli formats. -->
- <territory id="PS" countryCode="970" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([2489])(2\d{2})(\d{4})">
- <leadingDigits>[2489]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(5[69]\d)(\d{3})(\d{3})">
- <leadingDigits>5</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="(1[78]00)(\d{3})(\d{3})">
- <leadingDigits>1[78]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- 4 and 5 digit premium numbers will be formatted as one block by default. -->
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [24589]\d{7,8}|
- 1(?:
- [78]\d{8}|
- [49]\d{2,3}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{4,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 22[234789]|
- 42[45]|
- 82[01458]|
- 92[369]
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- <exampleNumber>22234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>5[69]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>599123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>1800\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- According to Paltel, premium numbers are 14xx and 19xxx -->
- <nationalNumberPattern>
- 1(?:
- 4|
- 9\d
- )\d{2}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{4,5}</possibleNumberPattern>
- <exampleNumber>19123</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>1700\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1700123456</exampleNumber>
- </sharedCost>
- </territory>
-
- <!-- Portugal -->
- <!-- http://www.anacom.pt/render.jsp?categoryId=279098 -->
- <territory id="PT" countryCode="351" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="([2-46-9]\d{2})(\d{3})(\d{3})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-46-9]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 2(?:
- [12]\d|
- [35][1-689]|
- 4[1-59]|
- 6[1-35689]|
- 7[1-9]|
- 8[1-69]|
- 9[1256]
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>212345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 9(?:
- [136]\d{2}|
- 2[124-79]\d|
- 4(?:
- 80|
- 9\d
- )
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>912345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 4\d{8}|
- 80[02]\d{6}
- </nationalNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>71\d{7}</nationalNumberPattern>
- <exampleNumber>712345678</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>808\d{6}</nationalNumberPattern>
- <exampleNumber>808123456</exampleNumber>
- </sharedCost>
- <voip>
- <nationalNumberPattern>30\d{7}</nationalNumberPattern>
- <exampleNumber>301234567</exampleNumber>
- </voip>
- </territory>
-
- <!-- Palau -->
- <territory id="PW" countryCode="680" internationalPrefix="011">
- </territory>
-
- <!-- Paraguay -->
- <territory id="PY" countryCode="595" internationalPrefix="002"
- nationalPrefix="0">
- </territory>
-
- <!-- Qatar -->
- <!-- http://www.itu.int/oth/T02020000AB/en -->
- <!-- http://wtng.info/wtng-qq.html -->
- <territory id="QA" countryCode="974" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(8\d{2})(\d{4})">
- <leadingDigits>8</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([3-7]\d{3})(\d{4})">
- <leadingDigits>[3-7]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[3-8]\d{6,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>44\d{6}</nationalNumberPattern>
- <exampleNumber>44123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 33|
- 55|
- 66|
- 77
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>33123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{4}</nationalNumberPattern>
- <exampleNumber>8001234</exampleNumber>
- </tollFree>
- <!-- No premiumRate information can be found. -->
- </territory>
-
- <!-- Réunion (French Departments and Territories in the Indian Ocean) -->
- <!-- Note this shares the same country code as La Mayotte and French Southern Territories, and
- the formatting patterns here are used by all of them. -->
- <!-- http://www.itu.int/oth/T020200004B/en -->
- <territory id="RE" countryCode="262" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"
- leadingDigits="262|6[49]|8" mainCountryForCode="true" >
- <availableFormats>
- <numberFormat pattern="([268]\d{2})(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[268]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- 0876 numbers are mentioned in the plan, but none in use can be found. -->
- <nationalNumberPattern>262\d{6}</nationalNumberPattern>
- <exampleNumber>262161234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 6(?:
- 9[23]|
- 47
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>692123456</exampleNumber>
- </mobile>
- <!-- 08* Numbers in Réunion are the same as those valid in France. -->
- <tollFree>
- <nationalNumberPattern>80\d{7}</nationalNumberPattern>
- <exampleNumber>801234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>89[1-37-9]\d{6}</nationalNumberPattern>
- <exampleNumber>891123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>
- 8(?:
- 1[019]|
- 2[0156]|
- 84|
- 90
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>810123456</exampleNumber>
- </sharedCost>
- </territory>
-
- <!-- Romania -->
- <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000AC0001MSWE.doc -->
- <!-- http://en.wikipedia.org/wiki/Romania_telephone_area_codes -->
- <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_Romania -->
- <!-- Extension prefix found online, confirmed by a Romanian. -->
- <territory id="RO" countryCode="40" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"
- preferredExtnPrefix=" int ">
- <availableFormats>
- <numberFormat pattern="([237]\d)(\d{3})(\d{4})">
- <leadingDigits>
- [23]1|
- 7
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{3})">
- <leadingDigits>
- [23][02-9]|
- [89]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[237-9]\d{8}</nationalNumberPattern>
- <!-- Although the ITU plan says the number plan is open, this was changed in 2008 according
- to wikipedia and people must dial the full number. For this reason the possible number
- pattern is restricted to 9 digits. -->
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[23][13-6]\d{7}</nationalNumberPattern>
- <exampleNumber>211234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[1-8]\d{7}</nationalNumberPattern>
- <exampleNumber>712345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90[036]\d{6}</nationalNumberPattern>
- <exampleNumber>900123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>801\d{6}</nationalNumberPattern>
- <exampleNumber>801123456</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>802\d{6}</nationalNumberPattern>
- <exampleNumber>802123456</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Serbia -->
- <!-- http://www.itu.int/oth/T02020000B9/en -->
- <territory id="RS" countryCode="381" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([23]\d{2})(\d{4,7})">
- <leadingDigits>
- (?:
- 2[389]|
- 39
- )0
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([1-4]\d)(\d{4,8})">
- <leadingDigits>
- 1|
- 2(?:
- [0-24-7]|
- [389][1-9]
- )|
- 3(?:
- [0-8]|
- 9[1-9]
- )|
- 42
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(6[0-689])(\d{3,10})">
- <leadingDigits>6</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([89]\d{2})(\d{3,6})">
- <leadingDigits>[89]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-46-9]\d{4,11}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,12}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[1-3]\d{6,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,10}</possibleNumberPattern>
- <exampleNumber>1012345</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>6[0-689]\d{3,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,12}</possibleNumberPattern>
- <exampleNumber>6012345</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{3,6}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- (?:
- 9[0-2]|
- 42
- )\d{4,7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- <exampleNumber>90012345</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Russian Federation -->
- <!-- http://www.itu.int/oth/T02020000AD/en -->
- <!-- http://en.wikipedia.org/wiki/%2B7 -->
- <territory id="RU" countryCode="7" internationalPrefix="8~10"
- nationalPrefix="8" nationalPrefixFormattingRule="$NP ($FG)"
- mainCountryForCode="true" >
- <availableFormats>
- <!-- Formatting from wikipedia, confirmed on Goverment websites such as
- http://www.minjust.ru/ru/structure/contact/. Contains formatting instructions for
- Kazakhstan as well. -->
- <numberFormat pattern="([3489]\d{2})(\d{3})(\d{2})(\d{2})">
- <leadingDigits>[34689]</leadingDigits>
- <format>$1 $2-$3-$4</format>
- </numberFormat>
- <numberFormat pattern="(7\d{2})(\d{3})(\d{4})">
- <leadingDigits>7</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[3489]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- The Ivanovo area code 493 was omitted on the official document, but this is still used
- in the yellow pages, and on their own website and is listed on wikipedia. This applies
- also to 395 (Irkutsk). Also including the 840 prefix for Abkhazia. -->
- <nationalNumberPattern>
- (?:
- 3(?:
- 0[12]|
- 4[1-35-79]|
- 5[1-3]|
- 8[1-58]|
- 9[0145]
- )|
- 4(?:
- 01|
- 1[1356]|
- 2[13467]|
- 7[1-5]|
- 8[1-7]|
- 9[1-689]
- )|
- 8(?:
- 1[1-8]|
- 2[01]|
- 3[13-6]|
- 4[0-8]|
- 5[15]|
- 6[1-35-7]|
- 7[1-37-9]
- )
- )\d{7}
- </nationalNumberPattern>
- <exampleNumber>3011234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>9\d{9}</nationalNumberPattern>
- <exampleNumber>9123456789</exampleNumber>
- </mobile>
- <tollFree>
- <!-- The metadata states that 804 numbers are UAN numbers, but
- teleum.ru/numbers/toll_free_804 states that they are now being offered as toll-free
- numbers. -->
- <nationalNumberPattern>80[04]\d{7}</nationalNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- Covers tele-voting numbers as well. -->
- <nationalNumberPattern>80[39]\d{7}</nationalNumberPattern>
- <exampleNumber>8091234567</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Rwanda -->
- <!-- http://www.rura.gov.rw/docs/RWANDA_NATIONAL_NUMBERING_PLAN.pdf -->
- <territory id="RW" countryCode="250" internationalPrefix="000"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="(25\d)(\d{3})(\d{3})">
- <leadingDigits>2</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([7-9]\d{2})(\d{3})(\d{3})">
- <leadingDigits>[7-9]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[27-9]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>25\d{7}</nationalNumberPattern>
- <exampleNumber>250123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[258]\d{7}</nationalNumberPattern>
- <exampleNumber>720123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{6}</nationalNumberPattern>
- <exampleNumber>900123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Saudi Arabia -->
- <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_Saudi_Arabia -->
- <!-- http://www.itu.int/oth/T02020000B7/en -->
- <territory id="SA" countryCode="966" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([1-467])(\d{3})(\d{4})">
- <leadingDigits>[1-467]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(9200)(\d{3})(\d{4})">
- <leadingDigits>9</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(5\d)(\d{3})(\d{4})">
- <leadingDigits>5</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(800)(\d{3})(\d{4})">
- <leadingDigits>80</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(8111)(\d{3})(\d{3})">
- <leadingDigits>81</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{7,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 1[24-7]|
- 2[24-8]|
- 3[35-8]|
- 4[34-68]|
- 6[2-5]|
- 7[235-7]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- <exampleNumber>12345678</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Including "Nomadic" numbers from the Telecom Company "Go" -->
- <nationalNumberPattern>
- (?:
- 5[013-69]\d|
- 8111
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- <exampleNumber>512345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>9200\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>92001234567</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Solomon Islands -->
- <territory id="SB" countryCode="677" internationalPrefix="00">
- </territory>
-
- <!-- Seychelles -->
- <!-- http://www.itu.int/oth/T02020000BA/en -->
- <!-- No evidence can be found that they still use their national prefix, so this is not
- currently supported. -->
- <territory id="SC" countryCode="248" internationalPrefix="0[0-2]"
- preferredInternationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{3})">
- <leadingDigits>
- [23578]|
- [46][0-35-9]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{3})(\d{3})">
- <leadingDigits>[46]4</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-8]\d{5,6}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Includes Fixed Cellular. We are putting Fixed Services numbers here for now, as we
- cannot find any evidence that they are more expensive to call than other Fixed Line
- services. ISDN and DID services are here too, since they seem to be also fixed-line
- phone numbers. -->
- <nationalNumberPattern>
- (?:
- 2(?:
- 1[78]|
- 2[14-69]|
- 3[2-4]|
- 4[1-36-8]|
- 6[167]|
- [89]\d
- )|
- 3(?:
- 2[1-6]|
- 4[4-6]|
- 55|
- 6[016]|
- 7\d|
- 8[0-589]|
- 9[0-5]
- )|
- 5(?:
- 5\d|
- 6[0-2]
- )|
- 6(?:
- 0[0-27-9]|
- 1[0-478]|
- 2[145]|
- 3[02-4]|
- 4[124]|
- 6[015]|
- 7\d|
- 8[1-3]
- )|
- 78[0138]
- )\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- <exampleNumber>217123</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 5(?:
- [1247-9]\d|
- 6[3-9]
- )|
- 7(?:
- [14679]\d|
- 2[1-9]|
- 8[24-79]
- )
- )\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- <exampleNumber>510123</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>8000\d{2}</nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- <exampleNumber>800000</exampleNumber>
- </tollFree>
- <voip>
- <nationalNumberPattern>
- (?:
- 44[1-3]|
- 647
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <exampleNumber>4410123</exampleNumber>
- </voip>
- </territory>
-
- <!-- Sudan -->
- <!-- http://www.itu.int/oth/T02020000C4/en -->
- <territory id="SD" countryCode="249" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{3})(\d{4})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[19]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Retaining previous prefix as 18 since it seems still to be used. -->
- <nationalNumberPattern>
- 1(?:
- [25]\d|
- 8[3567]
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>121231234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>9[1259]\d{7}</nationalNumberPattern>
- <exampleNumber>911231234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Sweden -->
- <!-- http://www.pts.se/upload/Ovrigt/Tele/Nummerfragor/Sv_nrplan_telefoni_enl_TU-T_rek_E.164.pdf -->
- <!-- Formatting patterns are from that document and from the Swedish yellow pages
- http://gulasidorna.eniro.se -->
- <territory id="SE" countryCode="46" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(8)(\d{2,3})(\d{2,3})(\d{2})">
- <leadingDigits>8</leadingDigits>
- <format>$1-$2 $3 $4</format>
- </numberFormat>
- <intlNumberFormat pattern="(8)(\d{2,3})(\d{2,3})(\d{2})">
- <leadingDigits>8</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </intlNumberFormat>
- <numberFormat pattern="([1-69]\d)(\d{2,3})(\d{2})(\d{2})">
- <leadingDigits>
- 1[013689]|
- 2[0136]|
- 3[1356]|
- 4[0246]|
- 54|
- 6[03]|
- 90
- </leadingDigits>
- <format>$1-$2 $3 $4</format>
- </numberFormat>
- <intlNumberFormat pattern="([1-69]\d)(\d{2,3})(\d{2})(\d{2})">
- <leadingDigits>
- 1[013689]|
- 2[0136]|
- 3[1356]|
- 4[0246]|
- 54|
- 6[03]|
- 90
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </intlNumberFormat>
- <numberFormat pattern="([1-69]\d)(\d{3})(\d{2})">
- <leadingDigits>
- 1[13689]|
- 2[136]|
- 3[1356]|
- 4[0246]|
- 54|
- 6[03]|
- 90
- </leadingDigits>
- <format>$1-$2 $3</format>
- </numberFormat>
- <intlNumberFormat pattern="([1-69]\d)(\d{3})(\d{2})">
- <leadingDigits>
- 1[13689]|
- 2[136]|
- 3[1356]|
- 4[0246]|
- 54|
- 6[03]|
- 90
- </leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <numberFormat pattern="(\d{3})(\d{2})(\d{2})(\d{2})">
- <leadingDigits>
- 1[2457]|
- 2[2457-9]|
- 3[0247-9]|
- 4[1357-9]|
- 5[0-35-9]|
- 6[124-9]|
- 9(?:
- [125-8]|
- 3[0-5]|
- 4[0-3]
- )
- </leadingDigits>
- <format>$1-$2 $3 $4</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d{3})(\d{2})(\d{2})(\d{2})">
- <leadingDigits>
- 1[2457]|
- 2[2457-9]|
- 3[0247-9]|
- 4[1357-9]|
- 5[0-35-9]|
- 6[124-9]|
- 9(?:
- [125-8]|
- 3[0-5]|
- 4[0-3]
- )
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </intlNumberFormat>
- <numberFormat pattern="(\d{3})(\d{2,3})(\d{2})">
- <leadingDigits>
- 1[2457]|
- 2[2457-9]|
- 3[0247-9]|
- 4[1357-9]|
- 5[0-35-9]|
- 6[124-9]|
- 9(?:
- [125-8]|
- 3[0-5]|
- 4[0-3]
- )
- </leadingDigits>
- <format>$1-$2 $3</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d{3})(\d{2,3})(\d{2})">
- <leadingDigits>
- 1[2457]|
- 2[2457-9]|
- 3[0247-9]|
- 4[1357-9]|
- 5[0-35-9]|
- 6[124-9]|
- 9(?:
- [125-8]|
- 3[0-5]|
- 4[0-3]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <numberFormat pattern="(7[02-467])(\d{3})(\d{2})(\d{2})">
- <leadingDigits>7[02-467]</leadingDigits>
- <format>$1-$2 $3 $4</format>
- </numberFormat>
- <intlNumberFormat pattern="(7[02-467])(\d{3})(\d{2})(\d{2})">
- <leadingDigits>7[02-467]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </intlNumberFormat>
- <numberFormat pattern="(20)(\d{2,3})(\d{2})">
- <leadingDigits>20</leadingDigits>
- <format>$1-$2 $3</format>
- </numberFormat>
- <intlNumberFormat pattern="(20)(\d{2,3})(\d{2})">
- <leadingDigits>20</leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <numberFormat pattern="(9[034]\d)(\d{2})(\d{2})(\d{3})">
- <leadingDigits>9[034]</leadingDigits>
- <format>$1-$2 $3 $4</format>
- </numberFormat>
- <intlNumberFormat pattern="(9[034]\d)(\d{2})(\d{2})(\d{3})">
- <leadingDigits>9[034]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </intlNumberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>\d{7,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 1(?:
- 0[1-8]\d{6}|
- [136]\d{5,7}|
- (?:
- 2[0-35]|
- 4[0-4]|
- 5[0-25-9]|
- 7[13-6]|
- [89]\d
- )\d{5,6}
- )|
- 2(?:
- [136]\d{5,7}|
- (?:
- 2[0-7]|
- 4[0136-8]|
- 5[0-38]|
- 7[018]|
- 8[01]|
- 9[0-57]
- )\d{5,6}
- )|
- 3(?:
- [356]\d{5,7}|
- (?:
- 0[0-4]|
- 1\d|
- 2[0-25]|
- 4[056]|
- 7[0-2]|
- 8[0-3]|
- 9[023]
- )\d{5,6}
- )|
- 4(?:
- [0246]\d{5,7}|
- (?:
- 1[01-8]|
- 3[0135]|
- 5[14-79]|
- 7[0-246-9]|
- 8[0156]|
- 9[0-689]
- )\d{5,6}
- )|
- 5(?:
- 0[0-6]|
- 1[1-5]|
- 2[0-68]|
- 3[0-4]|
- 4\d|
- 5[0-5]|
- 6[03-5]|
- 7[013]|
- 8[0-79]|
- 9[01]
- )\d{5,6}|
- 6(?:
- [03]\d{5,7}|
- (?:
- 1[1-3]|
- 2[0-4]|
- 4[02-57]|
- 5[0-37]|
- 6[0-3]|
- 7[0-2]|
- 8[0247]|
- 9[0-356]
- )\d{5,6}
- )|
- 8\d{6,8}|
- 9(?:
- 0\d{5,7}|
- (?:
- 1[0-68]|
- 2\d|
- 3[02-59]|
- 4[0-4]|
- 5[0-4]|
- 6[01]|
- 7[0135-8]|
- 8[01]
- )\d{5,6}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,9}</possibleNumberPattern>
- <exampleNumber>8123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[02-46]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>701234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>20\d{4,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- <exampleNumber>201234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- 9(?:
- 00|
- 39|
- 44
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9001234567</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>77\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>771234567</exampleNumber>
- </sharedCost>
- </territory>
-
- <!-- Singapore -->
- <!-- http://www.ida.gov.sg/policies%20and%20regulation/20060508120124.aspx -->
- <territory id="SG" countryCode="65" internationalPrefix="0[0-3][0-9]">
- <availableFormats>
- <numberFormat pattern="([3689]\d{3})(\d{4})">
- <leadingDigits>
- [369]|
- 8[1-9]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(1[89]00)(\d{3})(\d{4})">
- <leadingDigits>1[89]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(7000)(\d{4})(\d{3})">
- <leadingDigits>70</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(800)(\d{3})(\d{4})">
- <leadingDigits>80</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <!-- We have a stricter national number pattern for numbers beginning with 6 to enable us to
- easily strip off leading "65" country codes. -->
- <nationalNumberPattern>
- [36]\d{7}|
- [17-9]\d{7,10}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>6[1-8]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>61234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 8[1-5]|
- 9[0-8]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>81234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>1?800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10,11}</possibleNumberPattern>
- <exampleNumber>18001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>1900\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>19001234567</exampleNumber>
- </premiumRate>
- <voip>
- <nationalNumberPattern>3[0-2]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>31234567</exampleNumber>
- </voip>
- <uan>
- <!-- Although not detailed in the plan beyond mentioning their existence, it seems 7000
- numbers are used for companies. Most of the online examples are in fact alpha-numbers.
- -->
- <nationalNumberPattern>7000\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- <exampleNumber>70001234567</exampleNumber>
- </uan>
- <shortCode>
- <nationalNumberPattern>
- 1(?:
- [0136]\d{2}|
- 41\d|
- [89](?:
- [1-9]\d|
- 0[1-9]
- )|
- [57]\d{2,3})|
- 99\d
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,5}</possibleNumberPattern>
- <exampleNumber>1312</exampleNumber>
- </shortCode>
- </territory>
-
- <!-- Saint Helena and Tristan da Cunha -->
- <!-- http://www.itu.int/oth/T02020000AF/en -->
- <territory id="SH" countryCode="290" internationalPrefix="00">
- <!-- Numbers are formatted as a block. -->
- <generalDesc>
- <nationalNumberPattern>[2-9]\d{3}</nationalNumberPattern>
- <possibleNumberPattern>\d{4}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- [2-468]\d|
- 7[01]
- )\d{2}
- </nationalNumberPattern>
- <!-- Using St Helena Tourism as the example number. -->
- <exampleNumber>2158</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>NA</nationalNumberPattern>
- <possibleNumberPattern>NA</possibleNumberPattern>
- </mobile>
- <premiumRate>
- <nationalNumberPattern>
- (?:
- [59]\d|
- 7[2-9]
- )\d{2}
- </nationalNumberPattern>
- <exampleNumber>5012</exampleNumber>
- </premiumRate>
- <shortCode>
- <nationalNumberPattern>1\d{2,3}</nationalNumberPattern>
- <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
- </shortCode>
- </territory>
-
- <!-- Slovenia -->
- <!-- http://www.itu.int/oth/T02020000BE/en -->
- <territory id="SI" countryCode="386" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat nationalPrefixFormattingRule="($NP$FG)"
- pattern="(\d)(\d{3})(\d{2})(\d{2})">
- <leadingDigits>
- [12]|
- 3[4-8]|
- 4[24-8]|
- 5[3-8]|
- 7[3-8]
- </leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="([3-7]\d)(\d{3})(\d{3})">
- <leadingDigits>
- [37][01]|
- 4[019]|
- 51|
- 64
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([89][09])(\d{3,6})">
- <leadingDigits>[89][09]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([58]\d{2})(\d{5})">
- <leadingDigits>
- 59|
- 8[1-3]
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [1-7]\d{6,7}|
- [89]\d{4,7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 1\d|
- 2[2-8]|
- 3[4-8]|
- 4[24-8]|
- [57][3-8]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- <exampleNumber>11234567</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- We include 049 here - it is VoIP in the plan, but SMS messages have been successfully
- delivered - and it is run by Mobitel. There are also mobile numbers found on the
- internet with this prefix - it is apparently used in Kosovo. -->
- <nationalNumberPattern>
- (?:
- [37][01]|
- 4[019]|
- 51|
- 64
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>31234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{4,6}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,8}</possibleNumberPattern>
- <exampleNumber>80123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- Includes televoting, mass calling -->
- <nationalNumberPattern>
- 90\d{4,6}|
- 89[1-3]\d{2,5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,8}</possibleNumberPattern>
- <exampleNumber>90123456</exampleNumber>
- </premiumRate>
- <voip>
- <nationalNumberPattern>
- (?:
- 59|
- 8[1-3]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>59012345</exampleNumber>
- </voip>
- </territory>
-
- <!-- Svalbard -->
- <!-- Metadata shared with Norway. -->
- <!-- http://www.npt.no/pt_internet/numsys/E.164.pdf -->
- <territory id="SJ" countryCode="47" internationalPrefix="00" leadingZeroPossible="true">
- <generalDesc>
- <nationalNumberPattern>
- 0\d{4}|
- [4789]\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>79\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>79123456</exampleNumber>
- </fixedLine>
- <!-- Copied from Norway metadata. -->
- <mobile>
- <nationalNumberPattern>
- (?:
- 4[015-8]|
- 9\d
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>41234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80[01]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>80012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>82[09]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>82012345</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>
- 810(?:
- 0[0-6]|
- [2-8]\d
- )\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>81021234</exampleNumber>
- </sharedCost>
- <personalNumber>
- <nationalNumberPattern>880\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>88012345</exampleNumber>
- </personalNumber>
- <uan>
- <nationalNumberPattern>
- 0\d{4}|
- 81(?:
- 0(?:
- 0[7-9]|
- 1\d
- )|
- 5\d{2}
- )\d{3}
- </nationalNumberPattern>
- <exampleNumber>01234</exampleNumber>
- </uan>
- </territory>
-
- <!-- Slovakia -->
- <!-- http://www.itu.int/oth/T02020000BD/en -->
- <territory id="SK" countryCode="421" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(2)(\d{3})(\d{3})(\d{2})">
- <leadingDigits>2</leadingDigits>
- <format>$1/$2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="([3-5]\d)(\d{3})(\d{2})(\d{2})">
- <leadingDigits>[3-5]</leadingDigits>
- <format>$1/$2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="([689]\d{2})(\d{3})(\d{3})">
- <leadingDigits>[689]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-689]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[2-5]\d{8}</nationalNumberPattern>
- <exampleNumber>212345678</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- 948 isn't in the number pattern, but many examples using this have been found, so
- deeming it valid for now. -->
- <nationalNumberPattern>
- 9(?:
- 0[1-8]|
- 1[0-24-9]|
- 4[0489]
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>912123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>
- 9(?:
- [78]\d{7}|
- 00\d{6}
- )
- </nationalNumberPattern>
- <exampleNumber>900123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>8[5-9]\d{7}</nationalNumberPattern>
- <exampleNumber>850123456</exampleNumber>
- </sharedCost>
- <voip>
- <nationalNumberPattern>
- 6(?:
- 5[0-4]|
- 9[0-6]
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>690123456</exampleNumber>
- </voip>
- </territory>
-
- <!-- Sierra Leone -->
- <!-- http://www.itu.int/oth/T02020000BB/en -->
- <territory id="SL" countryCode="232" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)">
- <availableFormats>
- <!-- Following formatting of online yellow pages www.leonedirect.com -->
- <numberFormat pattern="(\d{2})(\d{6})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-578]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[235]2[2-4][2-9]\d{4}</nationalNumberPattern>
- <exampleNumber>22221234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding prefix 50 because it was found in online numbers and this is supported by
- http://www.wtng.info/wtng-232-sl.html - although the data may be outdated, since no
- further information about Datatel can be found. -->
- <nationalNumberPattern>
- (?:
- 25|
- 3[03]|
- 44|
- 5[056]|
- 7[6-8]|
- 88
- )[1-9]\d{5}
- </nationalNumberPattern>
- <exampleNumber>25123456</exampleNumber>
- </mobile>
- </territory>
-
- <!-- San Marino -->
- <!-- http://www.itu.int/oth/T02020000B5/en -->
- <!-- http://en.wikipedia.org/wiki/%2B39 (Information about Italy) -->
- <!-- http://en.wikipedia.org/wiki/%2B378-->
- <!-- San Marino fixed-line numbers have an area code of "0549". However, this seems to be
- optional when dialling from outside the country; the phone number can be reached both with
- and without this area code. The nationalPrefixForParsing and nationalPrefixTransformRule
- are used to ensure that if the 0549 is not present, it will be added. -->
- <territory id="SM" countryCode="378" internationalPrefix="00"
- nationalPrefixForParsing="(?:0549)?([89]\d{5})" nationalPrefixTransformRule="0549$1"
- leadingZeroPossible="true">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})">
- <leadingDigits>[5-7]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d{2})(\d{2})(\d{2})(\d{2})">
- <leadingDigits>[5-7]</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </intlNumberFormat>
- <!-- We follow the guidelines of the yellow-pages when formatting in national format. -->
- <numberFormat pattern="(0549)(\d{6})">
- <leadingDigits>0</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <!-- We follow the guidelines of the Telecommunications Document published on ITU when
- formatting in international format. -->
- <intlNumberFormat pattern="(0549)(\d{6})">
- <leadingDigits>0</leadingDigits>
- <format>($1) $2</format>
- </intlNumberFormat>
- <!-- A rule in case the number has been stored without the leading 0549 necessary for
- fixed-lines. -->
- <numberFormat pattern="(\d{6})">
- <leadingDigits>[89]</leadingDigits>
- <format>0549 $1</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d{6})">
- <leadingDigits>[89]</leadingDigits>
- <format>(0549) $1</format>
- </intlNumberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[05-7]\d{7,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </generalDesc>
- <!-- Example numbers provided by the Telecommunications Services. -->
- <fixedLine>
- <nationalNumberPattern>
- 0549(?:
- 8[0157-9]|
- 9\d
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>0549886377</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>6[16]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>66661212</exampleNumber>
- </mobile>
- <premiumRate>
- <!-- Includes Video Call numbers. -->
- <nationalNumberPattern>7[178]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>71123456</exampleNumber>
- </premiumRate>
- <voip>
- <nationalNumberPattern>5[158]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>58001110</exampleNumber>
- </voip>
- </territory>
-
- <!-- Senegal -->
- <!-- http://www.itu.int/oth/T02020000B8/en -->
- <territory id="SN" countryCode="221" internationalPrefix="00">
- <availableFormats>
- <!-- Using yellow pages and online telecom company formatting, rather than that implied in
- the national numbering plan. -->
- <numberFormat pattern="(\d{2})(\d{3})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[37]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 3(?:
- 010|
- 3(?:
- 8[1-9]|
- 9[2-9]
- )
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>301012345</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding 77 7[45]X and 77 9[0-6]X from online searches and from numbers successfully
- delivered by the wireless team. -->
- <nationalNumberPattern>
- 7(?:
- 0[1256]0|
- 6(?:
- 1[23]|
- 2[89]|
- 3[3489]|
- 4[6-9]|
- 5[1-389]|
- 6[6-9]|
- 7[45]|
- 8[3-8]
- )|
- 7(?:
- 1[014-8]|
- 2[0-7]|
- 3[0-35-8]|
- 4[0-6]|
- [56]\d|
- 7[0-589]|
- 8[01]|
- 9[0-6]
- )
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>701012345</exampleNumber>
- </mobile>
- <voip>
- <nationalNumberPattern>33301\d{4}</nationalNumberPattern>
- <exampleNumber>333011234</exampleNumber>
- </voip>
- </territory>
-
- <!-- Somalia -->
- <!-- http://www.itu.int/oth/T02020000C0/en -->
- <!-- This document seems to cover only a small set of prefixes in Somalia.
- Somalia has limited information available, and the numerous telecom carriers
- were previously working under an unregulated environment. The extra prefixes
- were added from the contact phone numbers of the countries main telecom
- operators. See regression tests for more details. -->
- <territory id="SO" countryCode="252" internationalPrefix="00">
- <availableFormats>
- <!-- These follow formats online, such as www.hortel.net/contact_us.html -->
- <numberFormat pattern="([13-5])(\d{6})">
- <leadingDigits>[13-5]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <!-- Unfortunately numbers beginning with 1 are hard to format based on prefixes, since it
- depends on number length. -->
- <numberFormat pattern="([19]\d)(\d{6})">
- <leadingDigits>15|9</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[13-59]\d{6,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 5[57-9]|
- [134]\d
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- <!-- Example numbers are test numbers from the document. -->
- <exampleNumber>5522010</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 9[01]|
- 15
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>90792024</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Suriname -->
- <territory id="SR" countryCode="597" internationalPrefix="00">
- </territory>
-
- <!-- Sao Tome and Principe -->
- <!-- http://www.itu.int/oth/T02020000B6/en -->
- <territory id="ST" countryCode="239" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[29]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>22\d{5}</nationalNumberPattern>
- <exampleNumber>2221234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>9[89]\d{5}</nationalNumberPattern>
- <exampleNumber>9812345</exampleNumber>
- </mobile>
- </territory>
-
- <!-- El Salvador -->
- <!-- http://www.itu.int/oth/T020200003F/en
- http://www.siget.gob.sv/BusquedaPublica.aspx?pagina=3&tipo=27&titulo=t8&sector=2&ordenar=&dir=DESC
- -->
- <territory id="SV" countryCode="503" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{4})(\d{4})">
- <leadingDigits>[27]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{4})">
- <leadingDigits>[89]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{4})(\d{4})">
- <leadingDigits>[89]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [27]\d{7}|
- [89]\d{6}(?:\d{4})?
- </nationalNumberPattern>
- <possibleNumberPattern>
- \d{7,8}|
- \d{11}
- </possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Numbers starting with 20, 27, 28 and 29 are reserved but not yet used. -->
- <nationalNumberPattern>2[1-6]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>21234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>70123456</exampleNumber>
- </mobile>
- <tollFree>
- <!-- Toll free numbers are either 800 NNNN or 800 NNNN NNNN. -->
- <nationalNumberPattern>800\d{4}(?:\d{4})?</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{4})?</possibleNumberPattern>
- <exampleNumber>8001234</exampleNumber>
- </tollFree>
- <premiumRate>
- <!-- Premium rate numbers are either 900 NNNN or 900 NNNN NNNN. -->
- <nationalNumberPattern>900\d{4}(?:\d{4})?</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{4})?</possibleNumberPattern>
- <exampleNumber>9001234</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Syrian Arab Republic -->
- <!-- http://www.itu.int/oth/T02020000C9/en -->
- <territory id="SY" countryCode="963" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{3})(\d{3,4})">
- <leadingDigits>[1-5]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(9[3-689])(\d{4})(\d{3})">
- <leadingDigits>9</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-59]\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 1(?:
- 1\d?|
- 4\d|
- [2356]
- )|
- 2[1-35]|
- 3(?:
- 1\d|
- [34]
- )|
- 4[13]|
- 5[1-3]
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>112345678</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- 945, 967 and 991 numbers are added as SMS messages have been successfully delivered to
- these numbers, and they are also widely present on the Internet. -->
- <nationalNumberPattern>
- 9(?:
- 3[23]|
- 4[457]|
- 55|
- 6[67]|
- 88|
- 9[19]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>944567890</exampleNumber>
- </mobile>
- <!-- No tollFree or premiumRate information can be found. -->
- </territory>
-
- <!-- Swaziland -->
- <!-- http://www.itu.int/oth/T02020000C6/en -->
- <territory id="SZ" countryCode="268" internationalPrefix="00" leadingZeroPossible="true">
- <availableFormats>
- <numberFormat pattern="(\d{4})(\d{4})">
- <leadingDigits>[027]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[027]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <noInternationalDialling>
- <nationalNumberPattern>0800\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>08001234</exampleNumber>
- </noInternationalDialling>
- <fixedLine>
- <nationalNumberPattern>
- 2(?:
- 2(?:
- 0[07]|
- [13]7|
- 2[57]
- )|
- 3(?:
- 0[34]|
- [1278]3|
- 3[23]|
- [46][34]
- )|
- (?:
- 40[4-69]|
- 67
- )|
- 5(?:
- 0[5-7]|
- 1[6-9]|
- [23][78]|
- 48|
- 5[01]
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>22171234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[6-8]\d{6}</nationalNumberPattern>
- <exampleNumber>76123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>0800\d{4}</nationalNumberPattern>
- <exampleNumber>08001234</exampleNumber>
- </tollFree>
- </territory>
-
- <!-- Turks and Caicos Islands -->
- <!-- http://www.itu.int/oth/T02020000D8/en -->
- <territory id="TC" countryCode="1" leadingDigits="649"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[5689]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 649(?:
- 712|
- 9(?:
- 4\d|
- 50
- )
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>6497121234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 649(?:
- 2(?:
- 3[12]|
- 4[1-5]
- )|
- 3(?:
- 3[1-39]|
- 4[1-57]
- )|
- 4[34][12]
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>6492311234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002345678</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002345678</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- <voip>
- <nationalNumberPattern>64971[01]\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>6497101234</exampleNumber>
- </voip>
- </territory>
-
- <!-- Chad -->
- <!-- http://www.itu.int/oth/T0202000029/en -->
- <!-- The international prefix includes 16 as the international manual exchange. -->
- <territory id="TD" countryCode="235" preferredInternationalPrefix="00"
- internationalPrefix="00|16">
- <availableFormats>
- <numberFormat
- pattern="(\d{2})(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2679]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 22(?:
- [3789]0|
- 5[0-5]|
- 6[89]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>22501234</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Sotel Tchad "SALAM" (77 XX XX XX) is classified as a fixed operator in the plan, but it
- also says numbers starting with 7 are mobile numbers. Putting under mobile for now.
- Also adding 63[5-7] from evidence of successful SMS delivery. -->
- <nationalNumberPattern>
- (?:
- 6(?:
- 3[0-7]|
- 6\d
- )|
- 77\d|
- 9(?:
- 5[0-4]|
- 9\d
- )
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>63012345</exampleNumber>
- </mobile>
- </territory>
-
- <!-- French Southern Territories -->
- <territory id="TF" countryCode="262" internationalPrefix="00"
- nationalPrefix="0">
- </territory>
-
- <!-- Togo -->
- <!-- http://www.itu.int/oth/T02020000D1/en -->
- <territory id="TG" countryCode="228" internationalPrefix="00" leadingZeroPossible="true">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{2})(\d{2})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[02-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2[2-7]|
- 3[23]|
- 44|
- 55|
- 66|
- 77
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>2212345</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Added prefix 09 because many mobile numbers were found with this. -->
- <nationalNumberPattern>
- (?:
- 0[1-9]|
- 7[56]|
- 8[1-7]|
- 9\d
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>0112345</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Thailand -->
- <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000CD0001MSWE.doc -->
- <territory id="TH" countryCode="66" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- Formatting patterns from wikipedia and the document itself -
- http://en.wikipedia.org/wiki/%2B66 -->
- <numberFormat pattern="(2)(\d{3})(\d{4})">
- <leadingDigits>2</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([3-7]\d)(\d{3})(\d{3,4})">
- <leadingDigits>[3-7]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(8)(\d{4})(\d{4})">
- <leadingDigits>8</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="(1[89]00)(\d{3})(\d{3})">
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [2-8]\d{7,8}|
- 1\d{9}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2[1-9]|
- 3[24-9]|
- 4[2-5]|
- 5[3-6]|
- 7[3-7]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- <exampleNumber>21234567</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- 8[02] numbers are added as SMS messages have been successfully delivered to these
- numbers, and they are also widely present on the Internet. -->
- <nationalNumberPattern>8\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>812345678</exampleNumber>
- </mobile>
- <!-- http://en.wikipedia.org/wiki/Toll-free_telephone_number -->
- <tollFree>
- <nationalNumberPattern>1800\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>1900\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>1900123456</exampleNumber>
- </premiumRate>
- <voip>
- <nationalNumberPattern>60\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>601234567</exampleNumber>
- </voip>
- </territory>
-
- <!-- Tajikistan -->
- <!-- http://www.itu.int/oth/T02020000CA/en -->
- <territory id="TJ" countryCode="992" internationalPrefix="8~10"
- nationalPrefix="8" nationalPrefixFormattingRule="($NP) $FG">
- <availableFormats>
- <numberFormat pattern="([349]\d{2})(\d{2})(\d{4})">
- <leadingDigits>
- [34]7|
- 91[78]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([459]\d)(\d{3})(\d{4})">
- <leadingDigits>
- 4[48]|
- 5|
- 9(?:
- 19|
- [0235-9]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(331700)(\d)(\d{2})">
- <leadingDigits>331</leadingDigits>
- <leadingDigits>3317</leadingDigits>
- <leadingDigits>33170</leadingDigits>
- <leadingDigits>331700</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{4})(\d)(\d{4})">
- <leadingDigits>3[1-5]</leadingDigits>
- <leadingDigits>
- 3(?:
- [1245]|
- 3(?:
- [02-9]|
- 1[0-589]
- )
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[3-59]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{3,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 3(?:
- 1[3-5]|
- 2[245]|
- 3[12]|
- 4[24-7]|
- 5[25]|
- 72
- )|
- 4(?:
- 46|
- 74|
- 87
- )
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>372123456</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding 90 prefix as SMS messages could be successfully delivered to these mobile
- numbers. -->
- <nationalNumberPattern>
- (?:
- 505|
- 9[0-35-9]\d
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>917123456</exampleNumber>
- </mobile>
- <!-- No tollFree or premiumRate information can be found. -->
- </territory>
-
- <!-- Tokelau -->
- <territory id="TK" countryCode="690" internationalPrefix="00">
- </territory>
-
- <!-- Timor-Leste (East Timor) -->
- <!-- http://www.itu.int/oth/T02020000D0/en -->
- <territory id="TL" countryCode="670" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-47-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2[1-5]|
- 3[1-9]|
- 4[1-4]
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>2112345</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[2-4]\d{5}</nationalNumberPattern>
- <exampleNumber>7212345</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{5}</nationalNumberPattern>
- <exampleNumber>8012345</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90\d{5}</nationalNumberPattern>
- <exampleNumber>9012345</exampleNumber>
- </premiumRate>
- <personalNumber>
- <nationalNumberPattern>70\d{5}</nationalNumberPattern>
- <exampleNumber>7012345</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Turkmenistan -->
- <!-- http://www.itu.int/oth/T02020000D7/en -->
- <territory id="TM" countryCode="993" internationalPrefix="8~10"
- nationalPrefix="8" nationalPrefixFormattingRule="$NP $FG">
- <availableFormats>
- <!-- There doesn't seem to be a standardized format. The format below is based on the
- Turkmenistan embassy at
- http://www.turkmenistanembassy.org/turkmen/info/contact.html -->
- <numberFormat pattern="([1-6]\d)(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-6]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 12\d|
- 243|
- [3-5]22
- )\d{5}
- </nationalNumberPattern>
- <exampleNumber>12345678</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding 68 as SMS messages have been successfully sent to numbers with this prefix. -->
- <nationalNumberPattern>6[6-8]\d{6}</nationalNumberPattern>
- <exampleNumber>66123456</exampleNumber>
- </mobile>
- <!-- No tollFree or premiumRate information can be found. -->
- </territory>
-
- <!-- Tunisia -->
- <!-- http://www.itu.int/oth/T02020000D5/en -->
- <territory id="TN" countryCode="216" internationalPrefix="00">
- <availableFormats>
- <numberFormat pattern="([247-9]\d)(\d{3})(\d{3})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[247-9]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>7\d{7}</nationalNumberPattern>
- <exampleNumber>71234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 2[0-7]|
- 40|
- 9\d
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>20123456</exampleNumber>
- </mobile>
- <!-- These are listed as 'value added services' - pending further information, we add them
- here for now. -->
- <premiumRate>
- <nationalNumberPattern>8[028]\d{6}</nationalNumberPattern>
- <exampleNumber>80123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Tonga -->
- <territory id="TO" countryCode="676" internationalPrefix="00">
- </territory>
-
- <!-- Turkey -->
- <!-- http://en.wikipedia.org/wiki/%2B90 -->
- <!-- http://www.itu.int/oth/T02020000D6/en -->
- <territory id="TR" countryCode="90" internationalPrefix="00" nationalPrefix="0">
- <availableFormats>
- <numberFormat nationalPrefixFormattingRule="($NP$FG)" pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>
- [23]|
- 4(?:
- [0-35-9]|
- 4[0-35-9]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$NP$FG" pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>[589]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(444)(\d{1})(\d{3})">
- <leadingDigits>444</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [2-589]\d{9}|
- 444\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Includes numbers starting with 392 for Northern Cyprus. -->
- <nationalNumberPattern>
- (?:
- 2(?:
- [13][26]|
- [28][2468]|
- [45][268]|
- [67][246]
- )|
- 3(?:
- [13][28]|
- [24-6][2468]|
- [78][02468]|
- 92
- )|
- 4(?:
- [16][246]|
- [23578][2468]|
- 4[26]
- )
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>2123456789</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 5(?:
- 0[1-35-7]|
- 22|
- 3\d|
- 4[1-79]|
- 5[1-5]|
- 9[246]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5012345678</exampleNumber>
- </mobile>
- <pager>
- <nationalNumberPattern>512\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5123456789</exampleNumber>
- </pager>
- <tollFree>
- <nationalNumberPattern>800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9001234567</exampleNumber>
- </premiumRate>
- <uan>
- <!-- http://www.turktelekom.com.tr/tt/portal/News/Archive/7-digit-special-service-number-starting-with-444 -->
- <nationalNumberPattern>
- 444\d{4}|
- 850\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- <exampleNumber>4441444</exampleNumber>
- </uan>
- </territory>
-
- <!-- Trinidad and Tobago -->
- <!-- http://www.itu.int/oth/T02020000D4/en -->
- <territory id="TT" countryCode="1" leadingDigits="868"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[589]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 868(?:
- 2(?:
- 01|
- 2[1-4]
- )|
- 6(?:
- 07|
- 1[4-6]|
- 2[1-9]|
- [3-6]\d|
- 7[0-79]|
- 9[0-8]
- )|
- 82[12]
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>8682211234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 868(?:
- 29\d|
- 3(?:
- 0[1-9]|
- 1[02-9]|
- [2-9]\d
- )|
- 4(?:
- [679]\d|
- 8[0-4]
- )|
- 6(?:
- 20|
- 78|
- 8\d
- )|
- 7(?:
- 1[02-9]|
- [2-9]\d
- )
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8682911234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002345678</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002345678</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Tuvalu -->
- <!-- http://www.itu.int/oth/T02020000D9/en -->
- <territory id="TV" countryCode="688" internationalPrefix="00">
- <!-- Numbers are formatted as a block. -->
- <generalDesc>
- <nationalNumberPattern>[29]\d{4,5}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,6}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>2[02-9]\d{3}</nationalNumberPattern>
- <possibleNumberPattern>\d{5}</possibleNumberPattern>
- <exampleNumber>20123</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Some numbers online can be found that are 5-digits long, and start with 90 or 91. We
- don't know if these are valid or not - the ITU document excludes them - so are not
- covering these for now. -->
- <nationalNumberPattern>90\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- <exampleNumber>901234</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Taiwan, China -->
- <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000EB0003MSWE.doc -->
- <!-- Extension symbols found on the internet so far have been #, X and Ext -
- so # has been chosen as the preferred extension prefix. -->
- <territory id="TW" countryCode="886" internationalPrefix="0(?:0[25679]|19)"
- nationalPrefix="0" preferredExtnPrefix="#" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([2-8])(\d{3,4})(\d{4})">
- <leadingDigits>
- [2-7]|
- 8[1-9]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([89]\d{2})(\d{3})(\d{3})">
- <leadingDigits>
- 80|
- 9
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-9]\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[2-8]\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- <exampleNumber>21234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>9\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>912345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>900123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Tanzania -->
- <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000CB0001MSWE.doc -->
- <territory id="TZ" countryCode="255" internationalPrefix="00[056]"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([24]\d)(\d{3})(\d{4})">
- <leadingDigits>[24]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([67]\d{2})(\d{3})(\d{3})">
- <leadingDigits>[67]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- Formatting for special numbers from www.tcra.go.tz -->
- <numberFormat pattern="([89]\d{2})(\d{2})(\d{4})">
- <leadingDigits>[89]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>2[2-8]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- <exampleNumber>222345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 6[158]|
- 7[1-9]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>612345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80[08]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>900123456</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>
- 8(?:
- 40|
- 6[01]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>840123456</exampleNumber>
- </sharedCost>
- <voip>
- <nationalNumberPattern>41\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>412345678</exampleNumber>
- </voip>
- </territory>
-
- <!-- Ukraine -->
- <!-- http://www.itu.int/oth/T02020000DB/en -->
- <!-- http://en.wikipedia.org/wiki/%2B380 -->
- <territory id="UA" countryCode="380" internationalPrefix="0~0"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- City codes separated out. No definitive list has been found of what constitutes the
- area code - http://www.ua.all-biz.info/guide/phonecodes is useful but not error-free.
- Have used local yellow pages guidelines, Google searches and regression tests to
- reverse-engineer these rules as well as bugs. -->
- <numberFormat pattern="([3-69]\d)(\d{3})(\d{4})">
- <leadingDigits>
- 39|
- 4(?:
- [45][0-5]|
- 87
- )|
- 5(?:
- 0|
- 6[37]|
- 7[37]
- )|
- 6[36-8]|
- 9[1-9]
- </leadingDigits>
- <leadingDigits>
- 39|
- 4(?:
- [45][0-5]|
- 87
- )|
- 5(?:
- 0|
- 6(?:
- 3[14-7]|
- 7
- )|
- 7[37]
- )|
- 6[36-8]|
- 9[1-9]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([3-689]\d{2})(\d{3})(\d{3})">
- <leadingDigits>
- 3[1-8]2|
- 4[1378]2|
- 5(?:
- [12457]2|
- 6[24]
- )|
- 6(?:
- [49]2|
- [12][29]|
- 5[24]
- )|
- 8|
- 90
- </leadingDigits>
- <leadingDigits>
- 3(?:
- [1-46-8]2[013-9]|
- 52
- )|
- 4[1378]2|
- 5(?:
- [12457]2|
- 6[24]
- )|
- 6(?:
- [49]2|
- [12][29]|
- 5[24]
- )|
- 8|
- 90
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([3-6]\d{3})(\d{5})">
- <leadingDigits>
- 3(?:
- 5[013-9]|
- [1-46-8]
- )|
- 4(?:
- [137][013-9]|
- 6|
- [45][6-9]|
- 8[4-6]
- )|
- 5(?:
- [1245][013-9]|
- 6[0135-9]|
- 3|
- 7[4-6]
- )|
- 6(?:
- [49][013-9]|
- 5[0135-9]|
- [12][13-8]
- )
- </leadingDigits>
- <leadingDigits>
- 3(?:
- 5[013-9]|
- [1-46-8](?:
- 22|
- [013-9]
- )
- )|
- 4(?:
- [137][013-9]|
- 6|
- [45][6-9]|
- 8[4-6]
- )|
- 5(?:
- [1245][013-9]|
- 6(?:
- 3[02389]|
- [015689]
- )|
- 3|
- 7[4-6]
- )|
- 6(?:
- [49][013-9]|
- 5[0135-9]|
- [12][13-8]
- )
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[3-689]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 3[1-8]|
- 4[13-8]|
- 5[1-7]|
- 6[12459]
- )\d{7}
- </nationalNumberPattern>
- <exampleNumber>311234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 39|
- 50|
- 6[36-8]|
- 9[1-9]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>391234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>900123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Uganda -->
- <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000F10001MSWE.doc -->
- <!-- http://www.ucc.co.ug/licensing/ugandaNumberingPlan.pdf -->
- <territory id="UG" countryCode="256" internationalPrefix="00[057]"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([247-9]\d{2})(\d{6})">
- <leadingDigits>
- [7-9]|
- 200|
- 4(?:
- 6[45]|
- [7-9]
- )
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([34]\d)(\d{7})">
- <leadingDigits>
- 3|
- 4(?:
- [1-5]|
- 6[0-36-9]
- )
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(2024)(\d{5})">
- <leadingDigits>202</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 3\d{8}|
- 4(?:
- [1-6]\d|
- 7[136]|
- 8[1356]|
- 96
- )\d{6}|
- 20(?:
- 0\d|
- 24
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,9}</possibleNumberPattern>
- <exampleNumber>312345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 7(?:
- [1578]\d|
- 0[0-4]
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>712345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800[123]\d{5}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>90[123]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>901123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- United States -->
- <!-- http://www.nanpa.com/reports/reports_npa.html -->
- <!-- http://en.wikipedia.org/wiki/North_American_Numbering_Plan -->
- <!-- Note the national prefix of US is the same as its country code, and when formatting phone
- numbers in the national format, it is not included. Therefore, we omit it here to make
- formatting consistent with the rest of the world. The same applies to all the
- countries/regions under NANPA -->
- <!-- The national prefix of "1" here is the same as the country code. It is not used by default
- when formatting, but is set here so that users who are calling formatByPattern can specify
- NationalPrefixFormattingRule if they want to. -->
- <territory id="US" countryCode="1" internationalPrefix="011"
- mainCountryForCode="true" nationalPrefix="1">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <format>($1) $2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{4})">
- <format>$1-$2</format>
- </numberFormat>
- <!-- A different pattern is used when formatting internationally, as the area code is no
- longer optional and should not be in brackets. -->
- <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <format>$1-$2-$3</format>
- </intlNumberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-9]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2(?:
- 0[1-35-9]|
- 1[02-9]|
- 2[4589]|
- 3[149]|
- 4[08]|
- 5[1-46]|
- 6[0279]|
- 7[06]|
- 8[13]
- )|
- 3(?:
- 0[1-57-9]|
- 1[02-9]|
- 2[0135]|
- 3[014679]|
- 47|
- 5[12]|
- 6[01]|
- 8[056]
- )|
- 4(?:
- 0[124-9]|
- 1[02-579]|
- 2[3-5]|
- 3[0245]|
- 4[0235]|
- 58|
- 69|
- 7[0589]|
- 8[04]
- )|
- 5(?:
- 0[1-57-9]|
- 1[0235-8]|
- 20|
- 3[0149]|
- 4[01]|
- 5[19]|
- 6[1-37]|
- 7[013-5]|
- 8[056]
- )|
- 6(?:
- 0[1-35-9]|
- 1[024-9]|
- 2[036]|
- 3[016]|
- 4[16]|
- 5[017]|
- 6[0-29]|
- 78|
- 8[12]
- )|
- 7(?:
- 0[1-46-8]|
- 1[2-9]|
- 2[047]|
- 3[124]|
- 4[07]|
- 5[47]|
- 6[02359]|
- 7[02-59]|
- 8[156]
- )|
- 8(?:
- 0[1-68]|
- 1[02-8]|
- 28|
- 3[0-25]|
- 4[3578]|
- 5[06-9]|
- 6[02-5]|
- 7[028]
- )|
- 9(?:
- 0[1346-9]|
- 1[02-9]|
- 2[0589]|
- 3[1678]|
- 4[0179]|
- 5[1246]|
- 7[0-3589]|
- 8[059]
- )
- )[2-9]\d{6}
- </nationalNumberPattern>
- <exampleNumber>2012345678</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 2(?:
- 0[1-35-9]|
- 1[02-9]|
- 2[4589]|
- 3[149]|
- 4[08]|
- 5[1-46]|
- 6[0279]|
- 7[06]|
- 8[13]
- )|
- 3(?:
- 0[1-57-9]|
- 1[02-9]|
- 2[0135]|
- 3[014679]|
- 47|
- 5[12]|
- 6[01]|
- 8[056]
- )|
- 4(?:
- 0[124-9]|
- 1[02-579]|
- 2[3-5]|
- 3[0245]|
- 4[0235]|
- 58|
- 69|
- 7[0589]|
- 8[04]
- )|
- 5(?:
- 0[1-57-9]|
- 1[0235-8]|
- 20|
- 3[0149]|
- 4[01]|
- 5[19]|
- 6[1-37]|
- 7[013-5]|
- 8[056]
- )|
- 6(?:
- 0[1-35-9]|
- 1[024-9]|
- 2[036]|
- 3[016]|
- 4[16]|
- 5[017]|
- 6[0-29]|
- 78|
- 8[12]
- )|
- 7(?:
- 0[1-46-8]|
- 1[2-9]|
- 2[047]|
- 3[124]|
- 4[07]|
- 5[47]|
- 6[02359]|
- 7[02-59]|
- 8[156]
- )|
- 8(?:
- 0[1-68]|
- 1[02-8]|
- 28|
- 3[0-25]|
- 4[3578]|
- 5[06-9]|
- 6[02-5]|
- 7[028]
- )|
- 9(?:
- 0[1346-9]|
- 1[02-9]|
- 2[0589]|
- 3[1678]|
- 4[0179]|
- 5[1246]|
- 7[0-3589]|
- 8[059]
- )
- )[2-9]\d{6}
- </nationalNumberPattern>
- <exampleNumber>2012345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002345678</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002345678</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Uruguay -->
- <territory id="UY" countryCode="598" internationalPrefix="00"
- nationalPrefix="0">
- </territory>
-
- <!-- Uzbekistan -->
- <!-- http://www.itu.int/oth/T02020000E1/en -->
- <territory id="UZ" countryCode="998" internationalPrefix="8~10"
- nationalPrefix="8" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([679]\d)(\d{3})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[679]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Adding 70 prefix as suggested by http://www.ttts.uz/eng/telephone_codes/codes_uzb_eng
- -->
- <nationalNumberPattern>
- (?:
- 6[125679]|
- 7[0-69]
- )\d{7}
- </nationalNumberPattern>
- <exampleNumber>612345678</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding 9[45] as suggested by http://www.ucell.uz/en/for_subscribers/how_to_call.html
- -->
- <nationalNumberPattern>9[0-57-9]\d{7}</nationalNumberPattern>
- <exampleNumber>912345678</exampleNumber>
- </mobile>
- <!-- No tollFree or premiumRate information can be found. -->
- </territory>
-
- <!-- Vatican City -->
- <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_Vatican_City -->
- <!-- Note that numbers here are also accessible via Italy (+39 and prefix of 06 698) but can
- also be dialled with the Vatican City country code. -->
- <territory id="VA" countryCode="379" internationalPrefix="00" leadingZeroPossible="true">
- <availableFormats>
- <numberFormat pattern="(06)(\d{4})(\d{4})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>06\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>06698\d{5}</nationalNumberPattern>
- <exampleNumber>0669812345</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- We have no information on mobile numbers from the Vatican. It is probable that they use
- Italian mobile contracts. -->
- <nationalNumberPattern>N/A</nationalNumberPattern>
- <possibleNumberPattern>N/A</possibleNumberPattern>
- </mobile>
- <!-- No information exists about other types of numbers. -->
- </territory>
-
- <!-- Saint Vincent and the Grenadines -->
- <!-- http://www.itu.int/oth/T02020000B3/en -->
- <territory id="VC" countryCode="1" leadingDigits="784"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[5789]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 784(?:
- 266|
- 3(?:
- 6[6-9]|
- 7\d|
- 8[0-24-6]
- )|
- 4(?:
- 38|
- 5[0-36-8]|
- 8\d|
- 9[01]
- )|
- 555|
- 638|
- 784
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>7842661234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 784(?:
- 4(?:
- 3[0-24]|
- 5[45]|
- 9[2-5]
- )|
- 5(?:
- 2[6-9]|
- 3[0-3]|
- 93
- )
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7844301234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002345678</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002345678</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Venezuela -->
- <!-- http://www.itu.int/oth/T02020000E3/en -->
- <!-- http://en.wikipedia.org/wiki/+58 -->
- <!-- 1XX specifies a particular carrier to route a call to. -->
- <territory id="VE" countryCode="58" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixForParsing="(1\d{2})|0"
- nationalPrefixFormattingRule="$NP$FG"
- carrierCodeFormattingRule="$CC $FG">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{7})">
- <format>$1-$2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[24589]\d{9}</nationalNumberPattern>
- <!-- Open numbering plan. -->
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Including region-free 500 calls here, since these are treated as local calls. Wikipedia
- mentions these as 5XX, but online examples that can be found are seemingly restricted
- to 50[01]. -->
- <nationalNumberPattern>
- (?:
- 2(?:
- 12|
- 3[457-9]|
- [58][1-9]|
- [467]\d|
- 9[1-6]
- )|
- 50[01]
- )\d{7}
- </nationalNumberPattern>
- <exampleNumber>2121234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 4(?:
- 1[24-8]|
- 2[46]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>4121234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8001234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9001234567</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Virgin Islands, British -->
- <!-- http://www.itu.int/oth/T020200001E/en -->
- <territory id="VG" countryCode="1" leadingDigits="284"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[2589]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 284(?:
- (?:
- 229|
- 4(?:
- 46|
- 9[45]
- )|
- 8(?:
- 52|
- 6[459]
- )
- )\d{4}|
- 496[0-5]\d{3}
- )
- </nationalNumberPattern>
- <exampleNumber>2842291234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 284(?:
- (?:
- 30[0-3]|
- 4(?:
- 4[0-5]|
- 68|
- 99
- )|
- 54[0-4]
- )\d{4}|
- 496[6-9]\d{3}
- )
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>2843001234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002345678</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002345678</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Virgin Islands, United States -->
- <!-- http://www.itu.int/oth/T02020000DF/en -->
- <territory id="VI" countryCode="1" leadingDigits="340"
- nationalPrefix="1" internationalPrefix="011">
- <generalDesc>
- <!-- NANPA country - uses US formatting rules -->
- <nationalNumberPattern>[3589]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- 340(?:
- 6[49]2|
- 7[17]\d
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>3406421234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- 340(?:
- 6[49]2|
- 7[17]\d
- )\d{4}
- </nationalNumberPattern>
- <exampleNumber>3406421234</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>
- 8(?:
- 00|
- 55|
- 66|
- 77|
- 88
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8002345678</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>9002345678</exampleNumber>
- </premiumRate>
- <personalNumber>
- <!-- http://www.nanpa.com/pdf/PL_416.pdf -->
- <nationalNumberPattern>
- 5(?:
- 00|
- 33|
- 44
- )[2-9]\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5002345678</exampleNumber>
- </personalNumber>
- </territory>
-
- <!-- Viet Nam (Vietnam) -->
- <!-- http://www.itu.int/oth/T02020000E4/en -->
- <!-- http://en.wikipedia.org/wiki/%2B84 -->
- <territory id="VN" countryCode="84" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([48])(\d{4})(\d{4})">
- <leadingDigits>[48]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([235-7]\d)(\d{4})(\d{3})">
- <leadingDigits>
- 2[025-79]|
- 3[0136-9]|
- 5[2-9]|
- 6[0-46-9]|
- 7[02-79]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(80)(\d{5})">
- <leadingDigits>80</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(69\d)(\d{4,5})">
- <leadingDigits>69</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([235-7]\d{2})(\d{4})(\d{3})">
- <leadingDigits>
- 2[1348]|
- 3[25]|
- 5[01]|
- 65|
- 7[18]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(9\d)(\d{3})(\d{2})(\d{2})">
- <leadingDigits>9</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(1[2689]\d)(\d{3})(\d{4})">
- <leadingDigits>
- 1(?:
- [26]|
- 88|
- 99
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="(1[89]00)(\d{4,6})">
- <leadingDigits>1[89]0</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- 8\d{5,8}|
- [1-79]\d{7,9}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 2(?:
- [025-79]|
- 1[0189]|
- [348][01]
- )|
- 3(?:
- [0136-9]|
- [25][01]
- )|
- [48]\d|
- 5(?:
- [01][01]|
- [2-9]
- )|
- 6(?:
- [0-46-8]|
- 5[01]
- )|
- 7(?:
- [02-79]|
- [18][01]
- )
- )\d{7}|
- 69\d{5,6}|
- 80\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- <exampleNumber>2101234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 9\d|
- 1(?:
- 2\d|
- 6[3-9]|
- 88|
- 99
- )
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- <exampleNumber>912345678</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>1800\d{4,6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,10}</possibleNumberPattern>
- <exampleNumber>1800123456</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>1900\d{4,6}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,10}</possibleNumberPattern>
- <exampleNumber>1900123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Vanuatu -->
- <territory id="VU" countryCode="678" internationalPrefix="00">
- </territory>
-
- <!-- Wallis and Futuna (Territoire français d'outre-mer) -->
- <territory id="WF" countryCode="681" internationalPrefix="19">
- </territory>
-
- <!-- Samoa -->
- <!-- http://www.itu.int/oth/T02020000B4/en -->
- <territory id="WS" countryCode="685" internationalPrefix="0"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- Should be formatted in one block, apart from the specific series below. For this reason
- the leadingDigits is more detailed than would appear necessary. -->
- <numberFormat pattern="(8[04]0)(\d{3,4})">
- <leadingDigits>8[04]0</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(7[25-7])(\d{5})">
- <leadingDigits>7[25-7]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[2-8]\d{4,6}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,7}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- [2-5]\d|
- 6[1-9]|
- 840\d
- )\d{3}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{5,7}</possibleNumberPattern>
- <exampleNumber>22123</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 60|
- 7[25-7]\d
- )\d{4}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,7}</possibleNumberPattern>
- <exampleNumber>601234</exampleNumber>
- </mobile>
- <tollFree>
- <!-- The 800 number series is new, and is used by companies such as the ANZ bank in Samoa to
- provide 24 hour eMerchant support. It is marked as "Customized Services" in the plan
- for now, so may be also used for other purposes than toll free, but until we have
- further evidence of these we will keep it as toll free. -->
- <nationalNumberPattern>800\d{3}</nationalNumberPattern>
- <possibleNumberPattern>\d{6}</possibleNumberPattern>
- <exampleNumber>800123</exampleNumber>
- </tollFree>
- <!-- Current research suggests other types of numbers are not used in Samoa. -->
- </territory>
-
- <!-- Yemen -->
- <!-- http://www.itu.int/oth/T02020000E7/en -->
- <territory id="YE" countryCode="967" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([1-7])(\d{3})(\d{3,4})">
- <leadingDigits>
- [1-6]|
- 7[24-68]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(7[137]\d)(\d{3})(\d{3})">
- <leadingDigits>7[137]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-7]\d{6,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 1(?:
- 7\d|
- [2-68]
- )|
- 2[2-68]|
- 3[2358]|
- 4[2-58]|
- 5[2-6]|
- 6[3-58]|
- 7[24-68]
- )\d{5}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{6,8}</possibleNumberPattern>
- <exampleNumber>1234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[137]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>712345678</exampleNumber>
- </mobile>
- <!-- No tollFree or premiumRate information can be found. -->
- </territory>
-
- <!-- Mayotte -->
- <!-- Some information at http://en.wikipedia.org/wiki/Telephone_numbers_in_France - most from
- collection of internet data. http://www.comores-online.com/mwezinet/internet/262.htm
- verifies the fixed-line prefixes, but the mobile prefixes listed here seem out of date.
- -->
- <territory id="YT" countryCode="262" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"
- leadingDigits="269|63">
- <!-- Formatting as per La Réunion. -->
- <generalDesc>
- <nationalNumberPattern>[268]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>2696[0-4]\d{4}</nationalNumberPattern>
- <exampleNumber>269601234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>639\d{6}</nationalNumberPattern>
- <exampleNumber>639123456</exampleNumber>
- </mobile>
- <!-- Same as in France. -->
- <tollFree>
- <nationalNumberPattern>80\d{7}</nationalNumberPattern>
- <exampleNumber>801234567</exampleNumber>
- </tollFree>
- </territory>
-
- <!-- South Africa -->
- <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000C10001PDFE.pdf -->
- <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_South_Africa -->
- <territory id="ZA" countryCode="27" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(860)(\d{3})(\d{3})">
- <leadingDigits>860</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="([1-578]\d)(\d{3})(\d{4})">
- <leadingDigits>
- [1-57]|
- 8(?:
- [0-57-9]|
- 6[1-9]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>
- (?:
- 1[0-8]|
- 2[1-478]|
- 3[1-69]|
- 4\d|
- 5[1346-8]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
- <exampleNumber>101234567</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>
- (?:
- 7[1-4689]|
- 8[1-5789]
- )\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>711234567</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>801234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>86[1-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>861234567</exampleNumber>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>860\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>860123456</exampleNumber>
- </sharedCost>
- <voip>
- <nationalNumberPattern>87\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>871234567</exampleNumber>
- </voip>
- </territory>
-
- <!-- Zambia -->
- <!-- http://www.itu.int/oth/T02020000E8/en -->
- <territory id="ZM" countryCode="260" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([29]\d)(\d{7})">
- <leadingDigits>[29]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(800)(\d{3})(\d{3})">
- <leadingDigits>8</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[289]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>21[1-8]\d{6}</nationalNumberPattern>
- <exampleNumber>211234567</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Adding extra prefixes 6[457-9] and 7[4-6] since SMS messages have been successfully
- delivered to these numbers, and numbers like this can be found on the Internet. -->
- <nationalNumberPattern>
- 9(?:
- 55|
- 6[4-9]|
- 7[4-9]
- )\d{6}
- </nationalNumberPattern>
- <exampleNumber>955123456</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- <exampleNumber>800123456</exampleNumber>
- </tollFree>
- </territory>
-
- <!-- Zimbabwe -->
- <!-- http://www.itu.int/oth/T02020000E9/en -->
- <territory id="ZW" countryCode="263" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <!-- One-digit area codes -->
- <numberFormat pattern="([49])(\d{3})(\d{2,5})">
- <leadingDigits>
- 4|
- 9[2-9]
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- Mobile numbers -->
- <numberFormat pattern="([179]\d)(\d{3})(\d{3,4})">
- <leadingDigits>
- [19]1|
- 7
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- Two-digit area codes -->
- <numberFormat pattern="([1-356]\d)(\d{3,5})">
- <leadingDigits>
- 1[3-9]|
- 2(?:
- [1-469]|
- 0[0-35-9]|
- [45][0-79]
- )|
- 3(?:
- 0[0-79]|
- 1[0-689]|
- [24-69]|
- 3[0-69]
- )|
- 5(?:
- [02-46-9]|
- [15][0-69]
- )|
- 6(?:
- [0145]|
- [29][0-79]|
- 3[0-689]|
- [68][0-69]
- )
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([1-356]\d)(\d{3})(\d{3})">
- <leadingDigits>
- 1[3-9]|
- 2(?:
- [1-469]|
- 0[0-35-9]|
- [45][0-79]
- )|
- 3(?:
- 0[0-79]|
- 1[0-689]|
- [24-69]|
- 3[0-69]
- )|
- 5(?:
- [02-46-9]|
- [15][0-69]
- )|
- 6(?:
- [0145]|
- [29][0-79]|
- 3[0-689]|
- [68][0-69]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- Three-digit area codes -->
- <numberFormat pattern="([2356]\d{2})(\d{3,5})">
- <leadingDigits>
- 2(?:
- [278]|
- 0[45]|
- 48
- )|
- 3(?:
- 08|
- 17|
- 3[78]|
- [78]
- )|
- 5[15][78]|
- 6(?:
- [29]8|
- 37|
- [68][78]
- )
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([2356]\d{2})(\d{3})(\d{3})">
- <leadingDigits>
- 2(?:
- [278]|
- 0[45]|
- 48
- )|
- 3(?:
- 08|
- 17|
- 3[78]|
- [78]
- )|
- 5[15][78]|
- 6(?:
- [29]8|
- 37|
- [68][78]
- )
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- Four-digit area codes -->
- <numberFormat pattern="([25]\d{3})(\d{3,5})">
- <leadingDigits>
- (?:
- 25|
- 54
- )8
- </leadingDigits>
- <leadingDigits>
- 258[23]|
- 5483
- </leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([25]\d{3})(\d{3})(\d{3})">
- <leadingDigits>
- (?:
- 25|
- 54
- )8
- </leadingDigits>
- <leadingDigits>
- 258[23]|
- 5483
- </leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- VOIP numbers -->
- <numberFormat pattern="(8\d{3})(\d{6})">
- <leadingDigits>8</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <!-- A complicated nationalNumberPattern is necessary here, since the numbers are extremely
- variable in length and the possible prefixes clash with the country code. -->
- <nationalNumberPattern>
- 2(?:
- [012457-9]\d{3,8}|
- 6\d{3,6}
- )|
- [13-79]\d{4,8}|
- 86\d{8}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{3,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- Numbering is grouped by subscriber-number length. -->
- <nationalNumberPattern>
- (?:
- 1[3-9]|
- 2(?:
- 0[45]|
- [16]|
- 2[28]|
- [49]8?|
- 58[23]|
- 7[246]|
- 8[1346-9]
- )|
- 3(?:
- 08?|
- 17?|
- 3[78]|
- [2456]|
- 7[1569]|
- 8[379]
- )|
- 5(?:
- [07-9]|
- 1[78]|
- 483|
- 5(?:
- 7?|
- 8
- )
- )|
- 6(?:
- 0|
- 28|
- 37?|
- [45][68][78]|
- 98?
- )|
- 848
- )\d{3,6}|
- (?:
- 2(?:
- 27|
- 5|
- 7[135789]|
- 8[25]
- )|
- 3[39]|
- 5[1-46]|
- 6[126-8]
- )\d{4,6}|
- 2(?:
- 0|
- 70
- )\d{5,6}|
- (?:
- 4\d|
- 9[2-8]
- )\d{4,7}
- </nationalNumberPattern>
- <exampleNumber>1312345</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[137]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>711234567</exampleNumber>
- </mobile>
- <!-- No tollFree or premiumRate information can be found. -->
- <voip>
- <nationalNumberPattern>
- 86(?:
- 1[12]|
- 22|
- 30|
- 44|
- 8[367]|
- 99
- )\d{6}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>8686123456</exampleNumber>
- </voip>
- </territory>
- </territories>
-</phoneNumberMetadata>
diff --git a/third_party/libphonenumber/resources/PhoneNumberMetaDataForTesting.xml b/third_party/libphonenumber/resources/PhoneNumberMetaDataForTesting.xml
deleted file mode 100644
index 661bdd2..0000000
--- a/third_party/libphonenumber/resources/PhoneNumberMetaDataForTesting.xml
+++ /dev/null
@@ -1,764 +0,0 @@
-<!-- Copyright (C) 2009 Google Inc.
-
- 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.
-
- @author: Shaopeng Jia
-
- MetaData on Phone Number Plan and formatting rules. This file is used
- solely for the purpose of unittesting, so data in this file is not
- necessarily consistent with that of
- ../src/PhoneNumberMetaData.xml
--->
-
-<phoneNumberMetadata>
- <territories>
- <!-- Andorra -->
- <territory id="AD" countryCode="376" internationalPrefix="00">
- </territory>
-
- <!-- Angola -->
- <!-- This country has been coopted to test the case of a national prefix
- with a non-numeric symbol in it. -->
- <territory id="AO" countryCode="244" internationalPrefix="00" nationalPrefix="0~0">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{3})(\d{3})">
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[29]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>2\d(?:[26-9]\d|\d[26-9])\d{5}</nationalNumberPattern>
- <exampleNumber>222123456</exampleNumber>
- </fixedLine>
- <mobile>
- <!-- Expanded the 92 prefix possibilities to matchnumbers found online. -->
- <nationalNumberPattern>9[1-3]\d{7}</nationalNumberPattern>
- <exampleNumber>923123456</exampleNumber>
- </mobile>
- </territory>
-
- <!-- Argentina -->
- <territory id="AR" countryCode="54" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"
- nationalPrefixForParsing="0(?:(11|343|3715)15)?"
- nationalPrefixTransformRule="9$1">
- <!-- Note in nationalPrefixForParsing, the areacode (such as 11, 343, etc.), when present in
- front of carrier selection code 15, is captured to replace $1 in
- nationalPrefixTransformRule -->
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{4})(\d{4})">
- <leadingDigits>11</leadingDigits>
- <format>$1 $2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{4})(\d{2})(\d{4})">
- <leadingDigits>1[02-9]|[23]</leadingDigits>
- <format>$1 $2-$3</format>
- </numberFormat>
- <numberFormat pattern="9(11)(\d{4})(\d{4})">
- <leadingDigits>911</leadingDigits>
- <format>$1 15 $2-$3</format>
- </numberFormat>
- <numberFormat pattern="9(\d{4})(\d{2})(\d{4})"
- carrierCodeFormattingRule="$NP$FG $CC">
- <leadingDigits>9(?:1[02-9]|[23])</leadingDigits>
- <format>$1 $2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>[68]</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d{2})(\d{4})(\d{4})">
- <leadingDigits>11</leadingDigits>
- <format>$1 $2-$3</format>
- </intlNumberFormat>
- <intlNumberFormat pattern="(\d{4})(\d{2})(\d{4})">
- <leadingDigits>1[02-9]|[23]</leadingDigits>
- <format>$1 $2-$3</format>
- </intlNumberFormat>
- <intlNumberFormat pattern="(9)(11)(\d{4})(\d{4})">
- <leadingDigits>911</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </intlNumberFormat>
- <intlNumberFormat pattern="(9)(\d{4})(\d{2})(\d{4})">
- <leadingDigits>9(?:1[02-9]|[23])</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </intlNumberFormat>
- <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>[68]</leadingDigits>
- <format>$1-$2-$3</format>
- </intlNumberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-3689]\d{9,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[1-3]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>9\d{10}|[1-3]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{10,11}</possibleNumberPattern>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>6(0\d|10)\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </premiumRate>
- </territory>
-
- <!-- Australia -->
- <territory id="AU" countryCode="61" internationalPrefix="001[12]"
- nationalPrefix="0" preferredInternationalPrefix="0011"
- nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat nationalPrefixFormattingRule="$FG"
- pattern="(\d{4})(\d{3})(\d{3})" >
- <leadingDigits>1</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{1})(\d{4})(\d{4})">
- <leadingDigits>[2-478]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc >
- <nationalNumberPattern>[1-578]\d{4,14}</nationalNumberPattern>
- <possibleNumberPattern>\d{5,15}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[2378]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>4\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </mobile>
- <tollFree>
- <nationalNumberPattern>1800\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>190[0126]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </premiumRate>
- </territory>
-
- <!-- Bahamas -->
- <territory id="BS" countryCode="1" internationalPrefix="011"
- nationalPrefix="1">
- <generalDesc>
- <nationalNumberPattern>(242|8(00|66|77|88)|900)\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[3-57]|9[2-5])|4(?:2[237]|51|64|77)|502|636|702)\d{4}</nationalNumberPattern>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>242(357|359|457|557)\d{4}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </mobile>
- <tollFree>
- <nationalNumberPattern>8(00|66|77|88)\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </premiumRate>
- </territory>
-
- <!-- Germany -->
- <territory id="DE" countryCode="49" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{3,8})">
- <leadingDigits>2|3[3-9]|906|[4-9][1-9]1</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{4,9})">
- <leadingDigits>[34]0|[68]9</leadingDigits>
- <format>$1/$2</format>
- </numberFormat>
- <!-- Extra fictional pattern for shorter numbers with the same prefixes as the following
- pattern, to illustrate the problem the AYTF has with real patterns that share this
- property. -->
- <numberFormat pattern="([4-9]\d)(\d{2})">
- <leadingDigits>[4-9]</leadingDigits>
- <leadingDigits>[4-6]|[7-9](?:\d[1-9]|[1-9]\d)</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="([4-9]\d{3})(\d{2,7})">
- <leadingDigits>[4-9]</leadingDigits>
- <leadingDigits>[4-6]|[7-9](?:\d[1-9]|[1-9]\d)</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{1})(\d{6})">
- <leadingDigits>800</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3,4})(\d{4})">
- <leadingDigits>900</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>\d{4,14}</nationalNumberPattern>
- <possibleNumberPattern>\d{2,14}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>(?:[24-6]\d{2}|3[03-9]\d|[789](?:[1-9]\d|0[2-9]))\d{3,8}</nationalNumberPattern>
- <exampleNumber>30123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>1(5\d{9}|7\d{8}|6[02]\d{8}|63\d{7})</nationalNumberPattern>
- <possibleNumberPattern>\d{10,11}</possibleNumberPattern>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900([135]\d{6}|9\d{7})</nationalNumberPattern>
- <possibleNumberPattern>\d{10,11}</possibleNumberPattern>
- </premiumRate>
- </territory>
-
- <!-- United Kingdom -->
- <territory id="GB" countryCode="44" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{4})(\d{4})">
- <leadingDigits>[1-59]|[78]0</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{3})(\d{3})(\d{3})">
- <leadingDigits>6</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- <numberFormat pattern="(\d{4})(\d{3})(\d{3})">
- <leadingDigits>7[1-57-9]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>8[47]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>\d{10}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[1-6]\d{9}</nationalNumberPattern>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>7[1-57-9]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>9[018]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </premiumRate>
- <sharedCost>
- <nationalNumberPattern>8(?:4[3-5]|7[0-2])\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </sharedCost>
- <voip>
- <nationalNumberPattern>56\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </voip>
- <personalNumber>
- <nationalNumberPattern>70\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </personalNumber>
- </territory>
-
- <!-- Italy -->
- <!-- http://en.wikipedia.org/wiki/%2B39 -->
- <territory id="IT" countryCode="39" internationalPrefix="00" leadingZeroPossible="true">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{4})(\d{4})">
- <leadingDigits>0[26]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{4})(\d{3,4})">
- <leadingDigits>0[13-57-9]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{3,4})">
- <leadingDigits>3</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3,6})">
- <leadingDigits>8</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[0389]\d{5,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{6,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>0\d{9,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{10,11}</possibleNumberPattern>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>3\d{8,9}</nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80(?:0\d{6}|3\d{3})</nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>89(?:2\d{3}|9\d{6})</nationalNumberPattern>
- <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
- </premiumRate>
- </territory>
-
- <!-- Japan -->
- <!-- The metadata here is added to unit test AsYouTypeFormatter for JP, which requires switching
- patterns as digits beyond the third one are entered. As a result, only a few fake
- formatting rules are added. -->
- <territory id="JP" countryCode="81" internationalPrefix="010"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{4})(\d{4})">
- <leadingDigits>[57-9]0</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{4})">
- <leadingDigits>222|333</leadingDigits>
- <leadingDigits>(?:222|333)1</leadingDigits>
- <leadingDigits>(?:222|333)11</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{4})(\d)(\d{4})">
- <leadingDigits>222|333</leadingDigits>
- <leadingDigits>2221|3332</leadingDigits>
- <leadingDigits>22212|3332</leadingDigits>
- <leadingDigits>222120|3332</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{2})(\d{4})">
- <leadingDigits>[23]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <!-- The following numberFormat is added to test that the format containing the star sign is
- not used by the AYTF. -->
- <numberFormat pattern="(\d{4})">
- <leadingDigits>[23]</leadingDigits>
- <format>*$1</format>
- </numberFormat>
- </availableFormats>
- </territory>
-
- <!-- Korea (Rep. of) -->
- <!-- http://www.itu.int/oth/T0202000072/en -->
- <!-- http://en.wikipedia.org/wiki/%2B82 -->
- <!-- http://www.kcc.go.kr/user.do?mode=view&page=P02030300&dc=K02030300&boardId=1074&boardSeq=2349 -->
- <!-- http://www.kcc.go.kr/user.do?mode=view&page=P02030300&dc=K02030300&boardId=1074&boardSeq=2240 -->
- <!-- http://www.telecentro.co.kr/sub/index.php?job=detail&ebcf_id=faq&page=1&mid=0503&eb_seq=36 -->
- <!-- Exceptions :
- internationalPrefix
- 0031, 0033, 0071, 0073 - Special services of KT and DACOM, ignorable
- nationalPrefix
- 1[4-6]XX-YYYY - Country-wide common number services, display as it is without hyphens -->
- <territory id="KR" countryCode="82" internationalPrefix="00(?:[124-68]|[37]\d{2})"
- nationalPrefix="0" nationalPrefixForParsing="0(8[1-46-8]|85\d{2})?"
- nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{4})(\d{4})">
- <leadingDigits>1(?:0|1[19]|[69]9|5[458])|[57]0</leadingDigits>
- <leadingDigits>1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})(\d{4})">
- <leadingDigits>1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-9][1-9][2-9]</leadingDigits>
- <leadingDigits>1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-9][1-9][2-9]</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d)(\d{4})">
- <leadingDigits>131</leadingDigits>
- <leadingDigits>1312</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{2})(\d{4})">
- <leadingDigits>131</leadingDigits>
- <leadingDigits>131[13-9]</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>13[2-9]</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{2})(\d{3})(\d{4})">
- <leadingDigits>30</leadingDigits>
- <format>$1-$2-$3-$4</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{4})(\d{4})">
- <leadingDigits>2(?:[26]|3[0-467])</leadingDigits>
- <leadingDigits>2(?:[26]|3(?:01|1[45]|2[17-9]|39|4|6[67]|7[078]))</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{3})(\d{4})">
- <leadingDigits>2(?:3[0-35-9]|[457-9])</leadingDigits>
- <leadingDigits>2(?:3(?:0[02-9]|1[0-36-9]|2[02-6]|3[0-8]|6[0-589]|7[1-69]|[589])|[457-9])</leadingDigits>
- <format>$1-$2-$3</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{3})">
- <leadingDigits>21[0-46-9]</leadingDigits>
- <leadingDigits>21(?:[0-247-9]|3[124]|6[1269])</leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{4})">
- <leadingDigits>21[36]</leadingDigits>
- <leadingDigits>21(?:3[035-9]|6[03-578])</leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{3})">
- <leadingDigits>[3-9][1-9]1</leadingDigits>
- <leadingDigits>[3-9][1-9]1(?:[0-46-9])</leadingDigits>
- <leadingDigits>[3-9][1-9]1(?:[0-247-9]|3[124]|6[1269])</leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{4})">
- <leadingDigits>[3-9][1-9]1</leadingDigits>
- <leadingDigits>[3-9][1-9]1[36]</leadingDigits>
- <leadingDigits>[3-9][1-9]1(?:3[035-9]|6[03-578])</leadingDigits>
- <format>$1-$2</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-79]\d{3,9}|8\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{4,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>(?:2|[34][1-3]|5[1-5]|6[1-4])(?:1\d{2,3}|[2-9]\d{6,7})</nationalNumberPattern>
- <possibleNumberPattern>\d{4,10}</possibleNumberPattern>
- <exampleNumber>22123456</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>1[0-25-9]\d{7,8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- <exampleNumber>1023456789</exampleNumber>
- </mobile>
- <tollFree>
- <nationalNumberPattern>80\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>801234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>60[2-9]\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>602345678</exampleNumber>
- </premiumRate>
- <personalNumber>
- <nationalNumberPattern>50\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>5012345678</exampleNumber>
- </personalNumber>
- <voip>
- <nationalNumberPattern>70\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- <exampleNumber>7012345678</exampleNumber>
- </voip>
- </territory>
-
- <!-- Mexico -->
- <territory id="MX" countryCode="52" internationalPrefix="00"
- nationalPrefix="01" nationalPrefixForParsing="01|04[45](\d{10})"
- nationalPrefixTransformRule="1$1">
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>[89]00</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{2})(\d{4})(\d{4})">
- <leadingDigits>33|55|81</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>[2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="1(\d{2})(\d{4})(\d{4})">
- <leadingDigits>1(?:33|55|81)</leadingDigits>
- <format>045 $1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="1(\d{3})(\d{3})(\d{4})">
- <leadingDigits>1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9])</leadingDigits>
- <format>045 $1 $2 $3</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>[89]00</leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <intlNumberFormat pattern="(\d{2})(\d{4})(\d{4})">
- <leadingDigits>33|55|81</leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>[2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9]</leadingDigits>
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- <intlNumberFormat pattern="(1)(\d{2})(\d{4})(\d{4})">
- <leadingDigits>1(?:33|55|81)</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </intlNumberFormat>
- <intlNumberFormat pattern="(1)(\d{3})(\d{3})(\d{4})">
- <leadingDigits>1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9])</leadingDigits>
- <format>$1 $2 $3 $4</format>
- </intlNumberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{9,10}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,11}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[2-9]\d{9}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>1\d{10}</nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </premiumRate>
- </territory>
-
- <!-- New Zealand -->
- <territory id="NZ" countryCode="64" internationalPrefix="00"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d)(\d{3})(\d{4})">
- <leadingDigits>24|[34679]</leadingDigits>
- <format>$1-$2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d)(\d{3})(\d{3,5})">
- <leadingDigits>2[179]</leadingDigits>
- <format>$1-$2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{3,4})">
- <leadingDigits>[89]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>
- [289]\d{7,9}|
- [3-7]\d{7}
- </nationalNumberPattern>
- <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>24099\d{3}|(?:3[2-79]|[479][2-689]|6[235-9])\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>2(?:[027]\d{7}|9\d{6,7}|1(?:0\d{5,7}|[12]\d{5,6}|[3-9]\d{5})|4[1-9]\d{6}|8\d{7,8})</nationalNumberPattern>
- <possibleNumberPattern>\d{8,10}</possibleNumberPattern>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{6,7}</nationalNumberPattern>
- <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
- </premiumRate>
- </territory>
-
- <!-- Poland -->
- <!-- http://en.wikipedia.org/wiki/%2B48 -->
- <territory id="PL" countryCode="48" internationalPrefix="0~0"
- nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="(\d{2})(\d{3})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[1-9]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <mobile>
- <nationalNumberPattern>(?:5[01]|6[069]|7[289]|88)\d{7}</nationalNumberPattern>
- </mobile>
- <tollFree>
- <nationalNumberPattern>800\d{6}</nationalNumberPattern>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>70\d{7}</nationalNumberPattern>
- </premiumRate>
- </territory>
-
- <!-- Réunion (French Departments and Territories in the Indian Ocean) -->
- <!-- Note this shares the same country code as La Mayotte and French
- Southern Territories, and the formatting patterns here are used by all of
- them. This is present to test leadingDigits. -->
- <territory id="RE" countryCode="262" leadingDigits="262|6(?:9[23]|47)|8"
- internationalPrefix="00" nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <availableFormats>
- <numberFormat pattern="([268]\d{2})(\d{2})(\d{2})(\d{2})">
- <format>$1 $2 $3 $4</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[268]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <!-- 0876 numbers are mentioned in the plan, but none in use can be
- found. -->
- <nationalNumberPattern>262\d{6}</nationalNumberPattern>
- <exampleNumber>262161234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>6(?:9[23]|47)\d{6}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- <exampleNumber>692123456</exampleNumber>
- </mobile>
- <!-- 08* Numbers in Réunion are the same as those valid in France. -->
- <tollFree>
- <nationalNumberPattern>80\d{7}</nationalNumberPattern>
- <exampleNumber>801234567</exampleNumber>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>8(?:1[01]|2[0156]|84|9[0-37-9])\d{6}</nationalNumberPattern>
- <exampleNumber>810123456</exampleNumber>
- </premiumRate>
- </territory>
-
- <!-- Singapore -->
- <!-- http://www.ida.gov.sg/policies%20and%20regulation/20060508120124.aspx -->
- <territory id="SG" countryCode="65" internationalPrefix="0[0-3][0-9]">
- <availableFormats>
- <numberFormat pattern="(\d{4})(\d{4})">
- <leadingDigits>[369]|8[1-9]</leadingDigits>
- <format>$1 $2</format>
- </numberFormat>
- <numberFormat pattern="(\d{4})(\d{3})(\d{4})">
- <leadingDigits>1[89]</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <leadingDigits>800</leadingDigits>
- <format>$1 $2 $3</format>
- </numberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[13689]\d{7,10}</nationalNumberPattern>
- <!-- This specific pattern with the | is used to unit-test IsPossibleNumberWithReason. -->
- <possibleNumberPattern>
- \d{8}|
- \d{10,11}
- </possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>[36]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>[89]\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
- </mobile>
- <tollFree>
- <nationalNumberPattern>1?800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10,11}</possibleNumberPattern>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>1900\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{11}</possibleNumberPattern>
- </premiumRate>
- </territory>
-
- <!-- United States -->
- <!-- http://www.nanpa.com/reports/reports_npa.html -->
- <!-- For testing purposes, numbers starting with 24 are not considered US
- numbers.-->
- <territory id="US" countryCode="1" internationalPrefix="011"
- preferredExtnPrefix=" extn. " nationalPrefix="1"
- mainCountryForCode="true" >
- <availableFormats>
- <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <format>$1 $2 $3</format>
- </numberFormat>
- <numberFormat pattern="(\d{3})(\d{4})">
- <format>$1 $2</format>
- </numberFormat>
- <intlNumberFormat pattern="(\d{3})(\d{3})(\d{4})">
- <format>$1 $2 $3</format>
- </intlNumberFormat>
- </availableFormats>
- <generalDesc>
- <nationalNumberPattern>[13-9]\d{9}|2[0-35-9]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{7}(?:\d{3})?</possibleNumberPattern>
- <exampleNumber>1234567890</exampleNumber>
- </generalDesc>
- <noInternationalDialling>
- <!-- This range is added for testing purposes only. -->
- <nationalNumberPattern>800\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </noInternationalDialling>
- <tollFree>
- <nationalNumberPattern>8(?:00|66|77|88)\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </tollFree>
- <premiumRate>
- <nationalNumberPattern>900\d{7}</nationalNumberPattern>
- <possibleNumberPattern>\d{10}</possibleNumberPattern>
- </premiumRate>
- </territory>
-
- <!-- Mayotte -->
- <territory id="YT" countryCode="262" leadingDigits="269|639"
- internationalPrefix="00" nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
- <!-- Formatting as per La Réunion. -->
- <generalDesc>
- <nationalNumberPattern>[268]\d{8}</nationalNumberPattern>
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
- </generalDesc>
- <fixedLine>
- <nationalNumberPattern>2696[0-4]\d{4}</nationalNumberPattern>
- <exampleNumber>269601234</exampleNumber>
- </fixedLine>
- <mobile>
- <nationalNumberPattern>639\d{6}</nationalNumberPattern>
- <exampleNumber>639123456</exampleNumber>
- </mobile>
- <!-- Same as in France. -->
- <tollFree>
- <nationalNumberPattern>80\d{7}</nationalNumberPattern>
- <exampleNumber>801234567</exampleNumber>
- </tollFree>
- </territory>
- </territories>
-</phoneNumberMetadata>
diff --git a/third_party/libphonenumber/resources/phonemetadata.proto b/third_party/libphonenumber/resources/phonemetadata.proto
deleted file mode 100644
index fd9902a..0000000
--- a/third_party/libphonenumber/resources/phonemetadata.proto
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Copyright (C) 2009 Google Inc.
- *
- * 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.
- */
-
-// Definition of protocol buffer for holding metadata for international
-// telephone numbers.
-// @author Shaopeng Jia
-
-syntax = "proto2";
-
-option java_package = "com.google.i18n.phonenumbers";
-option optimize_for = LITE_RUNTIME;
-
-package i18n.phonenumbers;
-
-message NumberFormat {
- // pattern is a regex that is used to match the national (significant)
- // number. For example, the pattern "(20)(\d{4})(\d{4})" will match number
- // "2070313000", which is the national (significant) number for Google London.
- // Note the presence of the parentheses, which are capturing groups what
- // specifies the grouping of numbers.
- required string pattern = 1;
-
- // format specifies how the national (significant) number matched by
- // pattern should be formatted.
- // Using the same example as above, format could contain "$1 $2 $3",
- // meaning that the number should be formatted as "20 7031 3000".
- // Each $x are replaced by the numbers captured by group x in the
- // regex specified by pattern.
- required string format = 2;
-
- // This field is a regex that is used to match a certain number of digits
- // at the beginning of the national (significant) number. When the match is
- // successful, the accompanying pattern and format should be used to format
- // this number. For example, if leading_digits="[1-3]|44", then all the
- // national numbers starting with 1, 2, 3 or 44 should be formatted using the
- // accompanying pattern and format.
- //
- // The first leadingDigitsPattern matches up to the first three digits of the
- // national (significant) number; the next one matches the first four digits,
- // then the first five and so on, until the leadingDigitsPattern can uniquely
- // identify one pattern and format to be used to format the number.
- //
- // In the case when only one formatting pattern exists, no
- // leading_digits_pattern is needed.
- repeated string leading_digits_pattern = 3;
-
- // This field specifies how the national prefix ($NP) together with the first
- // group ($FG) in the national significant number should be formatted in
- // the NATIONAL format when a national prefix exists for a certain country.
- // For example, when this field contains "($NP$FG)", a number from Beijing,
- // China (whose $NP = 0), which would by default be formatted without
- // national prefix as 10 1234 5678 in NATIONAL format, will instead be
- // formatted as (010) 1234 5678; to format it as (0)10 1234 5678, the field
- // would contain "($NP)$FG". Note $FG should always be present in this field,
- // but $NP can be omitted. For example, having "$FG" could indicate the
- // number should be formatted in NATIONAL format without the national prefix.
- // This is commonly used to override the rule from generalDesc.
- //
- // When this field is missing, a number will be formatted without national
- // prefix in NATIONAL format. This field does not affect how a number
- // is formatted in other formats, such as INTERNATIONAL.
- optional string national_prefix_formatting_rule = 4;
-
- // This field specifies how any carrier code ($CC) together with the first
- // group ($FG) in the national significant number should be formatted
- // when formatWithCarrierCode is called, if carrier codes are used for a
- // certain country.
- optional string domestic_carrier_code_formatting_rule = 5;
-}
-
-message PhoneNumberDesc {
- // The national_number_pattern is the pattern that a valid national
- // significant number would match. This specifies information such as its
- // total length and leading digits.
- optional string national_number_pattern = 2;
-
- // The possible_number_pattern represents what a potentially valid phone
- // number for this region may be written as. This is a superset of the
- // national_number_pattern above and includes numbers that have the area code
- // omitted. Typically the only restrictions here are in the number of digits.
- // This could be used to highlight tokens in a text that may be a phone
- // number, or to quickly prune numbers that could not possibly be a phone
- // number for this locale.
- optional string possible_number_pattern = 3;
-
- // An example national significant number for the specific type. It should
- // not contain any formatting information.
- optional string example_number = 6;
-}
-
-message PhoneMetadata {
- // The general_desc contains information which is a superset of descriptions
- // for all types of phone numbers. If any element is missing in the
- // description of a specific type in the XML file, the element will inherit
- // from its counterpart in the general_desc. Every locale is assumed to have
- // fixed line and mobile numbers - if these types are missing in the XML
- // file, they will inherit all fields from the general_desc. For all other
- // types, if the whole type is missing in the xml file, it will be given a
- // national_number_pattern of "NA" and a possible_number_pattern of "NA".
- required PhoneNumberDesc general_desc = 1;
- required PhoneNumberDesc fixed_line = 2;
- required PhoneNumberDesc mobile = 3;
- required PhoneNumberDesc toll_free = 4;
- required PhoneNumberDesc premium_rate = 5;
- required PhoneNumberDesc shared_cost = 6;
- required PhoneNumberDesc personal_number = 7;
- required PhoneNumberDesc voip = 8;
- required PhoneNumberDesc pager = 21;
- required PhoneNumberDesc uan = 25;
- // The rules here distinguish the numbers that are only able to be dialled
- // nationally.
- required PhoneNumberDesc no_international_dialling = 24;
-
- // The ISO 3166-1 alpha-2 representation of a country/region
- required string id = 9;
-
- // The country calling code that one would dial from overseas when trying to
- // dial a phone number in this country. For example, this would be "64" for
- // New Zealand.
- required int32 country_code = 10;
-
- // The international_prefix of country A is the number that needs to be
- // dialled from country A to another country (country B). This is followed
- // by the country code for country B. Note that some countries may have more
- // than one international prefix, and for those cases, a regular expression
- // matching the international prefixes will be stored in this field.
- required string international_prefix = 11;
-
- // If more than one international prefix is present, a preferred prefix can
- // be specified here for out-of-country formatting purposes. If this field is
- // not present, and multiple international prefixes are present, then "+"
- // will be used instead.
- optional string preferred_international_prefix = 17;
-
- // The national prefix of country A is the number that needs to be dialled
- // before the national significant number when dialling internally. This
- // would not be dialled when dialling internationally. For example, in New
- // Zealand, the number that would be locally dialled as 09 345 3456 would be
- // dialled from overseas as +64 9 345 3456. In this case, 0 is the national
- // prefix.
- optional string national_prefix = 12;
-
- // The preferred prefix when specifying an extension in this country. This is
- // used for formatting only, and if this is not specified, a suitable default
- // should be used instead. For example, if you wanted extensions to be
- // formatted in the following way:
- // 1 (365) 345 445 ext. 2345
- // " ext. " should be the preferred extension prefix.
- optional string preferred_extn_prefix = 13;
-
- // This field is used for cases where the national prefix of a country
- // contains a carrier selection code, and is written in the form of a
- // regular expression. For example, to dial the number 2222-2222 in
- // Fortaleza, Brazil (area code 85) using the long distance carrier Oi
- // (selection code 31), one would dial 0 31 85 2222 2222. Assuming the
- // only other possible carrier selection code is 32, the field will
- // contain "03[12]".
- //
- // When it is missing from the XML file, this field inherits the value of
- // national_prefix, if that is present.
- optional string national_prefix_for_parsing = 15;
-
- // This field is only populated and used under very rare situations.
- // For example, mobile numbers in Argentina are written in two completely
- // different ways when dialed in-country and out-of-country
- // (e.g. 0343 15 555 1212 is exactly the same number as +54 9 343 555 1212).
- // This field is used together with national_prefix_for_parsing to transform
- // the number into a particular representation for storing in the phonenumber
- // proto buffer in those rare cases.
- optional string national_prefix_transform_rule = 16;
-
- // Specifies whether the mobile and fixed-line patterns are the same or not.
- // This is used to speed up determining phone number type in countries where
- // these two types of phone numbers can never be distinguished.
- optional bool same_mobile_and_fixed_line_pattern = 18 [default=false];
-
- // Note that the number format here is used for formatting only, not parsing.
- // Hence all the varied ways a user *may* write a number need not be recorded
- // - just the ideal way we would like to format it for them. When this element
- // is absent, the national significant number will be formatted as a whole
- // without any formatting applied.
- repeated NumberFormat number_format = 19;
-
- // This field is populated only when the national significant number is
- // formatted differently when it forms part of the INTERNATIONAL format
- // and NATIONAL format. A case in point is mobile numbers in Argentina:
- // The number, which would be written in INTERNATIONAL format as
- // +54 9 343 555 1212, will be written as 0343 15 555 1212 for NATIONAL
- // format. In this case, the prefix 9 is inserted when dialling from
- // overseas, but otherwise the prefix 0 and the carrier selection code
- // 15 (inserted after the area code of 343) is used.
- repeated NumberFormat intl_number_format = 20;
-
- // This field is set when this country is considered to be the main country
- // for a calling code. It may not be set by more than one country with the
- // same calling code, and it should not be set by countries with a unique
- // calling code. This can be used to indicate that "GB" is the main country
- // for the calling code "44" for example, rather than Jersey or the Isle of
- // Man.
- optional bool main_country_for_code = 22 [default=false];
-
- // This field is populated only for countries or regions that share a country
- // calling code. If a number matches this pattern, it could belong to this
- // region. This is not intended as a replacement for IsValidForRegion, and
- // does not mean the number must come from this region (for example, 800
- // numbers are valid for all NANPA countries.) This field should be a regular
- // expression of the expected prefix match.
- optional string leading_digits = 23;
-
- // The leading zero in a phone number is meaningful in some countries (e.g.
- // Italy). This means they cannot be dropped from the national number when
- // converting into international format. If leading zeros are possible for
- // valid international numbers for this region/country then set this to true.
- // This only needs to be set for the region that is the main_country_for_code
- // and all regions associated with that calling code will use the same
- // setting.
- optional bool leading_zero_possible = 26 [default=false];
-}
-
-message PhoneMetadataCollection {
- repeated PhoneMetadata metadata = 1;
-}
diff --git a/third_party/libphonenumber/resources/phonenumber.proto b/third_party/libphonenumber/resources/phonenumber.proto
deleted file mode 100644
index 8ea4288..0000000
--- a/third_party/libphonenumber/resources/phonenumber.proto
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2009 Google Inc.
- *
- * 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.
- */
-
-// Definition of protocol buffer for representing international telephone numbers.
-// @author Shaopeng Jia
-
-syntax = "proto2";
-
-option java_package = "com.google.i18n.phonenumbers";
-option optimize_for = LITE_RUNTIME;
-
-package i18n.phonenumbers;
-
-message PhoneNumber {
-// The country calling code for this number, as defined by the International Telecommunication Union
-// (ITU). Fox example, this would be 1 for NANPA countries, and 33 for France.
- required int32 country_code = 1;
-
-// National (significant) Number is defined in International Telecommunication Union Recommendation
-// E.164. It is a language/country-neutral representation of a phone number at a country level. For
-// countries which have the concept of Area Code, the National (significant) Number contains the
-// area code. It contains a maximum number of digits which equal to 15 - n, where n is the number of
-// digits of the country code. Take note that National (significant) Number does not contain
-// National(trunk) prefix. Obviously, as a uint64, it will never contain any formatting (hypens,
-// spaces, parentheses), nor any alphanumeric spellings.
- required uint64 national_number = 2;
-
-// Extension is not standardized in ITU recommendations, except for being defined as a series of
-// numbers with a maximum length of 40 digits. It is defined as a string here to accommodate for the
-// possible use of a leading zero in the extension (organizations have complete freedom to do so,
-// as there is no standard defined). However, only ASCII digits should be stored here.
- optional string extension = 3;
-
-// In some countries, the national (significant) number starts with a "0" without this being a
-// national prefix or trunk code of some kind. For example, the leading zero in the national
-// (significant) number of an Italian phone number indicates the number is a fixed-line number.
-// There have been plans to migrate fixed-line numbers to start with the digit two since December
-// 2000, but it has not happened yet. See http://en.wikipedia.org/wiki/%2B39 for more details.
-//
-// This field can be safely ignored (there is no need to set it) for most countries. Some limited
-// amount of countries behave like Italy - for these cases, if the leading zero of a number would be
-// retained even when dialling internationally, set this flag to true.
-//
-// Clients who use the parsing functionality of the i18n phone number libraries
-// will have this field set if necessary automatically.
- optional bool italian_leading_zero = 4;
-
-// The next few fields are non-essential fields for a phone number. They retain extra information
-// about the form the phone number was in when it was provided to us to parse. They can be safely
-// ignored by most clients.
-
-// This field is used to store the raw input string containing phone numbers before it was
-// canonicalized by the library. For example, it could be used to store alphanumerical numbers
-// such as "1-800-GOOG-411".
- optional string raw_input = 5;
-
-// The source from which the country_code is derived. This is not set in the general parsing method,
-// but in the method that parses and keeps raw_input. New fields could be added upon request.
- enum CountryCodeSource {
- // The country_code is derived based on a phone number with a leading "+", e.g. the French
- // number "+33 (0)1 42 68 53 00".
- FROM_NUMBER_WITH_PLUS_SIGN = 1;
-
- // The country_code is derived based on a phone number with a leading IDD, e.g. the French
- // number "011 33 (0)1 42 68 53 00", as it is dialled from US.
- FROM_NUMBER_WITH_IDD = 5;
-
- // The country_code is derived based on a phone number without a leading "+", e.g. the French
- // number "33 (0)1 42 68 53 00" when defaultCountry is supplied as France.
- FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;
-
- // The country_code is derived NOT based on the phone number itself, but from the defaultCountry
- // parameter provided in the parsing function by the clients. This happens mostly for numbers
- // written in the national format (without country code). For example, this would be set when
- // parsing the French number "(0)1 42 68 53 00", when defaultCountry is supplied as France.
- FROM_DEFAULT_COUNTRY = 20;
- }
-
-// The source from which the country_code is derived.
- optional CountryCodeSource country_code_source = 6;
-
-// The carrier selection code that is preferred when calling this phone number domestically. This
-// also includes codes that need to be dialed in some countries when calling from landlines to
-// mobiles or vice versa. For example, in Columbia, a "3" needs to be dialed before the phone number
-// itself when calling from a mobile phone to a domestic landline phone and vice versa.
-//
-// Note this is the "preferred" code, which means other codes may work as well.
- optional string preferred_domestic_carrier_code = 7;
-}
-
-// Examples
-//
-// Google MTV, +1 650-253-0000, (650) 253-0000
-// country_code: 1
-// national_number: 6502530000
-//
-// Google Paris, +33 (0)1 42 68 53 00, 01 42 68 53 00
-// country_code: 33
-// national_number: 142685300
-//
-// Google Beijing, +86-10-62503000, (010) 62503000
-// country_code: 86
-// national_number: 1062503000
-//
-// Google Italy, +39 02-36618 300, 02-36618 300
-// country_code: 39
-// national_number: 236618300
-// italian_leading_zero: true